关节控制 API
本章按能力域介绍核心接口,并补充 Ti5SdkDemo_linux_arm64/README-zh.md 中常用 CAN 指令映射,便于联调抓包时快速对照。详细参数与枚举以 MotorCtrlApi.h 为准。
1. 日志初始化与输出开关(必填)
接口 |
功能 |
备注 |
|---|---|---|
|
初始化 SDK 日志系统 |
建议调用:日志输出依赖初始化。 |
|
设置 SDK 日志级别 |
用于运行期调整输出等级。 |
|
获取当前日志级别 |
返回当前 |
|
关闭 SDK 日志系统 |
建议调用且必须与 |
最小示例(对应 @include/api/MotorCtrlApi.h 中的日志接口):
Motor_LogInit(nullptr, /*async=*/1, MOTOR_LOG_INFO);
Motor_LogSetLevel(MOTOR_LOG_INFO);
// ... 调用 SDK 相关 API ...
Motor_LogShutdown();
如果没有启用日志,那么SDK将不会有任何的输出,建议启用日志,如果不需要输出使用OFF枚举关闭即可 补充说明:
logFile = nullptr表示仅控制台输出。async = 1为异步日志(更符合示例用法)。日志级别可用
MOTOR_LOG_INFO / MOTOR_LOG_DEBUG / ...。
2. 关节控制 API
本节按调用阶段梳理 MotorCtrlApi.h 的关节控制接口,主要分为两类:
控制器生命周期与连接:创建控制实例、选择连接方式、必要时查询总线节点信息,最后断开并释放资源。
参数设置与常用码流:设置通信参数、设备阈值、运行模式与各环(电流/速度/位置)相关参数,配合你选择的 motion/运行计划生效。
建议的调用顺序是:Motor_CreateController -> 连接(Motor_ConnectCan 或 Motor_ConnectSocketCan)-> 参数设置 -> 运行/查询 -> Motor_RemoveController(结束时务必调用)。
2.1 控制器生命周期与连接
接口 |
功能 |
备注 |
|---|---|---|
|
创建电机控制实例 |
调用其他接口前必须先创建 |
|
通过 CAN 分析仪连接 |
适用于外置 CAN 设备 |
|
通过 SocketCAN 连接 |
适用于 Linux |
|
断开并释放实例 |
结束时务必调用 |
|
获取总线节点信息 |
排查总线设备是否在线 |
2.2 参数设置接口(含常用 CAN 码流)
接口 |
参数类型(示例) |
功能 |
CAN 码流示例 |
|---|---|---|---|
|
|
修改电机响应 CANID |
|
|
修改总线波特率 |
|
|
|
设置报文上传/掉线保护时间 |
|
|
|
|
设置线圈最大温度 |
|
|
设置驱动板最大温度 |
|
|
|
设置过压阈值(重启生效) |
|
|
|
设置低压阈值(重启生效) |
|
|
|
设置 NTC 类型 |
|
|
|
|
停止电机 |
|
|
电流模式 |
|
|
|
速度模式 |
|
|
|
位置模式 |
|
|
|
|
电流上下限 |
|
|
电流环 KP/KI |
|
|
|
|
加速度上下限 |
|
|
速度上下限 |
|
|
|
速度环 KP/KI |
|
|
|
|
位置软限位 |
|
|
位置环 KP/KD |
|
|
|
位置偏移 |
|
|
|
|
清错 |
|
|
恢复出厂 |
|
|
|
参数写入 Flash |
|
|
|
从 Flash 恢复 |
|
2.3 参数读取接口
接口 |
参数类型(示例) |
功能 |
CAN 码流示例 |
|---|---|---|---|
|
|
获取故障状态 |
|
|
获取母线电压 |
|
|
|
获取线圈温度 |
|
|
|
获取驱动板温度 |
|
|
|
获取软件版本 |
|
|
|
|
获取当前运行模式 |
|
|
|
获取当前电流 |
|
|
获取目标电流 |
|
|
|
获取电流/速度/位置 |
|
|
|
|
获取当前速度 |
|
|
获取目标速度 |
|
|
|
|
获取当前位置 |
|
|
获取目标位置 |
|
2.4 扩展控制与调试接口
接口 |
功能 |
使用场景 |
|---|---|---|
|
发送原始 CAN 数据 |
协议联调、透传验证 |
|
设置解码失败策略 |
丢弃/回调/裸上传 |
|
获取当前策略 |
排查异常帧处理逻辑 |
3. 运动模式与运动控制 API
Motor_SetRunMode
参数 |
含义 |
|---|---|
|
控制实例 ID( |
|
运行模式,见下表 |
|
与 |
MotorRunModeEnum(节选,完整见头文件):
枚举值 |
说明 |
|---|---|
|
停止 |
|
电流模式 |
|
位置模式 |
|
周期同步位置/速度/转矩 |
Motor_GetRunMode
参数 |
含义 |
|---|---|
|
控制实例 ID |
发起查询;成功后通过 Motor_ReadRspMsg 读取 MotorGetParaRsp,其中 paraType = MOTOR_RUN_MODE_PARA。
Motor_SendCSP
参数 |
含义 |
|---|---|
|
控制实例 ID |
|
|
|
目标:位置(cnt)/ 电流(mA)/ 速度(0.01 Hz) |
周期性调用以设置目标并获取电流/速度/位置等反馈(与 CSP 运行方式一致)。
Motor_AngleToPositionCnt
参数 |
含义 |
|---|---|
|
|
|
减速比;双编时换算公式中不使用 |
|
|
|
外圈角度 |
|
输出:电机端位置计数( |
换算关系(与 MotorCtrlApi.h 注释一致):单编时 posCnt 与 angle * gearRatio * 65536 及 360° 或 2π 相关;双编时与 262144 及 360° 或 2π 相关。
Motor_PositionCntToAngle
参数 |
含义 |
|---|---|
|
单编 / 双编,同上 |
|
减速比;双编公式中不乘 |
|
电机端位置计数 |
|
输出角度单位:度或弧度 |
|
输出:外圈角度( |
Motor_MoveTargetAngle
参数 |
含义 |
|---|---|
|
控制实例 ID |
|
单编 / 双编 |
|
减速比 |
|
|
|
目标外圈角度 |
Motor_MoveDeltaAngle
参数 |
含义 |
|---|---|
|
控制实例 ID |
|
单编 / 双编 |
|
减速比 |
|
|
|
当前外圈角度 |
|
相对当前角度的增量 |
Motor_CntSpeedToOutputSpeed
参数 |
含义 |
|---|---|
|
电机端转速,单位 0.01 Hz(与 |
|
减速比 |
|
输出物理量单位: |
|
输出端转速( |
头文件给定换算:例如输出为 RPM 时 outputRpm = cntSpeed * 0.6 / gearRatio;度/s、弧度/s 见 MotorCtrlApi.h 注释。
Motor_OutputSpeedToCntSpeed
参数 |
含义 |
|---|---|
|
输出端转速(数值,单位由 |
|
减速比 |
|
与 |
|
输出:电机端转速(0.01 Hz, |
3.1 示例(目标角)
// 与 MotorCtrlApi.h 声明一致;ctrlId / gearRatio / encoderNum 按实机填写
int ctrlId = 0;
int gearRatio = 101;
int posCnt = 0;
Motor_AngleToPositionCnt(MOTOR_ENCODER_NUM_DUAL, gearRatio,
MOTOR_ANGLE_UNIT_DEG, 15.0, &posCnt);
Motor_MoveTargetAngle(ctrlId, MOTOR_ENCODER_NUM_DUAL, gearRatio,
MOTOR_ANGLE_UNIT_DEG, 15.0);
// 当前位置 cnt 需先 Motor_GetPositionLoopPara 发起查询,再通过 Motor_ReadRspMsg 取回后再调用 PositionCntToAngle
4. PT 模式控制
PT 实时控制使用 Motor_ConfigPTMode(初始化一次)+ Motor_SetPT(周期调用)。
Motor_ConfigPTMode
在运行前配置静态 PT 参数(通常初始化时调用一次);之后可用 Motor_SetPT 做周期控制。
参数 |
含义 |
|---|---|
|
控制实例 ID |
|
电流上下限(A) |
|
扭矩上下限(Nm) |
|
减速比 |
|
扭矩常数(Nm/A) |
|
KP/KD 最大值(量化用) |
Motor_SetPT
周期调用;必须先 Motor_ConfigPTMode。
参数 |
含义 |
|---|---|
|
控制实例 ID |
|
位置刚度系数 |
|
阻尼系数 |
|
目标位置(rad) |
|
目标速度(rad/s) |
|
前馈扭矩(Nm) |
Motor_GetForceKPDPara / Motor_SetForceKPDPara
接口 |
参数 |
含义 |
|---|---|---|
|
|
控制实例 ID |
|
|
|
|
|
控制实例 ID |
|
|
|
|
参数值 |
ForceKPDTypeEnum:
枚举 |
说明 |
|---|---|
|
KP |
|
KD |
|
KT |
|
KI |
|
KI 限幅 |
|
KP 最大值(设置接口常用) |
|
KD 最大值(设置接口常用) |
读取结果通过 Motor_ReadRspMsg 获取。
Motor_GetPTTIPara / Motor_SetPTTIPara
接口 |
参数 |
含义 |
|---|---|---|
|
|
控制实例 ID |
|
|
|
|
|
控制实例 ID |
|
|
|
|
参数值 |
PT_TITypeEnum:
枚举 |
说明 |
|---|---|
|
扭矩最大值 |
|
扭矩最小值 |
|
电流最大值 |
|
电流最小值 |
读取结果通过 Motor_ReadRspMsg 获取。