坐标系的位置和方向总称为坐姿

 image.png

图中的P点可以表示为image.png,运算符“·”表示将一个向量转化成一个新的向量。

相对位姿一个重要的特点就是它们可以被合成或组合,若一个坐标系可以被其它坐标系用相对位姿描述,可记为image.png,即|C|相对于|A|的位姿可由|B|相对于|A|的位姿和|C|相对于|B|的位姿合成得到。运算符“⊕”表示相对位姿的合成。

常用代数运算规则  image.png

一个位姿可以有逆位姿。位姿的代数运算规则不遵循交换律

只有当image.png时,才可以互换位置。可以用相对位姿将一个点从一个坐标系中的一个向量转换为另一个坐标系中的另一个向量:image.png

2.1二维空间位姿描述

位姿的具体表示:image.png

image.png 

 

描述点通过坐标系旋转从坐标系|B|变换到坐标系|V|:

image.png 

旋转矩阵,记作image.png

image.png 

旋转矩阵的属性:标准正交(逆矩阵和转置矩阵相同);行列式为1(image.png);

由此性质得出恒等式:image.png

描述各坐标系原点的平移:

image.png 

t=(x,y)代表坐标系的平移变换,image.png表示坐标系旋转变换

最终P点的坐标向量可以用齐次形式表达为

image.png 

称为齐次转换矩阵,且代表了相对位姿:image.png

2.2三维空间位姿描述

image.png 

2.2.1三维空间姿态描述

2.2.1.1正交旋转矩阵

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

image.png 

计算Rx(θ)的函数为:

image.png 

计算Ry(θ和)Rz(θ)分别用函数roty和rotz

绘制相应坐标系用image.png

绘制旋转动画用image.png

2.2.1.2三角度表示法

旋转顺序分为两种:欧拉式和卡尔丹式。共十二种形式,统称为欧拉角

ZYZ序列的欧拉角表示为image.png

另一种广泛使用的旋转角顺序:横滚-俯仰-偏航角image.png

(指分别绕x轴,y轴,z轴旋转,即专业上的卡尔丹角,也称泰勒-布莱恩角或导航角。可直观描述船舶,飞机和车辆)

2.2.1.3奇异点及万向节锁

万向节锁问题发生在:

ZYZ形式:image.png

横滚-俯仰-偏航角:image.png

2.2.1.4双向量表示法

image.png 

接近向量:image.png

姿态向量:image.png

确定旋转矩阵:

image.png

image.png

对于一个摄像头,取光轴为z轴,摄像头左侧为x轴

对于移动机器人,规定重力加速度方向为z轴,前进方向为x轴

2.2.1.5绕任意向量旋转

以先前使用过的一个旋转image.png

可以确定如下的角度和向量

image.png 

theta是旋转角度的大小,v是绕其旋转的向量

使用MATLAB的内部函数eig可以求R的特征值和特征向量:

image.png 

lambda中的对角线元素是返回的特征值,v中对应的列向量为相应的特征向量

旋转轴是特征值为1所对应的那一列

使用罗德里格斯旋转方程,可以从角度和向量计算相应的旋转矩阵:

image.png 

2.2.1.6单位四元数

四元数是复数的一种扩展,或叫超复数,记作:

image.png 

表示为image.png

为了描述坐标系的旋转,我们使用单位四元数

单位四元数可以被看作绕单位向量n旋转了θ角,该旋转与四元数组的关系为

image.png 

四元数的乘法通过重载乘法运算符调用:

image.png 

求一个四元数的共轭为

image.png 

一个四元数乘以它的逆四元数为

image.pngimage.png

得出一个四元数,它代表一个无效循环。

一个四元数可以用以下方式转化成一个正交旋转矩阵:

image.png 

以下函数绘制一个四元数所指方向:

image.png 

将一个三元向量传递给构造函数,将产生一个纯四元数:

image.png 

其中的标量为0.使用重载的乘法运算符,一个向量可以被一个四元数旋转:

image.png 

2.2.2平移与旋转组合

方法:四元数向量对和4×4齐次变换矩阵

1、对于向量-四元数的情况,有image.png

变换:image.png

2、image.png

许多函数可以创建齐次转换,例如:image.png

用如下函数绘制相应坐标系:

image.png 

提取矩阵T中旋转矩阵部分,可用:

image.png 

提取平移部分,可用:

image.png 

本章总结

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

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