机器人学第二章学习笔记

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 轴的方向服从右手规则,并构成右手坐标 系。与各坐标轴平行的单位向量记作Ag≥①:

≥=金×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 之间的关系。 我们仍然从两方面考虑:旋转和平移。三维情况  下的旋转非常复杂,我们接下来在整个小节中都 会对它进行讲解。

fcbcf041e1963a502be2be57d867eac1.png

2.2.1   三维空间姿态描述

2.2.1.1  正交旋转矩阵

正如在二维情况下一样,我们可以用相对于参考坐标系的坐标轴单位向量表示它们所在 坐标系的方向。每一个单位向量有3个元素,它们组成了3×3阶正交矩阵^R:

7894e6d86bc10631199f8e9fed62a084.png

上式将一个相对于坐标系{B}的向量旋转为相对于坐标系{A}的向量。矩阵R 属于特殊三维正交 群,或RεSO(3)CR³×3。它具有前文提到的标准正交矩阵的特性,如R¹=R- '以及det(R)=1。

分别绕x,y,z  轴旋转θ角后的标准正交旋转矩阵可表示为

1144e52732e36d610feb8d249cbc562a.png

2.2.1.2 三角度表示法

ebabc52b314be9ec1889b67776ed0476.png

但是,如果θ为负时,如

>>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  单位四元数

98013bb1f1d75fca6f530552f0a08894.png

2.2.2  平移与旋转组合

024521a60062de64e6e255bf8e0250e7.png

2.3  本章总结

在这一章中,我们学会了如何在二维和三维世界中表示点和位姿。点由坐标系的坐标向 量表示。 一个刚体上的一组点可以用一个坐标系描述,而且其组成点可由相对于刚体坐标系 的位移表示。任何坐标系相对于另一个坐标系的位置和方向,可用相对位姿ξ表示。相对位  姿可以按顺序组合(合成或复合),并且我们还演示了相对位姿如何进行代数运算的操作方法。 一个重要的代数运算法则是运算变量不可交换——相对位姿组合的顺序不可交换。

我们已经在二维和三维的情况下探讨过用正交旋转矩阵表示姿态,并用它的延伸——齐 次变换矩阵表示姿态和平移。三维下的旋转微妙且复杂,我们也看过其他表示方法,如欧拉 角、横滚-俯仰-偏航角和四元数。这些数学对象中, 一些本身就被MATLAB  支持,而另外一些 需要通过工具箱的函数或类才被支持。

本章总结了两个重要的经验。第一个是有许多数学对象都可以用来描述位姿,并在表2.1 中做出了总结。无所谓好坏——每种方法都有它的长处和短处,我们只需根据手头上要解决 的问题选择适合的方法。有时候我们想要一种向量式的描述法,这种情况下(x,y,θ)        (x,    y,z,F)      就比较适用,但这种描述不能简单地进行复合。有时我们只需要描述三维旋转,这种 情况下用I    q 就更合适。本书工具箱支持许多不同表示法之间的转换,如图2.15所示。然 而在一般情况下,本书后续章节中将主要使用齐次变换的方法。

第二个经验是:坐标系是你的朋友。在许多视觉和机器人问题中,必不可少的第一步 是给所有的对象分配坐标系,然后以有向图的形式标明相对位姿,并写出位姿的环路方程。 图2. 16教你如何在纸面外建立一个坐标系,它可以拿在手上移动和旋转   使这些思路更 直观。