阅读提示:
本文是基于《机器人学导论》第三版的学习笔记,除去书中内容,有一些自己的心得和理解。所以会对一些方面进行概括,长话短说。若需要专业解释强烈建议找到原书翻看定义,收获会很大!
2.1 位置、姿态和坐标系
要描述一个机械臂的姿态,我们应当明白,假设我们要描述手的姿态,容易想知对于指端来说,操作目标物体的轨迹应当在一个坐标系内被描述。然而,对于多元件的机械臂系统来说,仅仅靠这一个坐标系是不够的,甚至很混乱。所以我们应当设立一个参考系,然后建立操作手的坐标系,这样就能完全确定操作手的位置。
因此,点的位置可用矢量描述,物体的姿态可用坐标系描述。描述连体坐标系可用固定在物体上的坐标系来描述。
我们用参考系A的三个主轴单位矢量来描述连体坐标系B。设其为XA,YA,ZA,将这三个单位矢量排列成一个3×3的矩阵,称其为旋转矩阵。它是一个相对表达,是坐标系B相对于坐标系A的表达,所以用符号AP来表示。

由两个单位矢量的点积可得到二者之间夹角的余弦,所以,旋转矩阵的各分量也常被称为方向余弦。

进一步观察式子,

因此,可得:ABR=BART。(重要结论)
进一步可得,旋转矩阵的逆矩阵等于它的转置:
ABRBART=AX^BTAY^BTAZ^BT(AX^BTAY^BTAZ^BT)=I3实际上,一个正交阵的逆等于它的转置,这个结论也能很快证明上述结论。
BAR=ABR−1=ABRT得到了位置和姿态,描述坐标系,需要一个原点。我们为方便起见,将物体上任选的一点作为连体坐标系的原点。于是我们将一个位置矢量和一个旋转矩阵组合在一起,描述一个坐标系:
{B}={BAR,APBORG}其中APBORG是确定坐标系原点的位置矢量。
特别地,如果参考系中的位置矢量是零矢量,那么它表示的就是姿态。
2.2 映射
映射描述从坐标系到坐标系的变换。
我们将讨论三种映射,并引入齐次变换矩阵这一重要工具。
2.2.1 平移坐标系的映射

这是最简单的一种映射,用矢量相加的方法表示:
AP=BP+APBORG2.2.2 旋转坐标系的映射
我们有之前所得的旋转矩阵的转置和逆的结论:
BAR=ABR−1=ABRT一个旋转矩阵即为三个一组的列向量或者三个一组的行向量:
BAR=(AX^BAY^BAZ^B)=BX^ATBY^ATBZ^AT因此,可知AP的分量计算如下:
Apx=BX^A⋅BPApy=BY^A⋅BPApz=BZ^A⋅BP写成简化形式:
AP=BARBP问题:如何表示坐标系B相 对于坐标系A绕Z轴旋转30度?Z轴指向纸面向外。
先作图:

1.在A中写出B的单位矢量,排成旋转矩阵。
得:

稍微解释一下,我们知道第一列表示的是AX^B,取单位矢量eb表示B的X轴在A中的位置,可由30°角得(0.866,0.5,0),其中0表示相对于Z轴无移动。以此类推。
2.已知:

3.求出:

2.2.3 一般坐标系的映射
一般坐标系的映射可以概括为两步。
首先将BP变换到一个中间坐标系,这个坐标系与A的姿态相同、原点与B的原点重合。这可以用左乘矩阵BAR得到。
然后用简单的矢量加法平移原点:
AP=BARBP+APBORG更进一步地,我们可以将这组操作变换为使用一个矩阵算子表示从一个坐标系到另一个坐标系的映射。这个矩阵算子是4×4的矩阵,将最后一行作为[0,0,0,1],在4x1矩阵中添加最后一个分量为1。亦即:

将这个4x4的矩阵称为齐次变换矩阵。由于它可以表示坐标系间的变换,所以这是一个非常重要的概念!同时可以说,将来的运算将紧紧围绕齐次变换展开,请务必巩固相关知识。
2.3 算子:平移,旋转和变换
算子:用于坐标系间点的映射的通用数学表达式。
本章主要介绍平移算子,旋转算子和平移加旋转算子。
2.3.1 平移算子
实际上我们之前已经介绍了平移的矢量计算式。本节介绍将这种运算浓缩为一个算子,对算子的表示进行进一步探讨。
我们知道平移计算方法:
AP2=AP1+AQ用算子写出平移变换:
AP2=DQ(q)AP1算子DQ(q)可被看做一个特殊的齐次变换阵:

由齐次变换矩阵分块可知,旋转矩阵是一个单位阵,原点阵的分量是平移矢量Q的分量。其中,q=qx2+qy2+qz2。
现在我们初步认识了符号DQ(q),这个符号今后将用来表示坐标系和映射。
2.3.2 旋转算子
可以用旋转变换算子来定义旋转矩阵。
旋转矩阵不涉及两个具体的坐标系。所以,写的时候不需要写下标或上标。引入旋转矩阵R,这个已经比较熟悉的公式:
AP2=RAP1用另一个符号定义旋转算子,以明确是绕哪个轴旋转:
AP2=RK(θ)AP1符号RK(θ)是一个旋转算子,表示绕K轴旋转θ角度。这个算子可写成齐次变换矩阵。
代入到式子:
BAR=(AX^BAY^BAZ^B)=BX^ATBY^ATBZ^AT可得:
RK(θ)=cosθsinθ00−sinθcosθ0000100001再回到刚刚那个例子,也就是绕Z轴旋转30度。此时,旋转算子可写成:

2.3.3 变换算子
即平移加旋转的算子。一个变换通常被认为是由一个广义旋转矩阵和位置矢量分量组成的齐次变换的形式。
如下例:
AP2=TAP1这几节的核心就在于这个齐次变换矩阵。它有3个定义:
-
它是坐标系的描述。
-
它是变换映射。
-
它是变换算子。
2.4 变换算法
本节介绍变换的乘法和变换的逆运算。
2.4.1 混合变换
我们有这样一个目标:即已知CP,求AP。
已知坐标系C相对于坐标系B,并且已知坐标系B相对于坐标系A。所以,我们可将CP变换成BP:
BP=CBTCP
然后将BP变换成AP:
AP=BATBP联立上两式可以得到确定解。换言之,我们实际运算中,需要寻找ab和bc的这两个变换式,实现变换的传递。
由此定义:
CAT=BATCBT2.4.2 逆变换
由公式
BAT=ABT−1得若需要得到A相对于B的描述,需要求这个矩阵的逆。
利用变换的性质求逆:
为了求ABT,必须由BAR和APBORG求出BAT和BPAORG。首先,回顾关于旋转矩阵的讨论:
ABR=BART其次利用
AP=BARBP+APBORG将APBORG转变成在B中的描述:
B(APBORG)=ABRAPBORG+BPAORG左边应为0,因为在A原点处离B原点的距离变换为在B原点处离B原点的距离就是0。所以变换后可得:
BPAORG=−ABRAPBORG=−BARTAPBORG从而写出:

变换方程
回顾之前所学我们发现简单变 换方程的构造依赖于三个坐标系所确定的两个变换式,那么多个坐标系也以此类推,使用的总是变换相乘的方法:

从而:

由这个变换方程我们可以解出:

从这个变换方程中我们可以得出C的两个可能的描述为:

和

例:假定已知上图中变换TBT描述了操作臂指端的坐标系T,它是相对于操作臂基座的坐标系B的,又已知工作台相对于操作臂基座的空间位置(因为已知与工作台相连的坐标系S是SBT),并且已知工作台上螺栓的坐标系相对于工作台坐标系的位置,即GST。计算螺栓相对操作手的位姿,GTT。
由公式推导得到相对于操作手坐标系的螺栓坐标系为:

姿态的其他描述方法
旋转矩阵又被称为标准正交矩阵。由正交矩阵的凯莱公式可得,对于任何正交阵R,存在一个反对称矩阵S,满足:
R=(I3−S)−1(I3+S)式中是一个3×3单位阵。一个3维反对称阵(即S=−ST)可由三个参数(sx,sy,sz)表示为
S=0sz−sy−sz0sxsy−sx0因此,任何3x3旋转矩阵都可以用三个参量确定。
显然,旋转矩阵的九个分量线性相关。实际上,对于一个旋转矩阵R很容易写出六个线性无关的分量。如上所述,假定R为三列:

由单位轴知识可知,三个矢量是参考坐标系中某坐标系的单位轴。每个矢量都是单位矢量,且相互垂直,所以9个矩阵元素有6个约束:

这些约束看起来非常臃肿,是否能够找到一种表达方法,用三个参量即可简便地表达?几个姿态表达法能够帮助我们做到这一点。
平移运动直观,但旋转变换往往并不直观,主要困难是旋转一般不互逆。即,BARCBR与CBRBAR不同。频繁地输入九个元素的正交阵不是一件容易的工作,而我们引入这些姿态表达法则能简化运算。
X-Y-Z固定角
这种方法是,首先将坐标系B与一个已知参考坐标系A重合。先将B绕X^A旋转γ角,再绕绕Y^A旋转β角,最后绕Z^A旋转α角。
每个旋转都是绕着参考坐标系A的某个轴完成的。我们称这种方法为X-Y-Z固定角。有时,我们会称这些角为回转角、俯仰角和偏转角。但是使用中约定可能不同。

