SLAM与四元数以及一些延伸
SLAM与四元数以及一些延伸
本人一直主张用到的时候再学,前几日一直被四元数是什么,以及它和我现在做的SLAM有什么关系困扰着,其实主要问题在于是后者,我大概知道它是用来表示刚体的旋转的,但并不清楚其具体原理,所以这次不得不啃一下这块的知识了(原谅我还是个弱鸡)。
1.欧拉角
在说四元数之前,不得不说以下欧拉角,它也是描述刚体旋转的一种方式,它将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步(蓝色是起始坐标系,而红色的是旋转之后的坐标系),随便贴张图:
具体的三个步骤是:
1. 绕z轴旋转α,使x轴与N轴重合,N轴是旋转前后两个坐标系x-y平面的交线
2. 绕x轴(也就是N轴)旋转β,使z轴与旋转后的z轴重合
3. 绕z轴旋转γ,使坐标系与旋转后的完全重合
以上大部分都是我贴过来的,总的概括以下就是(记住这个就够了):
将刚体绕任意轴(向量)旋转分解成绕三个基轴(向量)的旋转,但这个方法有个缺点就是万向节死锁。
2.汉密尔顿大神提出的四元数
推荐的基础知识:http://www.qiujiawei.com/understanding-quaternions/
一些大神的见解:https://www.zhihu.com/question/23005815
四元素法式对刚体旋转的另外一种描述
其实问题的关键就是怎样让旋转之后的向量仍然是个纯四元数。
3.OpenCV中的旋转表示方法
opencv使用了一个向量来表达旋转。向量的方向是旋转轴,大小则是转过的弧度.
4.旋转矩阵的转换
5.总结
到这大家是不是已经心里有个大概的框架了?四元数是什么,以及在slam中有什么用,知道这些就够啦。(由于懒的打公式,手写偏多,而且公式也容易乱码=_=,见谅)。后期有更新的见解再更新。
AutoRobot实验室:葛振华
gezh@mail.ustc.edu.cn