摘要:小伙伴在学习高博的《视觉SLAM十四讲》的时候,对罗德里格斯公式理解比较抽象,所以本次对该公式进行理论推导,并且整理该讲内容,其中有错误的地方,望指正。
一.罗德里格斯公式的推导
1.该公式的推导,主要的步骤有两个:
第一:寻找到一个向量,该向量与向量α的向量积=向量b
第二:将寻找到的这个向量转化成对应的反对称矩阵
其中旋转轴用单位向量表示
说明:这里是不是感觉和SLAM十四讲上面的公式不一样,刚开始推导出来,对比之后发现,确实不一样。反复检查几次,发现推导过程并没有太大错误。确实这个过程是没啥问题的,只是这个环节还差一步,关于反对称矩阵与向量之间的变换关系(这个公式是李群李代数里面的,具体推导只能再另外一篇博文中阐述了)。把这个公式代入:
2.公式推导分步解释
2.1旋转向量与反对称矩阵之间的关系(这个过程建立三维旋转向量与对应反对称矩阵的关系)
其中:
2.2向量积(叉乘)
(为什么说明这一步,因为我在推导的过程中,由于向量积的基础知识不牢固,这里卡壳了两天)
2.3向量的投影
二.变换矩阵与齐次坐标系(旋转、平移)
1.向量
2.向量的内积
3.向量的外积
4.正交矩阵的性质补充
5.向量的旋转
向量的旋转与向量的外积(叉乘):旋转轴方向与一致。旋转的角度
6.坐标系的旋转
三维直角坐标系的三个轴的相对位置永远保持一致(刚体),只需要对一个向量如:旋转平移,整个坐标系就完成了变换操作
6.1刚体的变换(坐标系的欧式变换)
三.坐标变换:缩放、平移、旋转(欧拉角)
这个过程主要是能够直观的理解坐标系的变换(此步可以跳过)
1.缩放
其中Sc是缩放比例
2.平移
3.旋转
3.1二维坐标系旋转
3.2三维坐标系旋转
4.欧拉角和万向锁
我们以rpy角进行旋转(即旋转顺序为ZYX:绕Z轴旋转得到偏航角yaw,绕旋转后的Y轴旋转得到俯仰角pitch,绕旋转后的X轴旋转,得到滚转角roll,这里和我们前面的分步旋转顺序是相反的,尽量和SLAM十四讲中的内容一致,所以我们把前面的内容调整一下,就是简单的调整一下左乘矩阵的顺序)
下面我们在hypermesh中创建坐标系,实际演示一下,坐标系旋转的实现过程。
从旋转过程可以看出,在绕Z轴旋转和绕X轴旋转的时候,其实坐标轴都是绕同一的向量(世界坐标系的轴)在旋转。这个就是万向锁问题。这个过程将三个旋转向量(轴)变换,丢失一个一个旋转。