1. 旋转描述
无论是旋转矩阵、旋转向量,虽然它们能描述旋转,但对我们人类是非常不直观的
当看到一个旋转矩阵或旋转向量时,很难想象出来这个旋转究竟是什么样的
当它们变换时,其实也不知道物体是向哪个方向在转动
而欧拉角则提供了一种非常直观的方式来描述旋转
它使用了 三个分离的转角,把一个旋转分解成 三次绕不同轴的旋转
当然,由于分解方式有许多种,所以欧拉角也存在着不同的定义方法
比如说,当先绕 X 轴旋转,再绕 Y 轴,最后绕 Z 轴,就得到了一个 X Y Z 轴的旋转
同理,可以定义 YXZ、 ZYX等等旋转方式
如果讨论更细一些
还需要区分每次旋转是绕固定轴旋转的,还是绕旋转之后的轴旋转的
这也会给出不一样的定义方式
2. 欧拉角
或许在航空、航模中听说过“俯仰角”、“偏航角”这些词
欧拉角当中比较常用的一种,即“ 偏航 - 俯仰 - 滚转 ”( yaw - pitch - roll )三个角度来描述一个旋转的
由于它等价于 Z Y X 轴的旋转,就以 Z Y X 为例
假设一个刚体的前方(朝向我们的方向)为 X 轴,右侧为 Y 轴,上方为 Z 轴
那么, Z Y X 转角相当于把任意旋转分解成以下三个轴上的转角:
- 绕物体的 Z 轴旋转,得到偏航角 yaw
- 绕旋转之后的 Y 轴旋转,得到俯仰角 pitch
- 绕旋转之后的 X 轴旋转,得到滚转角 roll
此时,可以使用 [r,p,y]T 这样一个三维的向量描述任意旋转
这个向量十分的直观,可以从这个向量想象出旋转的过程
其他的欧拉角亦是通过这种方式,把旋转分解到三个轴上,得到一个三维的向量
只不过选用的轴,以及选用的顺序不一样
rpy角是比较常用的一种,只有很少的欧拉角种类会有 rpy 那样脍炙人口的名字
不同的欧拉角是按照旋转轴的顺序来称呼的
值得一提的是,大部分领域在使用欧拉角时有各自的坐标方向和顺序上的习惯,不一定都是rpy
3. 万向锁问题
欧拉角的一个重大缺点是会碰到著名的万向锁问题(Gimbal Lock):
在 俯仰角为±90° 时,Z轴的偏航旋转环 与 X轴的滚转旋转环 重叠,丢失了一个表示维度
前一次旋转与后一次旋转将使用同一个轴
整个旋转表示系统被限制在只能绕竖直轴旋转
使得系统丢失了一个自由度(由三次旋转变成了两次旋转)
这种角度为±90°的第二次旋转使得第一次和第三次旋转的旋转轴相同的现象
称作万向锁
这被称为 奇异性问题,在其他形式的欧拉角中也同样存在
理论上可以证明,只要想用三个实数来表达三维旋转时,都会不可避免地碰到奇异性问题
由于这种原理,欧拉角不适于插值和迭代,往往只用于人机交互中
很少在 SLAM程序中直接使用欧拉角表达姿态
同样不会在滤波或优化中使用欧拉角表达旋转(因为它具有奇异性)
不过,若想验证算法是否有错时,转换成欧拉角能够快速辨认结果的正确与否
参考:
相关推荐:
视觉SLAM笔记(10) 旋转向量
视觉SLAM笔记(9) Eigen
视觉SLAM笔记(8) 齐次坐标
视觉SLAM笔记(7) 欧氏变换
视觉SLAM笔记(6) 坐标系
谢谢!
转载:https://blog.csdn.net/qq_32618327/article/details/101598647