最近在研究多连杆的机器人建模,发现许多使用牛顿欧拉法的建模方式,都直接采用了如下的一条公式:
其中:
这是连杆 j 相对于惯性系的速度和角速度组成的六维向量(表示在 j 系下)。
jHj+1,代表的就是一个6维的变换矩阵,将 j+1 系下的力变换到 j 系下。
Fextj,连杆受到的外力、外力矩在 j 系下的表示。
这个公式的形式很漂亮,用起来也比较方便。但是,如果从牛顿-欧拉方程来看,很难直接推出这个公式。看了很多文献,也没有找到推导过程,于是索性自己推导了一番。
推导过程
1 问题描述
图中蓝色的物体表示一个刚体,我们选择刚体上的某一点,定义了一个与刚体固连的坐标系B,即本体系。
我们假设刚体可被视作为很多微元的组合,并且假设刚体是均匀的。
最终,我们希望得到外力与刚体相对惯性系的速度和加速度的关系式。
2 符号说明
T:代表刚体的动能
Pb:代表刚体的动量,在{B}系下的表示
Πb:代表刚体的角动量,在{B}系下的表示
Ub:代表刚体相对于惯性系的速度,在{B}系下的表示
Us:代表刚体相对于惯性系的速度,在{S}系下的表示
Vib:代表刚体微元 i 相对于惯性系的速度,在{B}系下的表示
Ωb:代表刚体相对于惯性系的角速度,在{B}系下的表示
Ωs:代表刚体相对于惯性系的角速度,在{S}系下的表示
pb:代表p向量在{B}系下的表示
ps:代表p向量在{S}系下的表示
rcb:代表rc向量在{B}系下的表示
rib:代表ri向量在{B}系下的表示
m:刚体质量
Ib:刚体的惯量矩阵,相对于{B}系的
Fextb:刚体所受合外力在{B}系的表示
Mextb:刚体所受合外力矩在{B}系的表示
3 基本原理
第一步,计算刚体的动能。
动能是个标量,在任何坐标系下表示都相等,但这个动能必须是相对惯性系而言的。
也就是说,速度和角速度必须是相对与惯性系的。
第二步,动能对速度、角速度求导,得到动量、角动量。
速度可以是表示在{B}系下的,也可以是{S}系下的。如果是相对于表示在{B}系下的速度求导,那么求出来的动量也是表示在{B}系下的。反之亦然。
第三步,动量和角动量对时间求导,得到外力。
这一步的求导需要格外注意。我们需要在惯性系下对时间求导,这样出来的才会是外力。牛顿定律只在惯性系下有效。
如何在惯性系下求导,参考博文[关于机器人运动学与动力学建模的几点领悟](https://blog.csdn.net/handsome_for_kill/article/details/96473701)
4 好戏开始
4.1 计算刚体动能
刚体的动能会等于所有刚体微元的动能之和。
即
我们知道,Vib可以被表示为:
所以,我们把公式(2)代入公式(1),可以得到:
在这部分的推导中,用到了很多公式:
最终,我们得到了动能的表达式:
4.2 计算刚体动量
动能对速度求导,得到动量:
动能对角速度求导,得到角动量:
4.3 计算与合外力的关系
首先,我们要分析,上一步算出来的刚体动量和动量矩是什么?
动量的定义没有歧义,但是动量矩有。
我们知道,根据动量矩定理,只有刚体对固定点(惯性系原点S)的动量矩对时间求导等于刚体上的合外力对该固定点的合外力矩。即:
而我们上面计算的是对动点b的绝对动量矩,它和Mb是什么关系呢?
这篇文章中就不详细推导了,这部分推导可以参见文章:机器人动力学建模之刚体动力学基础学习
这里直接给出结论:
接下来,进入正题:
注意,之前提到,这里需要在惯性系下,将动量和角动量对时间求导:
1、动量对时间求导,得到合外力:
2、根据公式(7),角动量对时间求导,得到合外力矩:
整理一下公式(7)和公式(8),得到:
整理成矩阵形式:
可以看到,这个式子和公式(0)是完全一摸一样的,推到这里我们就得到了答案。
值得注意,这里的推导用到了下面的求导方法,其中rcb是常数向量。
同理,我们有:
此外,还有:
另外,由于对于{b}系而言,Ib是常数矩阵,所以
小结
最近学习建模耽误了很多时间,其实这么老的方法,直接把论文里的公式拿来用就OK了,但是我就是控制不住自己,想要把来龙去脉搞清楚。查了很多资料都没有查到,最后只好自己动手。
当然这里也借鉴了很多地方的资料,参考如下:
UNDERWATER GLIDERS: DYNAMICS, CONTROL AND DESIGN
最后,希望本文能够对大家有所帮助!
评论(0)
您还未登录,请登录后发表或查看评论