空间描述与变换
阅读提示: 本文是基于《机器人学导论》第三版的学习笔记,除去书中内容,有一些自己的心得和理解。所以会对一些方面进行概括,长话短说。若需要专业解释强烈建议找到原书翻看定义,收获会很大!
2.1 位置、姿态和坐标系
要描述一个机械臂的姿态,我们应当明白,假设我们要描述手的姿态,容易想知对于指端来说,操作目标物体的轨迹应当在一个坐标系内被描述。然而,对于多元件的机械臂系统来说,仅仅靠这一个坐标系是不够的,甚至很混乱。所以我们应当设立一个参考系,然后建立操作手的坐标系,这样就能完全确定操作手的位置。
因此,点的位置可用矢量描述,物体的姿态可用坐标系描述。描述连体坐标系可用固定在物体上的坐标系来描述。
我们用参考系A的三个主轴单位矢量来描述连体坐标系B。设其为,,,将这三个单位矢量排列成一个的矩阵,称其为旋转矩阵。它是一个相对表达,是坐标系B相对于坐标系A的表达,所以用符号来表示。
由两个单位矢量的点积可得到二者之间夹角的余弦,所以,旋转矩阵的各分量也常被称为方向余弦。
进一步观察式子,
因此,可得:。(重要结论)
进一步可得,旋转矩阵的逆矩阵等于它的转置:
实际上,一个正交阵的逆等于它的转置,这个结论也能很快证明上述结论。
得到了位置和姿态,描述坐标系,需要一个原点。我们为方便起见,将物体上任选的一点作为连体坐标系的原点。于是我们将一个位置矢量和一个旋转矩阵组合在一起,描述一个坐标系:
其中是确定坐标系原点的位置矢量。
特别地,如果参考系中的位置矢量是零矢量,那么它表示的就是姿态。
2.2 映射
映射描述从坐标系到坐标系的变换。
我们将讨论三种映射,并引入齐次变换矩阵这一重要工具。
2.2.1 平移坐标系的映射
这是最简单的一种映射,用矢量相加的方法表示:
2.2.2 旋转坐标系的映射
我们有之前所得的旋转矩阵的转置和逆的结论:
一个旋转矩阵即为三个一组的列向量或者三个一组的行向量:
因此,可知的分量计算如下:
写成简化形式:
问题:如何表示坐标系B相对于坐标系A绕Z轴旋转30度?Z轴指向纸面向外。
先作图:
1.在A中写出B的单位矢量,排成旋转矩阵。
得:
稍微解释一下,我们知道第一列表示的是,取单位矢量表示B的X轴在A中的位置,可由30°角得(0.866,0.5,0),其中0表示相对于Z轴无移动。以此类推。
2.已知:
3.求出:
2.2.3 一般坐标系的映射
一般坐标系的映射可以概括为两步。
首先将变换到一个中间坐标系,这个坐标系与A的姿态相同、原点与B的原点重合。这可以用左乘矩阵得到。
然后用简单的矢量加法平移原点:
更进一步地,我们可以将这组操作变换为使用一个矩阵算子表示从一个坐标系到另一个坐标系的映射。这个矩阵算子是的矩阵,将最后一行作为,在4x1矩阵中添加最后一个分量为1。亦即:
将这个4x4的矩阵称为齐次变换矩阵。由于它可以表示坐标系间的变换,所以这是一个非常重要的概念!同时可以说,将来的运算将紧紧围绕齐次变换展开,请务必巩固相关知识。
2.3 算子:平移,旋转和变换
算子:用于坐标系间点的映射的通用数学表达式。
本章主要介绍平移算子,旋转算子和平移加旋转算子。
2.3.1 平移算子
实际上我们之前已经介绍了平移的矢量计算式。本节介绍将这种运算浓缩为一个算子,对算子的表示进行进一步探讨。
我们知道平移计算方法:
用算子写出平移变换:
算子可被看做一个特殊的齐次变换阵:
由齐次变换矩阵分块可知,旋转矩阵是一个单位阵,原点阵的分量是平移矢量Q的分量。其中,。
现在我们初步认识了符号,这个符号今后将用来表示坐标系和映射。
2.3.2 旋转算子
可以用旋转变换算子来定义旋转矩阵。
旋转矩阵不涉及两个具体的 坐标系。所以,写的时候不需要写下标或上标。引入旋转矩阵,这个已经比较熟悉的公式:
用另一个符号定义旋转算子,以明确是绕哪个轴旋转:
符号是一个旋转算子,表示绕K 轴旋转θ角度。这个算子可写成齐次变换矩阵。
代入到式子:
可得:
再回到刚刚那个例子,也就是绕Z轴旋转30度。此时,旋转算子可写成:
2.3.3 变换算子
即平移加旋转的算子。一个变换通常被认为是由一个广义旋转矩阵和位置矢量分量组成的齐次变换的形式。
如下例:
小结
这几节的核心就在于这个齐次变换矩阵。它有3个定义:
-
它是坐标系的描述。
-
它是变换映射。
-
它是变换算子。
2.4 变换算法
本节介绍变换的乘法和变换的逆运算。
2.4.1 混合变换
我们有这样一个目标:即已知,求。
已知坐标系相对于坐标系,并且已知坐标系相对于坐标系。所以,我们可将变换成:
然后将变换成:
联立上两式可以得到确定解。换言之,我们实际运算中,需要寻找ab和bc的这两个变换式,实现变换的传递。
由此定义:
2.4.2 逆变换
由公式
得若需要得到A相对于B的描述,需要求这个矩阵的逆。
利用变换的性质求逆:
为了求,必须由和求出和。首先,回顾关于旋转矩阵的讨论:
其次利用
将转变成在B中的描述:
左边应为0,因为在A原点处离B原点的距离变换为在B原点处离B原点的距离就是0。所以变换后可得:
从而写出:
变换方程
回顾之前所学我们发现简单变换方程的构造依赖于三个坐标系所确定的两个变换式,那么多个坐标系也以此类推,使用的总是变换相乘的方法:
从而:
由这个变换方程我们可以解出:
从这个变换方程中我们可以得出C的两个可能的描述为:
和
例:假定已知上图中变换描述了操作臂指端的坐标系T,它是相对于操作臂基座的坐标系B的,又已知工作台相对于操作臂基座的空间位置(因为已知与工作台相连的坐标系S是),并且已知工作台上螺栓的坐标系相对于工作台坐 标系的位置,即。计算螺栓相对操作手的位姿,。
由公式推导得到相对于操作手坐标系的螺栓坐标系为:
姿态的其他描述方法
旋转矩阵又被称为标准正交矩阵。由正交矩阵的凯莱公式可得,对于任何正交阵,存在一个反对称矩阵,满足:
式中是一个单位阵。一个3维反对称阵(即)可由三个参数表示为
因此,任何3x3旋转矩阵都可以用三个参量确定。
显然,旋转矩阵的九个分量线性相关。实际上,对于一个旋转矩阵R很容易写出六个线性无关的分量。如上所述,假定R为三列:
由单位轴知识可知,三个矢量是参考坐标系中某坐标系的单位轴。每个矢量都是单位矢量,且相互垂直,所以9个矩阵元素有6个约束:
这些约束看起来非常臃肿,是否能够找到一种表达方法,用三个参量即可简便地表达?几个姿态表达法能够帮助我们做到这一点。
平移运动直观,但旋转变换往往并不直观,主要困难是旋转一般不互逆。即,与不同。频繁地输入九个元素的正交阵不是一件容易的工作,而我们引入这些姿态表达法则能简化运算。
X-Y-Z固定角
这种方法是,首先将坐标系B与一个已知参考坐标系A重合。先将B绕旋转角,再绕绕旋转角,最后绕旋转角。
每个旋转都是绕着参考坐标系A的某个轴完成的。我们称这种方法为X-Y-Z固定角。有时,我们会称这些角为回转角、俯仰角和偏转角。但是使用中约定可能不同。
此时可直接推导等价旋转矩阵:
其中是的简写,是的简写。
最重要的是搞清楚上式中的旋转顺序,将旋转看作算子,先X再Y后Z。
上式乘积后可得:
仅当旋转是按照上述顺序进行时,(2.64)才是正确的。这一点要万万记牢!
接着,不妨来看一组逆问题:
从一个旋转矩阵等价推出X-Y-Z固定角坐标系,这样的逆解取决于求解一组超越方程:如果方程相当于一个旋转矩阵,那么就有九个方程和三个未知量。在这九个方程中有六个方程是相关的,因此实际上只有三个方程和三个未知量。(超越方程:方程中有无法用自变数的多项式或开方表示的函数,常用近似解法去解,是目前计算数学中一个重要的问题)
令
由(2.64)式通过计算和的平方和的平方根,可求得。然后用除以再求其反正切可求得。那么,只要,就可以用除以,得到角,用除以,得到角,
即
式中是一个双参变量的反正切函数。
虽然存在第二个解,但在上式中取的正根以得到单解,满足。这样就可以在各种姿态表示法之间定义一一对应的映射函数。但是在某些情况下有必要求出所有的解,这在操作臂逆运动学那一章会讨论。如果(即),下式的解会退化。如此,只能求出和的和或者差。这种情况下,一般取,结果如下:
如,解得:
如,解得:
Z-Y-X欧拉角
有另外一种坐标系的表示法:首先将坐标系B与一个已知参考坐标系A重合。先将B绕旋转角,再绕旋转角,最后绕旋转角。
同样都是重合后绕三个轴旋转,但是顺序有所不同。具体可以看图,所以运算上也出现比较大的不同,必须加以区分。这种方法叫做Z-Y-X欧拉角。
绕轴旋转角使旋转到,旋转到,加撇号表明这是由欧拉角描述的旋转。
用中间坐标系和来表示