声明:本文是深蓝学院 高翔博士主讲的《SLAM理论与实践》的学习笔记。

点与坐标关系

向量可由坐标系中的点来表达。向量运算可由坐标运算表达:

  • 加法、减法:对应坐标相加减
  • 内积:2.三维空间的刚体运动
  • 外积:2.三维空间的刚体运动

机器人在运动中涉及多种坐标系,例如 固定的世界坐标系、移动的机器人坐标系
、不同的传感器坐标系。如下图所示。

2.三维空间的刚体运动

那么问题来了:
- 如何描述坐标系与坐标系之间的变化?答案:旋转+平移
- 如何计算同一个向量在不同坐标系里的坐标?

旋转矩阵与变换矩阵表达运动

旋转
考虑一次旋转,
2.三维空间的刚体运动

2.三维空间的刚体运动

此处R称为旋转矩阵,可以验证R是一个正交矩阵且行列式为+1 (满足这两个性质的称为旋转矩阵)。

旋转矩阵的集合,称为特殊正交群SO(3):Special Orthogonal Group

 2.三维空间的刚体运动

于是,1到2的旋转可以表达为:a1=R12a2
反之2到1的旋转可以表达为:a2=R21a1

矩阵关系:R21=R121=R12T

变换矩阵

两个坐标系间的运动可用R,t完全描述。欧拉定理(Euler’s rotation theorem):刚体在三维空间里的一般运动,可分解为刚体上某一点的平移,以及绕经过此点的旋转轴的转动。

a=Ra+t

旋转加平移在表达复合情况下有不便之处。2.三维空间的刚体运动
可以使用齐次形式的坐标(Homogeneous)+变换矩阵
2.三维空间的刚体运动

此时可以方便表达复合运动。
2.三维空间的刚体运动

变换矩阵的集合称为特殊欧氏群 SE(3) (Special Euclidean Group)
2.三维空间的刚体运动

逆形式:

2.三维空间的刚体运动

更好的表达方式:旋转向量/欧拉角/四元数

除了旋转矩阵/变换矩阵之外,还存在其他的表示方式,旋转矩阵 R 有九个元素,但仅有三个自由度,能否以更少的元素表达旋转?

旋转向量

方向为旋转轴,长度为转过的角度。称为角轴/轴角(Angle Axis)或旋转向量(Rotation Vector)

旋转向量与矩阵的不同:
- 仅有三个量
- 无约束
- 更直观

它们是同一个东西的不同表达方式

  • 旋转向量->旋转矩阵:罗德里格斯公式(Rodrigues’s Formula)
    2.三维空间的刚体运动

  • 旋转矩阵->旋转向量:2.三维空间的刚体运动

欧拉角
欧拉角(Euler Angles)将旋转分解为三个方向上的转动。例,按Z-Y-X顺序转动。

  • 绕物体的Z轴旋转,得到偏航角yaw;
  • 绕旋转之后的Y轴旋转,得到俯仰角pitch;
  • 绕旋转之后的X轴旋转,得到滚转角roll

2.三维空间的刚体运动

万向锁(Gimbal Lock)
欧拉角的奇异性问题,在特定值时,旋转自由度减1;Yaw-pitch-roll顺序下,当pitch为90度时,存在奇异性
2.三维空间的刚体运动

由于万向锁的存在,欧拉角不适合插值或迭代,多用于人机交互中

可以证明:仅用三个实数表达旋转时,不可避免地存在奇异性问题

SLAM中亦很少用欧拉角表达姿态

四元数

2D 情况下,可用单位复数表达旋转,乘 i 即转90度,乘 –i 转-90度。只有一个旋转方向故而只有一个虚部。
2.三维空间的刚体运动

3D情况下,可用四元数Quaternion(作为复数的扩充),四元数有三个虚部(对应三个旋转方向)和一个实部。2.三维空间的刚体运动
虚部之间满足关系:(自己和自己的运算像复数,自己和别人的运算像叉乘)
2.三维空间的刚体运动

单位四元数可表达旋转,为理解旋转的计算方式,先看四元数间如何运算。

2.三维空间的刚体运动
2.三维空间的刚体运动

加法:
2.三维空间的刚体运动
数乘:
2.三维空间的刚体运动
求模:2.三维空间的刚体运动
共轭:2.三维空间的刚体运动
求倒:
2.三维空间的刚体运动

对应元素乘法:2.三维空间的刚体运动

特殊乘法:
2.三维空间的刚体运动

四元数到旋转向量(角轴):
2.三维空间的刚体运动

旋转向量到四元数:
2.三维空间的刚体运动

问:如何用四元数旋转一个空间点?
设点 p经过一次以 q表示的旋转后,得到了 p’,它们关系如何表示?

答:将的坐标用四元数表示(虚四元数)2.三维空间的刚体运动

旋转之后的关系为:
2.三维空间的刚体运动

四元数相比于旋转向量(角轴)、欧拉角的优势:紧凑、无奇异性

相关文章: