视觉SLAM笔记(10) 旋转向量
1. 矩阵的缺点
有了旋转矩阵来描述旋转,有了变换矩阵描述一个六自由度的三维刚体运动
是不是已经足够了呢?
但是,矩阵表示方式至少有以下几个缺点:
-
SO(3) 的旋转矩阵有九个量,但一次旋转只有三个自由度
因此这种表达方式是冗余的
同理,变换矩阵用十六个量表达了六自由度的变换
那么,是否有更紧凑的表示呢? -
旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为 1
变换矩阵也是如此
若想要估计或优化一个旋转矩阵/变换矩阵时,这些约束会使得求解变得更困难
因此,希望有一种方式能够紧凑地描述旋转和平移
2. 旋转向量
例如,用一个三维向量表达旋转,用六维向量表达变换,可行吗?
事实上,这件事在 视觉SLAM笔记(6) 坐标系 介绍外积的那部分,提到过如何用外积表达两个向量的旋转关系
对于坐标系的旋转,任意旋转都可以用一个旋转轴 和 一个旋转角来刻画
于是,可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角
这种向量,称为 旋转向量(或轴角, AxisAngle)
这种表示法只需一个三维向量即可描述旋转
同样,对于变换矩阵,使用一个旋转向量和一个平移向量即可表达一次变换
这时的维数正好是六维
事实上,旋转向量就是之后准备介绍的 李代数
所以把它的详细内容留到后面介绍,现在只需知道旋转可以这样表示即可
3. 向量和矩阵之间的转换
剩下的问题是,旋转向量和旋转矩阵之间是如何转换的呢?
假设有一个旋转轴为
,角度为
的旋转,显然,它对应的旋转向量为
由旋转向量到旋转矩阵的过程由 罗德里格斯公式(Rodrigues’s Formula )表明
由于推导过程比较复杂,不作描述,只给出转换的结果:
符号 ^ 是向量到反对称的转换符,见 视觉SLAM笔记(6) 坐标系
反之,也可以计算从一个旋转矩阵到旋转向量的转换
对于转角 ,有:
tr() 表示矩阵的迹,就是对角线上元素的和,也等于所有特征值的和
因此:
关于转轴
,由于旋转轴上的向量在旋转后不发生改变,说明
因此,转轴 n 是矩阵 R 特征值 1 对应的特征向量
求解此方程,再归一化,就得到了旋转轴
也可以从“旋转轴经过旋转之后不变”的几何角度看待这个方程
参考:
相关推荐:
视觉SLAM笔记(9) Eigen
视觉SLAM笔记(8) 齐次坐标
视觉SLAM笔记(7) 欧氏变换
视觉SLAM笔记(6) 坐标系
视觉SLAM笔记(5) 编程基础
谢谢!
转载:https://blog.csdn.net/qq_32618327/article/details/101470934