在上一篇文章《运动学似乎已经足够了,为什么还需要动力学》中,我们谈到了动力学要研究的几个问题以及研究动力学的用途。 这篇文章的阅读量出乎意料地比其他文章多。 是不是大家都和笔者一样对这个问题感到困惑呢? 不管怎样,如果你还没有读过那本书,CC 建议你看一下。
刚体动力学
我们知道,机械臂由关节和连杆组成:关节可以对与其连接的连杆施加特定方向的力; 连杆有质量和尺寸(因此惯性张量不能忽略),不会变形。 的刚体。 可见,机械臂动力学的本质是刚体动力学。
大学物理里的刚体动力学我们都应该学过,但CC在这篇文章中依然会详细推演。 为什么? 因为仔细浏览这部分内容并清楚、透彻地理解它们对于理解更复杂的机械臂动力学问题非常重要。 如果您认为自己已经熟悉刚体动力学,可以跳过本节。
刚体动力学研究刚体的运动状态与其所受到的外力之间的关系。 这种关系可以用欧拉运动定律来描述。 欧拉运动定律是牛顿第二定律的扩展,即众所周知的 F = ma; 如果说牛顿定律描述的是抽象的“物体”或“粒子”(),那么欧拉定律则将其延伸到无数个聚集在一起形成的特定体积刚体。
欧拉第一运动定律(牛顿定律)
欧拉第一定律描述了刚体的线性运动 ( ) 与其所受到的外力之间的关系。
首先,引入线动量( )的概念,它等于物体(粒子)的质量乘以线速度。 根据牛顿第二定律(d(mv)/dt = ma = F),线动量的变化率等于物体所受的外力。
刚体可以看作是一个无限集合,刚体的线性动量等于这些线性动量的总和。 由于刚体的性质,作用在刚体上任意一点的外力同样作用在所有点上,导致它们的线性动量发生变化。所以我们有
方程的右侧可以转换为对刚体质量的积分:
矢量r表示刚体上各点在一定参考系中的位置矢量。
请注意,质心(质心)定义如下:
(下标cm代表质量)
所以我们有:
最后我们得出结论:刚体的线动量是刚体的质量与其质心线速度的乘积。 这个结论表明,在考虑刚体直线运动时,只需要考虑质心的直线运动即可。
欧拉第一定律指出,刚体的线性动量的变化率等于其上的外力:
显然,线速度的导数就是线加速度,因此欧拉第一定律也可以写成如下形式。 (经过大量推导,结论与牛顿定律几乎相同)
欧拉第二运动定律
欧拉第二定律描述了刚体的角运动 ( ) 与其所经历的力矩(力)之间的关系。 扭矩这个概念相信大家都很熟悉。 当力作用时,它相对于另一点O有一个力臂。力臂与力的叉积就是力矩。 (扭矩是矢量,不是标量,方向指向物体旋转的方向。把这个关系记录为叉积,理解会清晰很多!还有,注意叉积的顺序)
与线动量类似,我们还引入角动量( )的概念:质点相对于某一固定点的角动量等于其质量与角速度的乘积。 显然,角速度(相对于该固定点)等于该固定点到粒子的位置向量与粒子的线速度(相对于该固定点)的叉积。
那么角动量可写为:
从牛顿定律 F = ma 出发,将方程两边与位置向量叉乘可得:
所以我们可以得到类似于“物体线动量的变化等于对其施加的外力”的结论:物体的角动量的变化率等于其受到的扭矩,即
现在,我们再次需要将这个结论扩展到由无数集合组成的刚体; 这部分比第一定律的推导麻烦一点。
首先我们需要推导刚体角动量的表达式,仍然将其视为无限集,则有
请注意欧拉运动定律,我们用角速度和位置矢量的叉积代替了线速度。 对于刚体来说,刚体上每一点的角速度都是相同的,所以我们可以把它放在求和之外。 将上面的方程写成体积积分,我们有:
上图中p上方的小尖头称为叉积算子(Cross)。 该运算符将两个向量的叉积转换为矩阵乘法向量运算。对于 3×1 向量,我们有
这里,我们将上图积分方程中括号[]内的部分定义为惯性张量I:
关于惯性张量,限于篇幅,我们不再详细讨论。最终,我们得到刚体的角动量表达式为
与力是线性动量的变化率类似,刚体所经历的扭矩 ( ) 定义为刚体的角动量的变化率。 为了找到扭矩、角速度和角加速度之间的关系,我们可以求出上式两边的导数:
dw/dt显然是刚体的角加速度,但是dI/dt是什么呢? 它是张量对时间的导数,不一定等于0! 我们知道,张量是刚体上各点相对于静止参考系的位置向量进行一定运算后的体积积分。 这些位置向量随着刚体的旋转而旋转; 类似地欧拉运动定律,一点的线速度等于角速度,对位置向量求叉积,可得:
(不是严格推导!只是一种理解方式。)
最后我们得到
用表格总结刚体动力学:
牛顿欧拉法推导机械臂动力学
在花了这么多篇幅详细推导刚体动力学的欧拉运动方程之后,我们终于可以看看机械臂的动力学了。 解决机器人手臂动力学的最终目标是,如果我们需要控制机器人沿着某个轨迹运动(不要忘记轨迹是位置与时间的函数),需要多大的扭矩(旋转关节)或力(平移关节)关节)是由每个关节的驱动器施加的? 联合的)。
用牛顿欧拉方法推导机械臂的动力学,需要两个步骤:第一步是“速度和加速度的前向传递( )”:从基点开始,依次计算每个环节的速度和加速度,所有到终点执行器的方式; 齐次序列为“逆传力(·)”:从末端执行器所受的外力出发,反算出各关节的扭矩/力。 牛顿-欧拉推导机器人手臂动力学的方法是一种递归算法。
首先,查看连杆的角速度。 每个连杆的角速度等于前一个连杆的角速度加上其关节旋转引起的角速度(对于平移关节,此项为0); 据此,我们可以得到连杆角速度的传递公式。 通过对公式两边求导,我们可以进一步得到角加速度的传递公式。
其中 θ 是关节位置(旋转关节的角度),Z 是关节的旋转轴。 注意,上面的公式并没有表明每个向量使用的帧。 在实际计算中,需要使用旋转矩阵将不同参考系中的向量映射到同一参考系中。
对于线速度,每个连杆的线速度等于前一个连杆(质心)的线速度、前一个连杆的旋转引起的线速度和平移关节的线速度之和。 对方程两边求导即可得出线性加速度的传递公式。
其中d是关节位置(平移关节的平移位置),Z是关节平移方向,p是从前一个连杆的质心到当前连杆的位置向量。
有了速度和加速度的传递公式,我们就可以根据欧拉运动方程很容易计算出各连杆的惯性力和转动惯量:
现在我们来分析每个连杆上的应力。 从牛顿第三定律我们知道,力的作用是相互的,所以我们可以用fi来表示每个连杆对前一个连杆施加的力,用ni来表示它所受到的力矩。
如图所示,我们有
那么每个关节的扭矩/力是
一张图总结了这个复杂的过程(对于六自由度机械臂):
我们的标题图概念化了这个过程:
一个简单的例子
为了让大家更好地理解牛顿欧拉递归法的求解过程(也更好地理解这个方法有多么复杂),这里举一个简单的例子——一只只有一个旋转关节的机械臂。
其中,连杆长度为l,质心位于l/2处。
阶段,我们可以找到速度、加速度和惯性力。 注意,式中的s1表示sinθ1,c1表示cosθ1,g是重力加速度。
阶段,我们可以发现
最后我们得到
牛顿欧拉法的思想非常直观,过程也非常漫长和复杂。 在下一篇文章中,CC将为您讲述少一点简单粗暴多一点优雅智能的拉格朗日方法。