在 MuJoCo 中计算机器人末端接触力(六维力,即三维力和三维力矩)的核心思路是利用 接触力合成 或 逆动力学原理,结合机器人运动学和动力学模型。
<sensor>
<force name="force_sensor" site="force_sensor_site"/>
<torque name="torque_sensor" site="force_sensor_site"/>
</sensor>
# 从 force 和 torque 传感器获取数据
if force_sensor_id != -1 and torque_sensor_id != -1:
force = data.sensordata[force_sensor_id:force_sensor_id + 3]
torque = data.sensordata[torque_sensor_id:torque_sensor_id + 3]
W_ext = -HR @ np.concatenate([force, torque])
else:
W_ext = -HR @ np.array([0, 0, 0, 0, 0, 0])