小言_互联网的博客

视觉SLAM笔记(10) 旋转向量

238人阅读  评论(0)


1. 矩阵的缺点

有了旋转矩阵来描述旋转,有了变换矩阵描述一个六自由度的三维刚体运动
是不是已经足够了呢?

但是,矩阵表示方式至少有以下几个缺点:

  1. SO(3) 的旋转矩阵有九个量,但一次旋转只有三个自由度
    因此这种表达方式是冗余的
    同理,变换矩阵用十六个量表达了六自由度的变换
    那么,是否有更紧凑的表示呢?

  2. 旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为 1
    变换矩阵也是如此
    若想要估计或优化一个旋转矩阵/变换矩阵时,这些约束会使得求解变得更困难

因此,希望有一种方式能够紧凑地描述旋转和平移


2. 旋转向量

例如,用一个三维向量表达旋转,用六维向量表达变换,可行吗?
事实上,这件事在 视觉SLAM笔记(6) 坐标系 介绍外积的那部分,提到过如何用外积表达两个向量的旋转关系

对于坐标系的旋转,任意旋转都可以用一个旋转轴一个旋转角来刻画

于是,可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角
这种向量,称为 旋转向量(或轴角, AxisAngle)

这种表示法只需一个三维向量即可描述旋转
同样,对于变换矩阵,使用一个旋转向量一个平移向量即可表达一次变换
这时的维数正好是六维

事实上,旋转向量就是之后准备介绍的 李代数
所以把它的详细内容留到后面介绍,现在只需知道旋转可以这样表示即可


3. 向量和矩阵之间的转换

剩下的问题是,旋转向量和旋转矩阵之间是如何转换的呢?
假设有一个旋转轴为 n n ,角度为 θ θ 的旋转,显然,它对应的旋转向量为 θ n θn
由旋转向量到旋转矩阵的过程由 罗德里格斯公式(Rodrigues’s Formula )表明
由于推导过程比较复杂,不作描述,只给出转换的结果:

符号 ^ 是向量到反对称的转换符,见 视觉SLAM笔记(6) 坐标系

反之,也可以计算从一个旋转矩阵到旋转向量的转换

对于转角 θ θ ,有:


tr() 表示矩阵的迹,就是对角线上元素的和,也等于所有特征值的和
因此:

关于转轴 n n ,由于旋转轴上的向量在旋转后不发生改变,说明

因此,转轴 n 是矩阵 R 特征值 1 对应的特征向量
求解此方程,再归一化,就得到了旋转轴
也可以从“旋转轴经过旋转之后不变”的几何角度看待这个方程


参考:

《视觉SLAM十四讲》


相关推荐:

视觉SLAM笔记(9) Eigen
视觉SLAM笔记(8) 齐次坐标
视觉SLAM笔记(7) 欧氏变换
视觉SLAM笔记(6) 坐标系
视觉SLAM笔记(5) 编程基础


谢谢!


转载:https://blog.csdn.net/qq_32618327/article/details/101470934
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场