高翔老师SLAM14讲学习笔记
1 内外积
1.1 内积
1.2 外积
2 坐标系的欧式变换
-
直观看来由两个部分组成:
-
原点间的平移
-
三个轴的旋转
-
2.1 旋转
2.1.1 基本旋转动作
左乘:
得:
2.1.2 R矩阵性质
2.1.3 旋转变换方式
旋转矩阵描述了两个坐标的变换关系
-
比如:
-
反之:
-
于是:
-
进一步,三个坐标系亦有:
2.2 平移
2.3 换种表达
用旋转+平移方式有一点不便之处,比如发生了两次变换:
这时:
叠加起来过于复杂。
改变形式,写成:
记:;
那么多次变换就可写成:
这种用四个数表达三维向量的做法称为齐次坐标。引入齐次坐标后,旋转和平移可以放入同一个矩阵,称为变换矩阵。
目前我们一般研究三维,故有:
称为特殊欧氏群(Special Euclidean Group)。
类似的,可定义反向的变换:
2.4 例子
3 旋转向量和欧拉角
3.1 旋转向量由来
除了旋转矩阵之外,旋转是一个三自由度的东西,也就是绕着三个轴去转,用9个数去描述它(旋转矩阵是一个3x3的矩阵),这样比较浪费存储空间,旋转矩阵计算也比较麻烦,旋转矩阵本身也是带有约束的(行列式等于1,正交矩阵)。那么在旋转矩阵上做这个事情相对困难,它不能当一个普通的矩阵去做优化。如何解决这个问题呢?嘎嘎,可以换其他的表示方法,如旋转向量和欧拉角,以及后面学到的四元数。
如下:
a 到b是绕w轴旋转90°。(旋转轴和旋转角)
方向为旋转轴、长度为转过的角度,称为角轴(Angle-Axis)或旋转向量(Rotation Vector)
;
那么这就就通过了三维空间的一个向量(代替了矩阵)描述了旋转;
3.2 角轴与旋转矩阵差异总结
旋转矩阵:九个量,有正交性约束和行列式值约束
角轴:三个量,没有约束
注意它们只是表达方式的不同,但表达的东西可以是同一个
3.3 角轴与旋转矩阵转换关系
轴角转旋转矩阵:罗德里格斯公式(Rodrigues’s Formula )
(n的反对称)
旋转矩阵转轴角
角度:
轴:
(n:R特征值为1的特征向量)
4 欧拉角
欧拉角是相对于人,便以视觉观测的,可以看出大概是什么样子的。
概念:
将旋转分解为三次不同轴上的转动,以便理解
例如:按 Z-Y-X 顺序转动
轴可以是定轴或动轴,顺序亦可不同,因此存在许多种定义方式不同的欧拉角
常见的有 yaw-pitch-roll (偏航-俯仰-滚转)角等等
-
绕物体的Z轴旋转,得到偏航角yaw;
-
绕旋转之后的Y轴旋转,得到俯仰角pitch;
-
绕旋转之后的X轴旋转,得到滚转角roll。
如果用一个旋转矩阵或向量很难想象是怎么转的,用三个轴的分量便于感知如何旋转。
欧拉角为什么不适用,它存在“万向锁”的情况,如下:
ZYX顺序中,若Pitch为正负90度,则第三次旋转和第一次绕同一个轴,使得系统丢失了一个自由度——存在奇异性问题(SLAM 程序中很少直接使用欧拉角表达姿态)。
5 四元数(一种扩展复数)
5.1 概念
(二维)
四元数有三个虚部,可以表达三维空间中的旋转:
单位四元数可以表达三维空间的一次旋转。
虚部之间的关系:
自己和自己的运算像复数 ,自己和别人的运算像叉乘。
5.2 四元数的一些运算和性质
5.3 四元数和角轴的关系
角轴到四元数:
四元数到角轴:
类似可知四元数亦可转换为旋转矩阵、欧拉角。
5.4 如何旋转
5.5 实践部分
Eigen几何模块,略;