MuJoCo中actuator执行器产生力的计算方式

refer from: https://mujoco.readthedocs.io/en/stable/computation/index.html#geactuation
computation -> force generation
每个执行器生成一个标量力pi,这个力是一个函数,取决于执行器的激活状态ui、速度wi、位置qi和外部控制信号li。

该力生成机制是执行器特定的,不能与模型中的其他执行器交互。当前,当存在激活状态时(如软体机器人),力是关于激活状态的仿射函数;否则是关于控制信号的仿射函数: pi = (aui 或 auli) + b0 + b1qi + b2li 其中a是增益参数,b0、b1、b2是偏置参数,这些参数存储在模型中。

通过设置不同的增益和偏置参数,可以模拟直接力控制、位置控制和速度控制等。还可以通过安装回调函数计算自定义的增益和偏置项。

仿射力生成使得可以从反动力学计算的应用力中推断出控制/激活状态,利用力矩臂矩阵的伪逆。

但某些执行器不是仿射的(如带有嵌入式低级控制器),因此考虑扩展上述模型。

所有执行器产生的广义坐标力之和存储在mjData.qfrc_actuator中,并加到应用力向量r中,与用户定义的关节或笛卡尔力(存储在mjData.qfrc_applied和mjData.xfrc_applied)一起。