机器人动力学方程提供了驱动力、接触力,以及产生的运动加速度和运动轨迹之间的关系。机器人动力学主要应用于机构设计、控制和仿真。而动力学又可分为正动力学和逆动力学。正动力学的一个主要应用就是实验仿真。实验仿真又是控制算法验证的一个必要的手段。因此求解正动力学方程是不可避免的。正动力学模型的正确性直接影响算法的实际应用。正动力学模型与实际机器人对象差异较大时,算法仿真验证将不会有太大意义。

正动力学机器人中的常见问题与难点:

1、模型参数畸形,导致无法求解。

利用机器人理论设计参数作为模型参数求解时一般不会导致无法求解问题,但理论参数与实际参数可能相差甚远。实际使用的动力学参数一般都是利用参数辨识方法获取。由于动力学参数存在线性相关性,仅得到最小参数集的辨识结果,对应这动力学参数的无穷多解。而无穷多解中很多参数是畸形的无法进行正动力学求解,即使逆动力学可解且结果一致。如何获取与实际模型接近并能够用于正动力学求解的动力学参数是正动力学的难点之一。

2、模型中引入摩擦,导致无法求解。

摩擦是动力学中的主要成分,特别是低速情况下。摩擦模型一般采用库伦和粘滞摩擦模型。摩擦模型在速度过零时存在数据跳变,降低了正动力学求解的稳定性。如何求解带有摩擦模型的正动力学时动力学模型求解的难点之一。

3、动力学中关节状态与关节力矩并非一一映射,正动力学求解结果的漂移(没有位置闭环)。

从模型本身考虑,逆动力学的力矩输出作为正动力学的输入,正动力学的输出结果应该与逆动力学的输入一致。但由于正动力学的求解精度有限,会造成正动力学的输出与逆动力学的输入不一致,且会随着时间延续逐渐增多,甚至正动力学的输出会呈现发散趋势。

理论上:

关节状态1=关节状态2

关节力矩1=关节力矩2

实际上:(MATLAB Simcape求解)

关节状态1!=关节状态2

关节力矩1=关节力矩2

逆动力学输入关节角度 正动力学输出关节角

逆动力学输出力矩与利用正动力学输出计算得到的力矩之差(小于10的-11次幂)

上述问题均为利用MATLAB Simcape工具箱求解正动力学时遇到。

MATLAB Simcape 正动力学模型