1、牛顿欧拉法递推
关节运动计算关节力矩的完整算法分为两部分组成,第一部分是由速度加速度递推得到各连杆的速度和加速度再由牛顿欧拉方程得到连杆之间的相互作用力和力矩以及驱动力矩。
由于牛顿欧拉方程只有在质心坐标系下才能应用,所以因该先利用递推得到各个连杆在连杆坐标系下的线速度、角速度、线加速度、角加速度然后再转为对应连杆质心坐标系下再应用牛顿欧拉方程。
以上图为例,说明符号含义:
1、求相邻坐标系i到i+1之间的旋转矩阵和坐标系之间的位置向量
,再由MDH方法建模时旋转矩阵为其齐次矩阵前三行前三列,位置向量为齐次矩阵第四列前三行。
2、正运动学递推角速度,角加速度,线加速度,质心加速度。由于基座是固定的所以基座的角速度由基座向末端各连杆递推角速度:
3、基座的角加速度,正向推导连杆的角加速度公式为:
4、基座的加速度,加速度递推公式如下:
为了简化重力的计算,将基座的加速度设置为与重力加速度大小相等方向相反即可。所以定义一个初始加速度量
5、由于牛顿方程和欧拉方程都是基于连杆质心坐标系给出的,所以要写出连杆质心处的加速度:
6、根据牛顿欧拉方程给出连杆力:
7、力和力矩的递推,反向从机器人的末端向基座方向递推:
2、动力学方程验证
采用机器人工具箱对牛顿欧拉法给出的关节力矩进行验证,随意给定物理学参数,然后给定关节位置,速度,加速度如下:
q=[90 -90 90 90 90 90]*pi/180;
dq=[1 1 1 1 1 1];
ddq=[1 1 1 1. 1 1];
通过三种方式计算出的关节力矩如下:
bot_mdh_rtb =
1.0160 28.3326 1.3150 -0.0296 0.5761 0
rot_MDH_Newton =
1.0160 28.3038 1.3147 -0.0296 0.5756 0
tau_sympybotics =
1.0160 28.3326 1.3150 -0.0296 0.5761 0
第一种是采用机器人工具箱计算出的关节力矩,第二个是牛顿欧拉法计算出的关节力矩,第三个是采用python的Sympybotics包生成的最小惯性参数集计算出的关节力矩,可以看出推导的公式和生成的最小参数集均是正确的。