C++ API
Init
功能: 初始化 FSA 对象
参数:
ip:目标执行器 IP;net_recv_mode:网络接收模式,可选 YIELD_WAIT (阻塞等待) 或 SPIN_WAIT (自旋等待)。
返回值: 状态码
Power
OpenRelay
功能: 开启电源控制板继电器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
CloseRelay
功能: 关闭电源控制板继电器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
Reboot
功能: 重启执行器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
Control
EnableControl
功能: 使能执行器位置/速度/力矩/PD 模式
参数:
ctrl_mode:控制模式枚举(位置/速度/力矩/PD);timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口内部实现分别执行了以下命令,以下任何一步失败都会导致该接口直接返回某个状态码:
-
获取当前位置/速度/电流/力矩反馈;
-
设置目标位置/速度/电流指令;
- 设置目标位置为当前位置,前馈速度为 0,前馈电流为 0(若使能位置或 PD 模式);
- 设置目标速度为 0,前馈电流为 0(若使能速度模式);
- 设置目标电流为 0(若使能力矩模式)。
-
使能。
DisableControl
功能: 失能执行器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
SetPositionNoAck
功能: 发送目标位置指令、前馈速度指令、前馈力矩指令,执行器不回复
参数:
tx_pos:目标位置;tx_vel_ff:前馈速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标位置和前馈速度从弧度转换为角度值、将前馈力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetPosition
功能: 发送目标位置指令、前馈速度指令、前馈力矩指令,执行器回复状态
参数:
tx_pos:目标位置;tx_vel_ff:前馈速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标位置和前馈速度从弧度转换为角度值、将前馈力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetVelocityNoAck
功能: 发送目标速度指令、前馈力矩指令,执行器不回复
参数:
tx_vel:目标速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标速度从弧度转换为角度值、将前馈力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetVelocity
功能: 发送目标速度指令、前馈力矩指令,执行器回复状态
参数:
tx_vel:目标速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标速度从弧度转换为角度值、将前馈力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetTorqueNoAck
功能: 发送目标力矩指令,执行器不回复
参数:
tx_tor:目标力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetTorque
功能: 发送目标力矩指令,执行器回复状态
参数:
tx_tor:目标力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标力矩转换为电流值下发给执行器,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetPDPositionVelocityNoAck
功能: 发送目标位置指令、目标速度指令、前馈力矩指令,执行器不回复
参数:
tx_pos:目标位置;tx_vel:目标速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标位置和目标速度从弧度转换为角度值、PD 模式无需将前馈力矩转换为电流值下发,FSA 默认视为前馈力矩,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
SetPDPositionVelocity
功能: 发送目标位置指令、目标速度指令、前馈力矩指令,执行器回复状态
参数:
tx_pos:目标位置;tx_vel:目标速度;tx_tor_ff:前馈力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将目标位置和目标速度从弧度转换为角度值、PD 模式无需将前馈力矩转换为电流值下发,FSA 默认视为前馈力矩,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
State
GetPVCTTe
功能: 获取执行器反馈的位置、速度、电流、负载转矩和电磁转矩
参数:
rx_pvctte:存放获取的位置、速度、电流、负载转矩和电磁转矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口会将反馈位置和反馈速度从角度转换为弧度值、将反馈电流转换为电磁转矩,使用前请检查执行器参数配置(电机型号和减速比)是否正确。
EnableSubscribe
功能: 使能订阅模式
参数:
tx_subs_config:订阅模式配置;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
GetSubsData
功能: 获取最新的订阅数据
参数:
subs_data:存放获取的订阅数据;
返回值: 状态码
注意: 该接口保证每次调用时均为最新一帧订阅数据,并丢弃 Socket 缓冲区中的缓存数据帧。
GetTempVbus
功能: 获取执行器温度和母线电压
参数:
rx_temp_vbus:存放获取的执行器温度和母线电压;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
注意: 该接口内部实现分别执行了以下命令:
- 获取执行器温度;
- 获取执行器母线电压。
GetErrCode
功能: 获取执行器错误
参数:
rx_error:存放获取的错误码数组, 共 8 个错误码;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
Config
SetPIDParams
功能: 设置临时立即生效(imm)PID 参数
参数:
tx_pos_kp:位置环 Kp;tx_vel_kp:速度环 Kp;tx_vel_ki:速度环 Ki;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
GetPIDParams
功能: 获取临时立即生效(imm)PID 参数
参数:
rx_pid_param:存放获取的临时立即生效(imm)PID 参数;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
SetPDParams
功能: 设置临时立即生效(imm)PD 参数
参数:
tx_pd_kp:PD 环 Kp;tx_pd_kd:PD 环 Kd;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
GetPDParams
功能: 获取临时立即生效(imm)PD 参数
参数:
rx_pd_param:存放获取的临时立即生效(imm)PD 参数;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 0 次。
返回值: 状态码
Advanced
待实现
状态码
| 状态码 | SUCCESS | SDK_VER_NOT_MATCH | CTRL_PARAM_ERR | INTERFACE_HANDLE_ERR | ARG_ERR | NET_ERR | TIMEOUT | NET_RXBUF_DATA_ERR |
|---|---|---|---|---|---|---|---|---|
| 数值 | 0 | -101 | -102 | -201 | -202 | -301 | -302 | -303 |
| 含义 | 操作成功 | SDK 版本不匹配 | 执行器获取配置参数错误 | 执行器对象未初始化 | 接口参数非法 | 网络错误 | 网络接收超时 | 网络接收缓冲区数据与发送指令不匹配 |
| 可能原因 | / | 执行器固件版本过低或 SDK 动态库与头文件版本不匹配 | 型号和版本号未获取成功 | 未执行 init 函数 | 传入接口的参数不符合要求 | 对应 IP 的 FSA 网络已断开 | 接收执行器返回数据等待时间超过指定超时时间 | 接收到系统 socket 输入缓冲区前几帧数据导致指令不匹配 |