[SLAM](3-4):欧拉角

结合 高翔老师的著作《视觉SLAM十四讲:从理论到实践》,加上小白的工程经验共同完成。建议购买纸制书籍搭配使用。    


1.欧拉角的定义

       无论是旋转向量还是旋转矩阵,虽然它们能描述旋转,但对我们人类来说是非常不直观的。当我们看到它们时,很难想象出这个旋转究竟是什么样的。  而欧拉角则提供了一种非常直观的方式来描述旋转——它使用了三个分离的转角,把一个旋转分解成三次绕不同轴的旋转。

       由于分解方式有很多种,所以欧拉角也存在着不同的定义方法。比如说,当我们先绕 X 轴旋转,再绕 Y 轴旋转,最后绕 Z 轴旋转,就得到了一个 XYZ 轴的旋转。如果讨论更细一些,还需要区分每次旋转是绕固定轴旋转的,还是绕旋转之后的轴旋转的。

2."偏航-俯仰-滚转"

   欧拉角当中比较常用的一种,便是用“偏航-俯仰-滚转”(yaw-pitch-roll)三个角度来描述一个旋转的。由于它等价于 ZYX 轴的旋转,我们就可以以 ZYX 为例。假设一个刚体的前方(朝向我们的方向)为X轴,右侧为Y轴,上方为Z轴,那么,ZYX 转角相当于把任意旋转分解成以下三个轴上的转角:

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

  此时,我们可以使用\begin{Bmatrix} r\\ p\\ y \end{Bmatrix} 这样一个三维的向量描述任意旋转。这个向量十分的直观,我们可以从这个向量想象出旋转的过程。 rpy角的旋转顺序是ZYX。

3.欧拉角的缺点

       欧拉角的一个重大缺点是会碰到著名的万向锁问题(Gimbal Lock):在俯仰角为\pm 90°时,第一次旋转与第三次旋转将使用同一个轴,使得系统丢失了一个自由度(由三次旋转变成了两次旋转)。理论上可以证明,只要我们想用三个实数来表达三维旋转时,都会不可避免地碰到奇异性的问题。由于这种原因,欧拉角适于插值迭代,往往只用在人机交互中。

       我们也很少在SLAM程序中直接使用欧拉角表示姿态,同样会在滤波优化中使用欧拉角表示旋转(因为它具有奇异性)。不过,若你想验证自己的算法是否有错时,转换成欧拉角能够快速辨认结果的正确与否。


《视觉SLAM十四讲:从理论到实践》 PDF资源

下载链接:https://download.csdn.net/user/robot_starscream/uploads

此资源仅供各位研究员试读,请购买纸质书籍。

猜你喜欢

转载自blog.csdn.net/Robot_Starscream/article/details/84674314
3-4