机器人学第二章学习笔记
2.1 二维空间位姿描述
二维世界或平面,是我们在高中学习欧几里得几何时就熟悉的。笛卡儿坐标系,或以x 轴和y 轴为正交轴的坐标系,通常绘制成x 轴水平、y 轴竖直,两轴的交点称为原点。平行于坐标轴的单 位向量用金和表示。 一个点用其在x 轴和y 轴上 的坐标(x,y) 表示,或者写为有界向量:
p=xt+yg (2.2)
在图2.6中的一个坐标系{B}, 我们希望用参 照系{A}来描述它。可以清楚地看到,{B} 的原点 已被向量t=(x,y) 所取代,然后逆时针旋转一个 角度θ。因此,位姿的一个具体表示就是三维向 量^ξg~(x,y,θ),我们使用符号~表示这两种表示是等价的。遗憾的是,这种表示方法不方便复合,因为
(xj,y,θ)田(xz,y₂,θ₂)
两边的位姿都是复杂的三角函数。所以,我们将使用一种不同的方法来表示旋转。
2.2 三维空间位姿描述
三维情况实际上是前一节讨论的二维情况的延伸。我们在二维坐标系上增加一个额外的 坐标轴,通常用z 表示,它同时与x 轴和y 轴正交。 z 轴的方向服从右手规则,并构成右手坐标 系。与各坐标轴平行的单位向量记作A、g和≥①:
≥=金×g, 金=9×2;9=≥×金 (2.11)
坐标系中的一个点P 可用其x,y 和 z 的坐标值(x,y,z) 或者一个约束向量表示:
P=xt+yg+z≥
图2.9展示了一个相对于参考坐标系{A} 的 坐标系{B} 。可以清楚地看到,{B} 的原点通过 向量t=(x,y,z) 进行平移,然后再通过某种复 杂方式进行了旋转。正如二维情况一样,我们如 何表示坐标系之间的方向是非常重要的。
我们的做法还是从相对于每个坐标系的任意 一 点P 出发,然后再确定^P 和 P 之间的关系。 我们仍然从两方面考虑:旋转和平移。三维情况 下的旋转非常复杂,我们接下来在整个小节中都 会对它进行讲解。
2.2.1 三维空间姿态描述
2.2.1.1 正交旋转矩阵
正如在二维情况下一样,我们可以用相对于参考坐标系的坐标轴单位向量表示它们所在 坐标系的方向。每一个单位向量有3个元素,它们组成了3×3阶正交矩阵^R。:
上式将一个相对于坐标系{B}的向量旋转为相对于坐标系{A}的向量。矩阵R 属于特殊三维正交 群,或RεSO(3)CR³×3。它具有前文提到的标准正交矩阵的特性,如R¹=R- '以及det(R)=1。
分别绕x,y,z 轴旋转θ角后的标准正交旋转矩阵可表示为
2.2.1.2 三角度表示法
但是,如果θ为负时,如
>>R =eul2r(0.1 ,-0.2,0.3)
R =
0.9021 -0.3836 -0.1977
0.3875 0.9216 -0.0198
0.1898 -0.0587 0.9801
其反函数结果为
>>tr2eul(R)
ans =
-3.0416 0.2000 -2.8416
它返回了一个正的θ值和两个不同的φ、ψ值。但这组欧拉角对应的旋转矩阵仍与前一组是相
同的:
>>eul2r(ans)
ans =
0.9021
0.3875
0.1898
-0.3836
0.9216
-0.0587
-0.1977
-0.0198
0.9801
两组不同的欧拉角对应同一个旋转矩阵,说明从旋转矩阵到欧拉角的映射是不唯一的,而工具箱函数返回的角度θ始终为正。
对于θ=0的情况:
>>R =eul2r(0.1 ,0,0.3)
R=
0.9211 -0.3894 0
0.3894 0.9211 0
0 0 1.0000
反函数返回的角度值为
>>tr2eul(R)
ans =0.4000
它与原值完全不同。其实在这种情况下,从式(2.13)得出的旋转矩阵是
R=R₂(φ)R₂(ψ)=R₂(φ+ψ)
由于R,=I, 所以可化简为只是φ+ψ的一个函数。对于逆运算而言,只能确定这个和的值。 要想得到其中每个值,只能按惯例取φ=0。
R=R(0,)R,(O₂)R(B,) (2.14)
2.2.1.3 奇异点及万向节锁
从数学(而非机械)上看,这个问题可以通过建立一种登月舱坐标系来解释,其中固联在 飞船机体上的坐标系{B} 相对于固联在稳定平台上的坐标系{S} 做旋转,并且可以表示为
SRg=R,(0,)R₂(Q,)R(8,)
当0,=π/2时,可以应用循环旋转规则得到下面的恒等式:①
R,(0)R()=R (号)R(O)
进而得到
SRa=R₁()R(0,)R,(0,)=R₂(5)R(O₂+θ,)
上式中没有表示出飞船绕y 轴的旋转。这就带来了问题,因为航天器绕y 轴的旋转将使稳定 平台也旋转,从而破坏其相对于恒星的精确对准。
2.2.1.5 绕任意向量旋转
对于空间中两个任意姿态的坐标系,总可以在空间里找到某个轴,使其中一个坐标系绕该 轴旋转一个角度就能与另一个坐标系姿态重合。以先前使用过的一个旋转
>>R=rpy2r(0.1,0.2,0.3);
我们可以确定如下的一个角度和一个向量:
>>[theta,v]=tr2angvec(R)
theta =
0.3816
V=0.3379 0.4807 0.8092
其中, theta 是旋转的角度大小, v 是绕其旋转的向量①。
这些信息实际上包含在R 的特征值和特征向量中。使用MATLAB 的内部函数eig 可以
求矩阵的特征值和特征向量:
>>[v,lambda]=eig(R)
V=
0.6655 0.6655
-0.1220 -0.6079i -0.1220
-0.2054 +0.3612i -0.2054
lambda =
+0.6079i
-0.3612i
0.3379
0.4807
0.8092
矩阵lambda 中的对角线元素即返回的特征值,其相应的特征向量位于矩阵v 中对应的列向量。
2.2.1.6 单位四元数
2.2.2 平移与旋转组合
2.3 本章总结
在这一章中,我们学会了如何在二维和三维世界中表示点和位姿。点由坐标系的坐标向 量表示。 一个刚体上的一组点可以用一个坐标系描述,而且其组成点可由相对于刚体坐标系 的位移表示。任何坐标系相对于另一个坐标系的位置和方向,可用相对位姿ξ表示。相对位 姿可以按顺序组合(合成或复合),并且我们还演示了相对位姿如何进行代数运算的操作方法。 一个重要的代数运算法则是运算变量不可交换——相对位姿组合的顺序不可交换。
我们已经在二维和三维的情况下探讨过用正交旋转矩阵表示姿态,并用它的延伸——齐 次变换矩阵表示姿态和平移。三维下的旋转微妙且复杂,我们也看过其他表示方法,如欧拉 角、横滚-俯仰-偏航角和四元数。这些数学对象中, 一些本身就被MATLAB 支持,而另外一些 需要通过工具箱的函数或类才被支持。
本章总结了两个重要的经验。第一个是有许多数学对象都可以用来描述位姿,并在表2.1 中做出了总结。无所谓好坏——每种方法都有它的长处和短处,我们只需根据手头上要解决 的问题选择适合的方法。有时候我们想要一种向量式的描述法,这种情况下(x,y,θ) 或 (x, y,z,F) 就比较适用,但这种描述不能简单地进行复合。有时我们只需要描述三维旋转,这种 情况下用I 或 q 就更合适。本书工具箱支持许多不同表示法之间的转换,如图2.15所示。然 而在一般情况下,本书后续章节中将主要使用齐次变换的方法。
第二个经验是:坐标系是你的朋友。在许多视觉和机器人问题中,必不可少的第一步 是给所有的对象分配坐标系,然后以有向图的形式标明相对位姿,并写出位姿的环路方程。 图2. 16教你如何在纸面外建立一个坐标系,它可以拿在手上移动和旋转 — — 使这些思路更 直观。
评论(0)
您还未登录,请登录后发表或查看评论