跳到主要内容

力矩控制

1、指令约束

直接力矩控制必要条件

力矩指令需满足不超限且连续:

τ˙jmax<τ˙jc<τ˙jmaxτjmax<τjc<τjmax\begin{aligned} -\dot{\tau}_{j \max } & < \dot{\tau}_{jc} < \dot{\tau}_{j \max } \\ -\tau_{j \max } & < \tau_{jc} < \tau_{j \max } \end{aligned}

2、直接力矩控制限制参数

xMateER3 Pro / xMateER7 Pro

参数一轴二轴三轴四轴五轴六轴七轴单位
力矩上限85858585363636NmNm
力矩微分上限1500150015001500100010001000Nm/sNm/s

xMate3 / xMate7

参数一轴二轴三轴四轴五轴六轴单位
力矩上限858585363636NmNm
力矩微分上限150015001500100010001000Nm/sNm/s

3、力矩相关状态参数

  • 这些状态数据均可在实时模式下获取。可以通过设置并调用 startReceiveRobotState() 接口订阅数据,接着在控制周期内调用 getStateData() 接口获取其实时数值。
数据名 (fieldName)类型单位含义说明补充
tau_mArrayXDNm关节力矩 / 连杆端传感器力矩反馈传感器的纯反馈值,不包含摩擦力
tau_cArrayXDNm指令关节力矩SDK 发送的指令值。需要加上重力补偿等参数才是系统中最终的力矩下发值。仅在打开实时模式控制之后有效。
tau_filtered_mArrayXDNm滤波后关节力矩对连杆端反馈关节力矩 tau_m 的滤波结果。仅在打开实时模式控制之后有效。
tau_vel_cArrayXDNm/s指令力矩微分tau_c 的微分值。仅在打开实时模式控制之后有效。
tau_ext_baseArray6DNm基坐标系中外部力矩仅在打开实时模式控制之后有效。
tau_ext_stiffArray6DNm力控坐标系中外部力矩仅在打开实时模式控制之后有效。
theta_mArrayXDrad电机位置电机端的位置反馈。
theta_vel_mArrayXDrad/s电机位置微分电机端的速度反馈。
motor_tauArrayXDNm电机转矩电机实际反馈的转矩,包含摩擦力。该反馈值可通过乘以减速比,折算得关节反馈力矩 (即通过电机力折算的连杆端力矩)。
motor_tau_filteredArrayXDNm滤波后电机转矩对电机反馈转矩的滤波结果,也是最终发送的指令。可使用 setFilterFrequency 进行滤波参数的设置。仅在打开实时模式控制之后有效。

4、常见问题

直接力矩控制下坠

力矩控制效果与机械臂硬件状态、负载参数、力控模型精度直接相关。

  • 先做验证(两种方式二选一)

    • 开启拖动并按住拖动按键,观察机械臂是否能维持静止(不上飘、不下坠)。
    • 运行 RL 力控相关指令,确认是否可正常使用。

若上述验证异常,通常存在力控模型误差。

  • 处理建议

    • 若存在模型误差:
      • 准确设置负载质量与质心(不可粗估)。
      • 通过HMI界面或者SDK的calibrateForceSensor接口执行力传感器标定,通过SDK控制机器人运动时建议程序中调用calibrateForceSensor接口,每次运动前标定一下力传感器。
    • 若力控模型正常:
      • 优先检查发送力矩指令是否合理。
      • 零力矩控制机器人发飘原因:通过力矩控制时,控制器底层补偿了摩擦力和重力,伺服实际执行的指令为摩擦力+重力+sdk发送的指令力矩。由于静摩擦力没有精确的数学模型,力矩补偿不到位可能会导致机器人运动,可尝试调节摩擦力补偿系数解决。
  • 调试建议

    • 首次联调建议从低幅值、低变化率开始,逐步增大指令。
    • 控制回调中避免阻塞和耗时操作,防止周期抖动影响力矩闭环稳定性。
    • 与网络波动叠加时,优先直连并保持链路简单。