力矩控制
1、指令约束
直接力矩控制必要条件
力矩指令需满足不超限且连续:
2、直接力矩控制限制参数
xMateER3 Pro / xMateER7 Pro
| 参数 | 一轴 | 二轴 | 三轴 | 四轴 | 五轴 | 六轴 | 七轴 | 单位 |
|---|---|---|---|---|---|---|---|---|
| 力矩上限 | 85 | 85 | 85 | 85 | 36 | 36 | 36 | |
| 力矩微分上限 | 1500 | 1500 | 1500 | 1500 | 1000 | 1000 | 1000 |
xMate3 / xMate7
| 参数 | 一轴 | 二轴 | 三轴 | 四轴 | 五轴 | 六轴 | 单位 |
|---|---|---|---|---|---|---|---|
| 力矩上限 | 85 | 85 | 85 | 36 | 36 | 36 | |
| 力矩微分上限 | 1500 | 1500 | 1500 | 1000 | 1000 | 1000 |
3、力矩相关状态参数
- 这些状态数据均可在实时模式下获取。可以通过设置并调用
startReceiveRobotState()接口订阅数据,接着在控制周期内调用getStateData()接口获取其实时数值。
| 数据名 (fieldName) | 类型 | 单位 | 含义说明 | 补充 |
|---|---|---|---|---|
tau_m | ArrayXD | Nm | 关节力矩 / 连杆端传感器力矩反馈 | 传感器的纯反馈值,不包含摩擦力。 |
tau_c | ArrayXD | Nm | 指令关节力矩 | SDK 发送的指令值。需要加上重力补偿等参数才是系统中最终的力矩下发值。仅在打开实时模式控制之后有效。 |
tau_filtered_m | ArrayXD | Nm | 滤波后关节力矩 | 对连杆端反馈关节力矩 tau_m 的滤波结果。仅在打开实时模式控制之后有效。 |
tau_vel_c | ArrayXD | Nm/s | 指令力矩微分 | tau_c 的微分值。仅在打开实时模式控制之后有效。 |
tau_ext_base | Array6D | Nm | 基坐标系中外部力矩 | 仅在打开实时模式控制之后有效。 |
tau_ext_stiff | Array6D | Nm | 力控坐标系中外部力矩 | 仅在打开实时模式控制之后有效。 |
theta_m | ArrayXD | rad | 电机位置 | 电机端的位置反馈。 |
theta_vel_m | ArrayXD | rad/s | 电机位置微分 | 电机端的速度反馈。 |
motor_tau | ArrayXD | Nm | 电机转矩 | 电机实际反馈的转矩,包含摩擦力。该反馈值可通过乘以减速比,折算得关节反馈力矩 (即通过电机力折算的连杆端力矩)。 |
motor_tau_filtered | ArrayXD | Nm | 滤波后电机转矩 | 对电机反馈转矩的滤波结果,也是最终发送的指令。可使用 setFilterFrequency 进行滤波参数的设置。仅在打开实时模式控制之后有效。 |
4、常见问题
直接力矩控制下坠
力矩控制效果与机械臂硬件状态、负载参数、力控模型精度直接相关。
-
先做验证(两种方式二选一)
- 开启拖动并按住拖动按键,观察机械臂是否能维持静止(不上飘、不下坠)。
- 运行 RL 力控相关指令,确认是否可正常使用。
若上述验证异常,通常存在力控模型误差。
-
处理建议
- 若存在模型误差:
- 准确设置负载质量与质心(不可粗估)。
- 通过HMI界面或者SDK的
calibrateForceSensor接口执行力传感器标定,通过SDK控制机器人运动时建议程序中调用calibrateForceSensor接口,每次运动前标定一下力传感器。
- 若力控模型正常:
- 优先检查发送力矩指令是否合理。
- 零力矩控制机器人发飘原因:通过力矩控制时,控制器底层补偿了摩擦力和重力,伺服实际执行的指令为摩擦力+重力+sdk发送的指令力矩。由于静摩擦力没有精确的数学模型,力矩补偿不到位可能会导致机器人运动,可尝试调节摩擦力补偿系数解决。
- 若存在模型误差:
-
调试建议
- 首次联调建议从低幅值、低变化率开始,逐步增大指令。
- 控制回调中避免阻塞和耗时操作,防止周期抖动影响力矩闭环稳定性。
- 与网络波动叠加时,优先直连并保持链路简单。