C++ 接口
Init
功能: 初始化 FSA 对象
参数:
ip:目标执行器 IP;net_recv_mode:网络接收模式,可选 YIELD_WAIT (阻塞等待) 或 SPIN_WAIT (自旋等待),默认为阻塞等待;rtcko_path:默认是空字符串,建议忽略此项。
返回值: 返回详细执行状态ret_e(int)
Power
OpenRelay
功能: 开启机器人电源板继电器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
注意: 开关的是机器人的电源管理板的电源,执行器本身不带有此功能
CloseRelay
功能: 关闭机器人电源板继电器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
注意: 开关的是机器人的电源管理板的电源,执行器本身不带有此功能
Reboot
功能: 重启执行器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
Control
EnableControl
功能: 使能执行器位置/速度/力矩/PD 模式
参数:
ctrl_mode:控制模式枚举(位置/速度/力矩/PD);timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
注意: 该接口内部实现分别执行了以下命令,以下任何一步失败都会导致该接口直接返回某个状态码:
-
获取当前位置/速度/电流/力矩反馈;
-
设置目标位置/速度/电流指令;
- 设置目标位置为当前位置,前馈速度为 0,前馈电流为 0(若使能位置或 PD 模式);
- 设置目标速度为 0,前馈电流为 0(若使能速度模式);
- 设置目标电流为 0(若使能力矩模式)。
-
使能。
DisableControl
功能: 失能执行器
参数:
timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetPositionNoAck
功能: 发送位置目标指令、速度前馈指令、力矩前馈指令,执行器不回复任何数据帧
参数:
p_rad:目标位置;v_ff_radps:速度前馈;t_ff_Nm:力矩前馈。
返回值: 返回详细执行状态ret_e(int)
SetPosition
功能: 发送位置目标指令、速度前馈指令、力矩前馈指令,执行器回复数据帧
参数:
p_rad:目标位置;v_ff_radps:速度前馈;t_ff_Nm:力矩前馈;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetVelocityNoAck
功能: 发送速度目标指令、力矩前馈指令,执行器回复数据帧
参数:
v_radps:目标速度;t_ff_Nm:力矩前馈;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetVelocity
功能: 发送速度目标指令、力矩前馈指令,执行器回复数据帧
参数:
v_radps:目标速度;t_ff_Nm:力矩前馈;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetTorqueNoAck
功能: 发送力矩目标指令,执行器不回复任何数据帧
参数:
t_Nm:目标力矩。
返回值: 返回详细执行状态ret_e(int)
SetTorque
功能: 发送力矩目标指令,执行器回复数据帧
参数:
t_Nm:目标力矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetPDPositionVelocityNoAck
功能: 发送位置目标指令、速度目标指令、力矩前馈指令,执行器不回复任何数据帧
参数:
p_rad:目标位置;v_radps:目标速度;t_ff_Nm:力矩前馈。
返回值: 返回详细执行状态ret_e(int)
SetPDPositionVelocity
功能: 发送位置目标指令、速度目标指令、力矩前馈指令,执行器回复数据帧
参数:
p_rad:目标位置;v_radps:目标速度;t_ff_Nm:力矩前馈;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
State
GetPVCTTe
功能: 获取执行器反馈的位置、速度、电流、负载转矩和电磁转矩
参数:
rx_PVCTTe:存放获取的位置、速度、电流、负载转矩和电磁转矩;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
EnableSubscribe
功能: 配置订阅模式
参数:
subs_config:订阅模式配置;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
GetSubsData
功能: 获取最新的订阅数据
参数:
subs_data:存放获取的订阅数据。
返回值: 状态码
注意: 该接口保证每次调用时均为最新一帧订阅数据,并丢弃 Socket 缓冲区中的缓存数据帧。
GetTempVbus
功能: 获取执行器mos温度,绕组温度,电压
参数:
rx_temp_vbus:存放获取的mos温度,绕组温度,电压;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
GetErrCode
功能: 获取执行器当前错误码
参数:
rx_errcode:存放获取的错误码;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
ParseErrCode
功能: 解析执行器错误码
参数:
err_code:获取到的8个uint32_t错误码;parsed_err_code:解析后的错误码。
返回值: 返回详细执行状态ret_e(int)
GetTypeSubversion
功能: 获取执行器型号和子版本号
参数:
type_subversion:存放获取的型号和子版本号;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
Config
SetPIDParams
功能: 实时设置位置环速度环PID参数
参数:
p_kp:位置环比例增益;v_kp:速度环比例增益;v_ki:速度环积分增益;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
GetPIDParams
功能: 实时获取位置环速度环PID参数
参数:
rx_pid_param:存放获取的 PID 参数;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
SetPDParams
功能: 实时设置 PD 参数
参数:
pd_kp:PD比例增益;pd_kd:PD微分增益;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
GetPDParams
功能: 获取临时立即生效 (imm) PD 参数
参数:
rx_pd_param:存放获取的 PD 参数;timeout_ms:超时时间(ms),默认为 5ms;max_retry:最大重试次数,默认为 1 次。
返回值: 返回详细执行状态ret_e(int)
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 输入缓冲区前几帧数据导致指令不匹配 |