干货 | 机械臂的动力学(二):拉格朗日法

561
0
2020年4月11日 15时43分

本文转载自微信公众号ROBOTICS

 

在进入今天的正题之前,CC想把上一篇文章没有讲得很清楚的问题说一下——那就是,机械臂的动力学到底研究什么?(上一篇文章在此:《机械臂的动力学(一):牛顿欧拉法》

 

对于一个质点,我们研究它受到的外力与它的运动之间的关系:它的动力学可以简单地用F = ma 来描述;

 

对于一个刚体,我们同样研究外力与运动之间的关系:它的动力学可以用上一篇讲的欧拉第一第二方程来描述;

干货 | 机械臂的动力学(二):拉格朗日法插图

 

对于一个机械臂,抽象地说我们还是研究外力与运动之间的关系——不过,这里的外力,可以是关节驱动器输出的力(或扭矩,下文都简称力),也可以是末端执行器受到的力;这里说的运动,可以是在关节空间描述的运动,也可以是在末端执行器的操作空间描述的运动。我们知道,关节的力与末端执行器的力可以通过雅可比矩阵转换;关节运动与末端执行器运动可以通过运动学转换;因此,上面任意组合的求解都是可以的.——选择哪一项取决于我们的控制回路所需要的输入和输出分别是什么。这其中最基础也相对容易求解的,就是在关节空间求解力与运动的关系。

 

因此,这篇文章所讲的机械臂动力学,是指机械臂关节输出的力和关节运动之间的关系。用一个函数表示,是

干货 | 机械臂的动力学(二):拉格朗日法插图(1)

 

拉格朗日力学


上一篇文章中,我们用大家熟知的牛顿物理学方法试图求解机械臂的动力学;最终我们得到一系列的迭代表达式……我们还用只有一个旋转关节的“机械臂”作为例子,向大家展示了用这种方法求解有多么繁琐。由于牛顿力学对空间坐标系的依赖,我们很难用它来求解通用的解析解——我们需要更好的工具。

 

拉格朗日就是来拯救我们于牛顿欧拉之中的天使……

 

拉格朗日力学是分析力学的内容,本质上与牛顿力学是一样的,在物理上没有任何新内容。它从功和能量角度入手、引入广义坐标的概念,用数学分析方法重新表述了牛顿力学。它比牛顿力学好用的地方主要两点:不依赖空间坐标系,不需要分析系统内部的约束力

 

推导拉格朗日力学有两条路径:历史上是先从牛顿力学和虚功原理推导出达朗贝尔原理(D’alembert Principle),再由拉格朗日在其基础上推导出拉格朗日方程。

 

达朗贝尔原理说:任何情况下,质点系主动力(外力)与惯性力所做的虚功之和为0,不需要考虑内部约束力,如下面式子所示。

干货 | 机械臂的动力学(二):拉格朗日法插图(2)干货 | 机械臂的动力学(二):拉格朗日法插图(3)

 

拉格朗日从上面这个式子出发,假设主动力都是保守力(保守力所作的功与路径无关,只与起始位置有关),则经过一番数学推导(详细推导可以查看参考资料[2])可以得到

干货 | 机械臂的动力学(二):拉格朗日法插图(4)

干货 | 机械臂的动力学(二):拉格朗日法插图(5)

其中V为系统势能,T为系统动能。

 

然后他发现将拉格朗日量设为系统的动能减去势能,即

干货 | 机械臂的动力学(二):拉格朗日法插图(6)

 

则系统动力学方程可以写为

干货 | 机械臂的动力学(二):拉格朗日法插图(7)

 

如果考虑主动力包括非保守力的情况,那么我们需要把这个力F加入到式子中

干货 | 机械臂的动力学(二):拉格朗日法插图(8)

 

注意到上式右边第一项即是保守力的表达式。

 

那么从虚功原理出发会有:

干货 | 机械臂的动力学(二):拉格朗日法插图(9)

 

把广义力Qk定义为

干货 | 机械臂的动力学(二):拉格朗日法插图(10)

 

我们就会有

干货 | 机械臂的动力学(二):拉格朗日法插图(11)

 

殊途同归,推导拉格朗日力学的另一条路径是从最小作用量原理(Principle of Least Action)出发,把作用量定义为拉格朗日量对时间的积分,然后求作用量的极值条件。注意到动能、势能都是系统运动轨迹的函数,作用量则是函数的函数(泛函),因此求极值需要用到变分法。这里毕竟不讲数学也不讲物理,就不再详细展开了……

 

拉格朗日法推导机械臂动力学


大略了解一下拉格朗日力学之后,我们就可以思考怎样用它来求解机械臂的动力学了。我们最重要的工具当然是上面最后一个式子,把它写成向量的形式:

干货 | 机械臂的动力学(二):拉格朗日法插图(12)

 

第一个问题是,机械臂动力学所用的“广义坐标”是什么?注意到我们想要求的是关节输出的力与关节运动的关系,把关节空间选定为广义坐标看来是非常自然而然的事情(选广义坐标有一定标准,这里不讲)。这样,关节位置向量即为向量q,关节输出的扭矩则是广义力Q。用机械臂常用的符号表示,我们有

干货 | 机械臂的动力学(二):拉格朗日法插图(13)

 

干货 | 机械臂的动力学(二):拉格朗日法插图(14)

 

现在的问题是,在广义坐标里如何表述机械臂系统的动能T和势能V?

 

机械臂动能与质量矩阵

 

我们知道,单个质点的动能为1/2*mv^2。刚体的动能则可以通过类似上一篇文章的方法:把刚体看作无数质点的集合作体积分来求得。在笛卡尔空间,刚体的动能可以表示为

干货 | 机械臂的动力学(二):拉格朗日法插图(15)

 

其中I为刚体的惯性张量。

 

知道了一个刚体的动能,机械臂这种多个刚体的动能自然是把每根连杆的动能相加:

干货 | 机械臂的动力学(二):拉格朗日法插图(16)

 

现在我们的问题变成了如何用关节位置及速度表示连杆线速度v和角速度w——咦,这不是运动学问题么?是时候祭出我们的雅可比矩阵了。

 

(关于运动学,请参考这三篇文章:《“正运动学”——从关节空间到操作空间》《“瞬时运动学”——还是从关节空间到操作空间》《机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?》

 

在之前的文章中,我们主要关注机械臂的end effector位置/速度(操作空间)与关节位置/速度(关节空间)的关系,我们所求的雅可比矩阵也是从关节空间到操作空间的映射;但是在这里,我们关注的是每一根连杆的速度与关节位置/速度的关系,我们需要求的雅可比矩阵是从关节速度到连杆质心速度的映射,这个雅可比矩阵可以用与之前类似的方法求得。

 

首先是线速度雅可比矩阵,我们先写出连杆质心的位置,为了方便我们通常以机械臂的基座坐标系为参照:

干货 | 机械臂的动力学(二):拉格朗日法插图(17)

 

再对关节位置求导得到雅可比矩阵

干货 | 机械臂的动力学(二):拉格朗日法插图(18)

 

则连杆质心线速度可以写为

干货 | 机械臂的动力学(二):拉格朗日法插图(19)

 

接下来我们来看角速度的雅可比矩阵,我们已经知道对于旋转关节它就是旋转轴向量,对于平移关节它是0。

干货 | 机械臂的动力学(二):拉格朗日法插图(20)

 

注意这里左上角没有写参照系。

 

具体求解的时候,Jw应该在哪个参照系中呢?要求只有一个,它必须与惯性张量I所用的参照系一致。通常我们会在质心坐标系中求解惯性张量,所以我们可以用它作为参照系,把角速度写为:

干货 | 机械臂的动力学(二):拉格朗日法插图(21)

 

这样,我们的机械臂动能方程变为

干货 | 机械臂的动力学(二):拉格朗日法插图(22)

 

虽然左上角把参照系都写出来看来很繁琐,但我强烈建议你这么写,用错坐标系只会让你无论如何也得不到正确的结果。

 

最后,我们稍微整理一下:

干货 | 机械臂的动力学(二):拉格朗日法插图(23)

 

并且,我们把上式中中括号括起来的部分定义为机械臂的质量矩阵(Mass Matrix)

干货 | 机械臂的动力学(二):拉格朗日法插图(24)

 

代入欧拉拉格朗日公式

 

有了机械臂动能的表达式,我们现在需要把它放回欧拉-拉格朗日公式中:

干货 | 机械臂的动力学(二):拉格朗日法插图(25)

 

(都是向量求导——只能靠你们自己了!)

 

结果我们有

干货 | 机械臂的动力学(二):拉格朗日法插图(26)

干货 | 机械臂的动力学(二):拉格朗日法插图(27)

 

质量矩阵与关节加速度相乘的形式与质点的牛顿定律F=ma颇为相似;剩下的,我们把与关节位置和速度相关的量放到一起,记为向量v,则有

干货 | 机械臂的动力学(二):拉格朗日法插图(28)

 

最后,鉴于机械臂所受到的势能主要指重力势能,我们用向量g来表示拉格朗日方程最后一项(势能对q的导数),最终(终于!)我们有

干货 | 机械臂的动力学(二):拉格朗日法插图(29)

 

成就达成!这就是用拉格朗日法推导得到的机械臂动力学方程。

 

篇幅所限,这篇文章就写到这里——

 

v是什么?

 

g怎么求?

 

我们怎么理解质量矩阵M?

 

……

 

下一篇文章我们一起研究。

发表评论

后才能评论