(作者建议您在这里下载本文pdf版获得更清晰的阅读方式)。
逆动力学问题是指:已知某一时刻机器人各关节的位置 ,关节速度及关节加速度,求此时施加在机器人各杆件上的驱动力(力矩)。
逆动力学问题在机器人控制与计算机动画领域都有广泛的应用。例如当给出期望的机器人运动状态时,我们可以通过逆动力学解算来分析其力矩是否可以由作动系统实现。在计算机动画领域,可以利用优化算法求解力矩消耗最小的动画过程(如文献[1])来得到一个自然的动画。另外,逆动力学也常作为正动力学的一个子部分来求解正动力学(正动力学指已知力和力矩,求系统状态)。
逆动力学可以利用牛顿欧拉(Newton-Euler)方程来求解,也可以利用拉格朗日(Lagrange)方程来求解(二者的等价性与区别读者可以参看文献[2]中的2.3节)。本文旨在讲解如何基于牛顿欧拉(Newton-Euler)方程来求解机器人逆动力学,其算法被称为“迭代牛顿欧拉算法(Recursive Newton-Euler Algorithm)”。
在介绍“迭代牛顿欧拉算法(Recursive Newton-Euler Algorithm)”之前,让我们先看一下什么是牛顿欧拉方程:
其中表示线加速度,表示角加速度(角速度的导数),等式左边的求和符号表示公式中应该使用合力与合力矩。关于如何得出牛顿欧拉方程,请参看我的前一篇文章:《刚体动力学》http://www.cnblogs.com/ArenAK/archive/2010/06/07/1753427.html。
下面我们说明什么是“迭代牛顿欧拉算法(Recursive Newton-Euler Algorithm)”,即它如何从系统状态求解出力矩,之后在下一节本文将说明为什么要进行“迭代”计算,从而导出此算法的复杂度。
迭代牛顿欧拉算法包含两个迭代过程:
(1)第一个迭代过程由机器人运动系统的根节点开始,逐步向各个叶子节点进行迭代。在此迭代过程中各个杆件的运动速度(线速度、角速度)、运动加速度(线加速度、角加速度)被依次求出,从父节点向子节点迭代的直观原因是父节点会带动子节点运动,因此子节点的速度/加速度要在父节点的速度/加速度求出后迭代求出:
其中速度(线速度、角速度)和加速度(线加速度、角加速度)都表示在杆件的局部坐标系中;
线速度和线加速度为杆件局部坐标系原点的运动速度(表示在局部坐标系中);
为杆件的运动轴(平移轴或旋转轴)在坐标系中的方向;
,为测量得到的杆件旋转的速度和加速度数值(是标量);
为由坐标系到坐标系的旋转矩阵;
为坐标系的原点在坐标系中的位置。
同时由于各个杆件所受的合力、合力矩只与加速度有关,因此在此迭代过程中各杆件所受的合力、合力矩也可以被求出:
其中、分别为杆件的质心所受到合力、合力矩。
为杆件的质量,为杆件的质心在坐标系中的坐标,为坐标系中以质心为参考点杆件的惯量阵。
(2)第二个迭代过程的方向由叶子节点开始,逐步向根节点进行迭代,目的是求出各个杆件之间的相互作用力。每个杆件受到的力(力矩)包括父杆件作用于本杆件的力(力矩),子杆件作用于本杆件的力(力矩),以及重力。对于最末端的叶子杆件,不存在子杆件的作用力(即下式中,),因此可以从子杆件开始算起,逐步推导出各个杆件之间的相互作用力(力矩)。
最后可求出杆件在某个轴向上所受到的力矩的大小(标量):
现在我们已经知道了如何利用迭代牛顿欧拉算法进行计算,我们再来看看为何要进行“迭代”计算。实际上,不进行迭代也可以计算出结果,然而不进行迭代将会存在过多的冗余计算,大大影响计算效率。我们将以速度的计算为例来说明,为了叙述简单,我们设各个关节只有一个自由度,各个速度量表示在一个公共坐标系(而不是各个杆件的局部坐标系)下。因此利用递归方法杆件的速度表达式为:
设代表一个标量与向量相乘的计算代价,代表两个向量进行相加的计算代价。那么调用一次递归式的计算代价为,调用一次非递归式的计算代价为,则利用递归式计算机器人前个杆件的计算代价为,而利用非递归式进行相应计算的代价为。因此,利用递归计算式获得了复杂度为的高效率计算,而利用非递归计算式则获得复杂度为的低效率计算。
非递归式计算效率低的原因在于进行了过多的冗余计算:
可见这一项被重复计算了次,被计算了次,等等。递归算法避免了此类冗余计算,因而获得了高效率。
当公式越复杂时,递归与非递归获得的效率差别更大。例如利用递归来计算加速度,则复杂度由降为,而力矩的计算则更是从复杂度降为。因此迭代牛顿欧拉算法实现了复杂度为的逆动力学计算。
说明:本文3、4节内容大多参考了文献[3]。
[1] C. Rose, et al., "Efficient generation of motion transitions using spacetime constraints," presented at the Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, 1996.
[2] 霍伟, 机器人动力学与控制: 高等教育出版社, 2005.
[3] R. Featherstone, Rigid Body Dynamics Algorithms: Springer-Verlag New York, Inc., 2007.