机器人动力学分析
机器人分析分为牛顿欧拉法、拉格朗日法、高斯法、凯恩方法。

MATLAB 提供的逆动力学采用的是牛顿欧拉法:RNE——Recursive Newton-Euler。
需要三个参数,第一个是给定最终的角度,第二个是速度,第三个是角加速度,返回各个关节所需要的力矩。 可选参数有重力加速度和负载 fext。
牛顿欧拉法
我们的目标是给定机器人的关节位置 q、速度 qd 和加速度 qdd,计算出为了产生这个运动状态,每个关节需要施加多大的驱动力矩。
初学者容易混淆的是,我们之前用力域雅可比解决过每个关节应该分配多大力矩的问题。
'力域雅可比'解决的是一个不同的问题,属于静力学或外力映射范畴,它的目的是将作用在机器人末端执行器上的外力/力矩。
映射到对应的关节空间力矩。
区别就是一个是给定运动状态,计算每个关节为了达到这个运动状态需要多大力; 另一个则是给定末端的力,计算这个力分配在各个关节上是多大。
牛顿欧拉法的精髓在于正推和逆推,我们来看这个过程:
- 正向递推(Forward Recursion):从基座到末端,计算每个连杆的速度、加速度。
- 反向递推(Backward Recursion):从末端到基座,计算每个关节需要提供的力和力矩。
动力学的目的就是计算在某个运动状态下,各个关节应该施加多大的力,因此核心是构建一个**'运动状态 - 力学参数'**的方程,牛顿和欧拉两位大佬就提供了。 我们的核心就变成了如何得到各个关节的'真实速度'。 我们已知各个关节的关节空间的速度、角速度、加速度,如何将前一个坐标系的运动参数传递给下一个坐标系计算呢? 这就用到了正推,构建线速度、线加速度、角速度、角加速度以及质心和端点的速度关系。 这里面最难理解的就是对 Zi 轴的求导,我们把求导拆成先微分再对时间求导,并用红蓝绿坐标系表示了这个过程。 最终得到了运动参数的递推公式。
我们又知道,力的传播是从末端向基座的,因此力的计算就是逆推的过程。 我们先对连杆的相互作用点进行了受力分析,并构建了端点到质心的变换公式,得以计算质心处的合力矩情况。 此时的合力矩指的是 xyz 三方向的合力矩,但是关节电机只能控制绕 z 轴旋转的力矩,因此我们将合力矩中的 Z 方向力矩提取出来,直接用 Z 的方向向量点积即可。 由此,我们就能通过得知各个关节的关节速度、加速度,从而推导出各个关节需要多大的力矩了!
那么构建运动状态和力的关系的等式就显而易见了:
牛顿方程:


























