史上最简SLAM零基础解读(8.1) - 旋转矩阵、旋转向量、欧拉角推导与相互转换

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始
 
文 末 正 下 方 中 心 提 供 了 本 人 联 系 方 式 , 点 击 本 人 照 片 即 可 显 示 W X → 官 方 认 证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} WX
 

一、前言

为了大家方便查询,先结论,再给出推导过程(四元数的相关知识,公式转换与过程推导在下一篇博客)

1、旋转矩阵→旋转向量、欧拉角:

2、旋转向量→旋转矩阵、欧拉角:

3、欧拉角→旋转矩阵、旋转向量:

 

二、旋转矩阵

关于旋转矩阵的推导,大家可以参考之前的博客:
史上最简SLAM零基础解读(1) - 旋转平移矩阵→欧式变换推导
这里就不再次进行讲解了
 

三、旋转向量

1、理论阅读

首先要了解什么是旋转向量,来看看《视觉SLAM十四讲》第二版第3讲(三维空间刚体运动):有了旋转矩阵来描述旋转,有了变换矩阵描述一个 自由度的三维刚体运动,是不是已经足够了呢?矩阵表示方式至少有以下两个缺点:
        1.SO(3) 的旋转矩阵有9个量,但一次旋转只有3个自由度。因此这种表达方式是冗余的。同理,变换矩阵用 16 个量表达了 自由度的变换。那么,是否有更紧凑的表示呢?
        2. 旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为 。变换矩阵也是如此。当想估计或优化一个旋转矩阵或变换矩阵时,这些约束会使得求解变得更困难。

因此,我们希望有一种方式能够紧凑地描述旋转和平移。例如,用一个三维向量表达旋转,用一个六维向量表达变换,可行吗?事实上,任意旋转都可以用一个旋转轴和一个旋转角来刻画。于是,我们可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角。这种向量称为旋转向量(或轴角/角轴, Axis-Angle) ,只需一个三维向量即可描述旋转。同样,对于变换矩阵,我们使用一个旋转向量和一个平移向量即可表达一次变换。这时的变量维数正好是六维。

考虑某个用 R \mathbf R R 表示的旋转。如果用旋转向量来描述,假设旋转轴为一个单位长度的向量 n \mathbf n n 角度为 那么向量。"也可以描述这个旋转。于是,我们要问,两种表达方式之间有什么联系吗?事实上推导它们的转换关系并不难。从旋转向量到旋转矩阵的转换过程由罗德里格斯公式(Rodrigues’s Formula) 表明,由于推导过程比较复杂,这里不做描述,只给出转换的结果:
R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) n n T + sin ⁡ θ n ∧ . (01) \color{green} \tag{01} \boldsymbol{\mathbf R}=\cos \theta \boldsymbol{\mathbf I}+(1-\cos \theta) \mathbf n \mathbf n^{\mathrm{T}}+\sin \theta {\mathbf n}^{\wedge} . R=cosθI+(1cosθ)nnT+sinθn.(01)从这里,对于旋转矩阵有了大致的了解,那么下面就来推导以下 罗德里格斯公式 吧!

2、公式推导

 
 
 

你可能感兴趣的:(史上最全slam从零开始,矩阵,增强现实,自动驾驶,机器人,无人机)