机器人动力学分析
机器人动力学分析方法主要包括牛顿欧拉法、拉格朗日法、高斯法和凯恩方法。
MATLAB 提供的逆动力学采用的是牛顿欧拉法(RNE——Recursive Newton-Euler)。
需要三个参数,第一个是给定最终的角度,第二个是速度,第三个是角加速度,返回各个关节所需要的力矩。可选参数有重力加速度和负载 fext。
牛顿欧拉法
我们的目标是给定机器人的关节位置 q、速度 qd 和加速度 qdd,计算出为了产生这个运动状态,每个关节需要施加多大的驱动力矩。
![\tau]
初学者常混淆'力域雅可比'与动力学计算的区别。
'力域雅可比'解决的是静力学或外力映射问题,目的是将作用在机器人末端执行器上的外力/力矩映射到对应的关节空间力矩。
![F_{end}]
![\tau_{ext}]
区别在于:
- 牛顿欧拉法:给定运动状态,计算每个关节为了达到这个运动状态需要多大力。
- 力域雅可比:给定末端的力,计算这个力分配在各个关节上是多大。
正推与逆推
牛顿欧拉法的精髓在于正推和逆推:
- 正向递推(Forward Recursion):从基座到末端,计算每个连杆的速度、加速度。
- 反向递推(Backward Recursion):从末端到基座,计算每个关节需要提供的力和力矩。
核心是构建一个'运动状态 - 力学参数'的方程。已知各个关节的关节空间的速度、角速度、加速度,通过正推构建线速度、线加速度、角速度、角加速度以及质心和端点的速度关系,得到运动参数的递推公式。力的传播是从末端向基座的,因此力的计算是逆推的过程。对连杆的相互作用点受力分析,并构建端点到质心的变换公式,计算质心处的合力矩情况。由于关节电机只能控制绕 z 轴旋转的力矩,将合力矩中的 Z 方向力矩提取出来,直接用 Z 的方向向量点积即可。
基本方程
构建运动状态和力的关系的等式:
牛顿方程:
![F_i = m \dot{v}_{C_i}]
用于解决刚体平移的动力学刻画,沟通力与线加速度的关系。
欧拉方程:
![N_i = c_i I \dot\omega_i + \omega_i \times c_i I \omega_i]
用于解决刚体旋转的动力学刻画,沟通力矩与角速度、角加速度的关系。
其中,^{C}I 是刚体在{C}中的惯性张量。
正推详解
串联机械臂具有强耦合关系,相邻关节之间存在递推关系。当前连杆的运动状态依赖于前一个连杆的运动参数。
旋转运动参数
角速度:
![\omega_{i+1}]
真实的角速度是公转速度 + 自转速度。在这里,\omega_i 指前一个关节的角速度,第二项是绕 Z_{i+1} 的自转速度。
角加速度:
![\dot\omega_{i+1}]
角加速度是对角速度求时间的微分。重点在于如何对 \hat{Z}_{i+1} 求导。利用叉积表示偏移,得到第三项的来源:
![\frac{dZ_{i+1}}{dt}=Z_{i+1} \times \omega_i]
将所有参数转入{i+1}系中,统一上下标。
平移运动参数
线速度:
线速度不仅会由前一个连杆传递;如果前一个连杆是旋转关节,由于存在连杆长度 R,必然会产生由旋转而产生的线速度 v_{rotate}=\omega \times R。
![v_{i+1}]
P^*_{i+1} 是指{i}系原点指向{i+1}系原点的向量,也就是连杆长度。
线加速度:
同理,求加速度就是对速度求时间的微分。


