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

posted @ 2017-07-03 11:04  实事求是>_<  阅读(511)  评论(0编辑  收藏  举报