天天看点

《机器人与数字人:基于MATLAB的建模与控制》——3.2节线速度和角速度

本节书摘来自华章社区《机器人与数字人:基于matlab的建模与控制》一书中的第3章,第3.2节线速度和角速度,作者[美]顾友谅(edward y.l.gu),更多章节内容可以访问云栖社区“华章社区”公众号查看

3.2线速度和角速度

为了求得给定的3×1位置向量p∈瘙綆3所表示平移运动的瞬时速度,即通常的刚体运动的线速度,可以简单地对位置向量p按时间求导,即v=。但是在求导之前,需要先完成一些准备工作,必须先把位置向量p投影到一个固定的基础坐标系上,而不能是移动的坐标系上。也就是说,如果pi当前投影到一个非固定坐标系i上,那么必须找到坐标系i相对于基础坐标系的方向矩阵rib,在计算线速度vb=b之前,需要先求pb=ribpi。原因很明显,vb=b=ibpi+ribi≠ribi,除非rib是常数矩阵,然而计算很繁琐而且这表明坐标系i是不动的。

相比之下,求解一个坐标系i相对于基础坐标系的角速度ω的过程,比线速度求解过程要复杂得多。因为并没有一个有效的3×1向量来唯一表达坐标系的旋转运动。只有数学中的so(3)群可以唯一地、稳妥地表示坐标系的方向和旋转运动。一般来说,一个3×1的角速度ω并不完全是某个3×1向量的时间导数。换言之,不存在角位置向量ρ∈瘙綆3,使得ω=,除非旋转运动是绕着一个固定轴进行的,如二维自旋。当使用外微积分时,第一类微分σ=ωdt 是不恰当的,也通常是不闭合的。

为了更好地理解和洞察三维旋转运动和方向的本质,需要寻找角速度ω的传统定义和旋转矩阵r∈so(3)的时间导数之间的关系。

基于旋转矩阵r∈so(3)的正交特性,可以得到,rrt = i。两边分别对时间求导,可得出:

用rt右乘,其中rt可以在式(210)中求出,同时注意第2章中所有的单位斜对称矩阵k所拥有的特性,最后可以得到

这个简洁的公式,即Ω=rt,直接得到一个关于的坐标系的方向变化速率与传统坐标系旋转角速度ω之间的关系。

为了更好地理解由式(310)得到的式子Ω=rt的几何意义,用矩阵r10表示给定坐标系1相对于基础坐标系0的方向。希望坐标系1通过改变方向得到坐标系2,坐标系2相对于基础坐标系的方向用矩阵r20表示。所以,两个方向的“差”可以表示为r21=r01r20=(r10)tr20,在k过程中,将式(29)和式(211)应用在r21上,能够求出做这样方向变化的和k。直观看来,这种方向的变化既可以用矩阵r21关于时间的变化率来表示,也可以用式(38)中定义的传统角速度ω=k来表示。

现在,式(310)给出了一种重要的、紧密的关系式。因为单位向量k是关于坐标系1的,所以Ω=ω×也应该投影到坐标系1上,而不是基础坐标系上。注意,当利用k过程从矩阵r21中确定了和k以后,单位向量k就要作为固定的轴保持不动,直到r21变化完成。如果方向再次变化,如从坐标系2到坐标系3的变换r32,那么要再次计算出新的和 k。一般来说,新的k不必和第一次产生的相同。这意味着式(38)定义的传统角速度中的单位向量k是暂时固定的,但并不是一直不变的。

举一个简单例子,假设一个坐标系绕本身的z轴以ρ rad/s的角速度旋转。根据式(22),这个旋转运动的矩阵可以写成:

是一个斜对称矩阵,其相应向量刚好是这个特定坐标系绕z轴旋转的三维角速度ω=(00ρ)t,这个向量只有z分量是非零的。

又如,计算欧拉角的导数,并证明从式(310)导出的简洁的等式Ω=rt的实用性。设一个rollpitchyaw欧拉角形成的旋转矩阵为r。根据式(37)有

这个结果表明了rollpitchyaw欧拉角的时间导数和角速度ω之间的关系。因为式(312)右边的一列()t时间导数的3×3系数矩阵不再是单位矩阵或常数矩阵,所以第一类微分σ=ωdt几乎是不成立的。换句话说,欧拉角的角速度ω不可能是rollpitchyaw欧拉角的时间导数。

按照相同的过程,可以求出zyz欧拉角的导数和角速度ω之间的关系。这项工作留作本章结尾部分的练习题。

在将来的计算过程中,通常有这样一个问题:如果一个斜对称矩阵s(a)=a×变化了,其相应的向量a是否会被投影到一个新的坐标系上?

类似的,在式(310)中,怎样将关于坐标系1的角速度ω1对应的斜对称矩阵Ω1转换成关于基础坐标系的Ω0?假设重新投影用旋转矩阵r来表示,希望知道s(ra)的表达式是什么。事实上,可以使用s(ra)r和rs(a)的元素间相乘的展开来证明,即

上式意味着,如果=0,则ω=。但是,在k过程中,k轴对于一个给定方向变化r的旋转过程,仅仅是暂时固定的,并不是永久固定的。事实上,在下一章将看到,对于角速度ω,即使投影到一个固定的基础坐标系上,第一类微分ωdt=σ也并不是闭合的,即在许多一般的实例中,它的第二类微分dσ≠0。

此外,如果使用第2章中引用的对偶数值计算,在求解角速度ω时,从数值上计算所需要的更容易,而且不需要任何符号操作。假设一个符号旋转矩阵是机器人的两个关节转角θ1和θ2的函数,即:

式中,si=sinθi且ci=cosθi,i=1, 2。假设指定一个时间点,θ1=π/6且θ2=π/3,单位为弧度,同时,1=04,2=-06,单位为弧度/秒。用θi+i替代给定矩阵r中的每一个θi,

然后把对偶旋转矩阵r∧=r+拆分出实数部分和对偶部分,利用matlab直接就能得到数值上的r和,并进一步得到Ω=rt。

所以,角速度的解ω=(-030000519604000)t。