此时可直接推导等价旋转矩阵BARXYZ(γ,β,α):

其中cα是cosα的简写,sα是sinα的简写。
最重要的是搞清楚上式中的旋转顺序,将旋转看作算子,先X再Y后Z。
上式乘积后可得:

仅当旋转是按照上述顺序进行时,(2.64)才是正确的。这一点要万万记牢!
接着,不妨来看一组逆问题:
从一个旋转矩阵等价推出X-Y-Z固定角坐标系,这样的逆解取决于求解一组超越方程:如果方程相当于一个旋转矩阵,那么就有九个方程和三个未知量。在这九个方程中有六个方程是相关的,因此实际上只有三个方程和三个未知量。(超越方程:方程中有无法用自变数的多项式或开方表示的函数,常用近似解法去解,是目前计算数学中一个重要的问题)
令

由(2.64)式通过计算r11和r21的平方和的平方根,可求得cosβ。然后用−r31除以cosβ再求其反正切可求得β。那么,只要cβ=0,就可以用r21/cβ除以r11/cβ,得到α角,用r32/cβ除以r33/cβ,得到γ角,
即

式中Atan2(y,x)是一个双参变量的反正切函数。
虽然存在第二个解,但在上式中取β的正根以得到单解,满足−90°≤β≤90°。这样就可以在各种姿态表示法之间定义一一对应的映射函数。但是在某些情况下有必要求出所有的解,这在操作臂逆运动学那一章会讨论。如果β=±90°(即cβ=0),下式的解会退化。如此,只能求出α和β的和或者差。这种情况下,一般取α=0.0,结果如下:
如β=90.0°,解得:

如β=−90.0°,解得:

Z-Y-X欧拉角
有另外一种坐标系的表示法:首先将坐标系B与一个已知参考坐标系A重合。先将B绕Z^B旋转α角,再绕Y^B旋转β角,最后绕X^B旋转γ角。

同样都是重合后绕三个轴旋转,但是顺序有所不同。具体可以看图,所以运算上也出现比较大的不同,必须加以区分。这种方法叫做Z-Y-X欧拉角。
绕Z^轴旋转α角使X^旋转到X^′,Y^旋转到Y^′,加撇号表明这是由欧拉角描述的旋转。
用中 间坐标系{B′}和{B′′}来表示BARZ′Y′X′(α,β,γ)。如果,把这些旋转看成是坐标系的描述,就可以立即写出:
BAR=B′ARB′′B′RBB′′R上式右边的每个旋转描述都是按照Z-Y-X欧拉 角的定义给出的,即B相对于A的最终姿态为:

结果不太直观,但是与X-Y-Z固定角所得的结果相同。
Z-Y-Z欧拉角
先将B绕Z^B旋转α角,再绕Y^B旋转β角,最后绕Z^B旋转γ角。
按照上一节的推导,可得到等效矩阵

从旋转矩阵得出Z-Y-Z欧拉角介绍如下:
已知
BARZ′Y′Z′(α,β,γ)=r11r21r31r12r22r32r13r23r33如sinβ=0,可得到
β=Atan2(r312+r322,r33)α=Atan2(r23/sβ,r13/sβ)γ=Atan2(r32/sβ,−r31/sβ)虽然存在第二个解(在式中取β的正平方根),但我们总是求满足0.0≤β≤180.0°的单解。如果β=0.0或180.0°,上式的结果就会退化。在这种情况下,仅能求出α和γ的和或差。这种情况下一般取α=0.0,结果如下:

其他角坐标系的表示法
总共有24种表示法,这三种是典型方法,都被称作角坐标系表示法。24种表示法中,12种为固定角表示法,另外12种为欧拉角坐标系法。二者有对偶性。
等效轴角坐标系表示法
这种方法是,首先将坐标系B和一个已知参考坐标系A重合,然后将B绕矢量AK^按右手定则旋转θ角。

矢量K^有时被称为有限旋转的等效轴。B相对于A的一般姿态可用BAR(K^,θ)或RK(θ)来表示,称作等效轴角坐标系表示法。确定矢量AK^只需要两个参数,因为它的长度恒等于1。角度确定了第三个参数。经常用旋转量θ乘以单位方向矢量K^形成一个简单的3×1的矢量来描述姿态,用K表示(没有“帽号”),如上图所示。
当选择A的主轴中的一个轴作为旋转轴时,则等效旋转矩阵成为我们熟悉的平面旋转矩阵:

若旋转轴为一般轴,则等效旋转阵为:
