【SLAM数学基础】旋转的三种数学描述及其转换

本文介绍了三维旋转矩阵在SO(3)中的性质,以及如何通过旋转矢量和四元数来表示和转换旋转。重点讲述了罗德里格斯公式、四元数的定义和在自动驾驶/机器人SLAM中的应用,包括四元数与旋转矩阵和矢量的互换关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 旋转矩阵

所有的三维旋转矩阵组成了特殊正交群(Special Orthogonal Group)SO(3),它是一个3x3的实数矩阵,满足:

  • 旋转矩阵为正交矩阵: R ⋅ R T = I ,   R − 1 = R T ; R\cdot R^T = I,~ R^{-1} = R^T; RRT=I, R1=RT;
  • 旋转矩阵的行列式为1: det ⁡ ( R ) = 1 \det(R)=1 det(R)=1.

同时,一个旋转矩阵也可以转换为四元数或旋转矢量来描述,下面会进行详细介绍。

2. 旋转矢量与旋转矩阵之间的相互转换

旋转矢量也称为角轴(Angle Axis),本身也是SO(3)对应的李代数 s o ( 3 ) \mathfrak{so}(3) so(3)由于 s o ( 3 ) \mathfrak{so}(3) so(3) 是SO(3)的切空间,所以旋转矢量也可以用于表达角速度

假设一个旋转矢量为 w ∈ R 3 \bm{w} \in R^3 wR3,且可以按照方向和大小分解为 w = θ n \bm{w} =\theta\bm{n} w=θn,那么从旋转矢量到旋转矩阵之间的转换关系,可以由罗德里格斯公式(Rodrigues’ Formula)或者SO(3)上的指数映射(Exponential Map)来描述:
R = cos ⁡ θ ⋅ I + ( 1 − cos ⁡ θ ) n n T + sin ⁡ θ ⋅ n ∧ = exp ⁡ ( w ∧ ) R=\cos\theta \cdot \bm{I} + (1-\cos \theta) \bm{n}\bm{n}^T + \sin\theta\cdot \bm{n}^{\wedge} = \exp(\bm{w}^{\wedge}) R=cosθI+(1cosθ)nnT+sinθn=exp(w)
此处的 exp ⁡ \exp exp也可以由泰勒展开化简后得到左侧公式。为了简化符号,通常可以记大写的 Exp \text{Exp} Exp为:
Exp ( w ) = exp ⁡ ( w ∧ ) \text{Exp}(\bm{w}) = \exp(\bm{w}^{\wedge}) Exp(w)=exp(w)

反过来,从旋转矩阵到旋转矢量之间的关系可以由对数映射描述:
w = log ⁡ ( R ) ∨ = Log ( R ) \bm{w} = \log(R)^{\vee} = \text{Log}(R) w=log(R)=Log(R)
其角轴的角度 θ \theta θ 计算方法为:
θ = arccos ⁡ ( t r ( R ) − 1 2 ) \theta = \arccos\left(\frac{tr(R) - 1}{2}\right) θ=arccos(2tr(R)1)
而其转轴 n \bm{n} n 则是矩阵 R R R 特征值1对应的单位特征向量:
R n = n R\bm{n} = \bm{n} Rn=n
求解此方程,再归一化就得到了旋转转轴。

3. 四元数

三维旋转也可以由单位四元数来描述。四元数是一种扩展的复数,由一个实部和三个虚部构成。它既是紧凑的,也没有奇异性,只需要存储4个数,因此在SLAM的工程代码实践中经常使用四元数来表示三维旋转。

Hamilton四元数是一种最常用、最直观的定义方式:
q = q 0 + q 1 i + q 2 j + q 3 k \bm{q}=q_0 +q_1 i + q_2 j + q_3 k q=q0+q1i+q2j+q3k
其中 q 0 q_0 q0为实部, q 1 ,   q 2 ,   q 3 q_1,~q_2,~q_3 q1, q2, q3为虚部。为了简化符号,可以把三个虚部元素记为虚部的矢量,那么四元数可以有标量部分 s s s 加矢量部分 v \bm{v} v 构成:
q = [ s , v ] T \bm{q}=[s, \bm{v}]^T q=[s,v]T

3.1 四元数的基本性质

四元数的基本性质包括加法、乘法、模长、共轭、逆、数乘等,这部分内容在网上的教程较多,在这里就不赘述,推荐一个博客:四元数的定义与属性

3.2 四元数描述旋转

可以用四元数描述对一个点的旋转。
假设有一个空间三维点 p = [ x , y , z ] ∈ R 3 \bm{p} = [x,y,z] \in R^3 p=[x,y,z]R3,以及一个由单位四元数 q \bm{q} q指定的旋转,三维点经过旋转之后变为 p ′ \bm{p}' p,如果使用矩阵描述,则有
p ′ = R p \bm{p}' = R \bm{p} p=Rp

下面介绍如何使用四元数描述这个旋转关系。

用一个虚四元数来描述三维空间点:
p = [ 0 , x , y , z ] T = [ 0 , v ] T \bm{p} = [0, x, y, z]^T = [0, \bm{v}]^T p=[0,x,y,z]T=[0,v]T
相当于把四元数的三个虚部与空间的3个轴相对应。那么旋转后的点 p ′ \bm{p}' p即可表示为:
p ′ = q p q − 1 \bm{p}' = \bm{q} \bm{p} \bm{q}^{-1} p=qpq1
这里的乘法均为四元数乘法,结果也是四元数,最后把 p ′ \bm{p}' p 的虚部去除,即得到旋转之后的坐标。

4. 四元数与旋转矩阵、旋转矢量之间的变换

由于本篇博客主要是为了便于后续使用的时候查阅,所以下面的过程都跳过数学推导而直接给出结论。

4.1 四元数与旋转矢量之间的相互变换

设四元数为 q = [ s , v ] T \bm{q}=[s, \bm{v}]^T q=[s,v]T,对应的旋转矢量为 w = θ ⋅ n = θ ⋅ [ n x , n y , n z ] T \bm{w} =\theta\cdot \bm{n} = \theta\cdot[n_x, n_y, n_z]^T w=θn=θ[nx,ny,nz]T,则从四元数到旋转矢量之间的变换关系

θ = 2 arccos ⁡ s [ n x , n y , n z ] T = v T sin ⁡ θ 2 \theta = 2 \arccos s \\ [n_x, n_y, n_z]^T = \frac{\bm{v}^T}{\sin\frac{\theta}{2}} θ=2arccoss[nx,ny,nz]T=sin2θvT

反之,从旋转矢量到四元数之间的变换关系
s = cos ⁡ θ 2 v = n ⋅ sin ⁡ θ 2 s = \cos\frac{\theta}{2} \\ \bm{v} = \bm{n} \cdot \sin\frac{\theta}{2} s=cos2θv=nsin2θ

因此四元数可表示为: q = [ cos ⁡ θ 2 , n ⋅ sin ⁡ θ 2 ] T \bm{q}=[\cos\frac{\theta}{2}, \bm{n} \cdot \sin\frac{\theta}{2}]^T q=[cos2θ,nsin2θ]T

4.2 四元数到旋转矩阵之间的相互变换

设四元数为 q = [ s , v ] T \bm{q}=[s, \bm{v}]^T q=[s,v]T,则从四元数到旋转矩阵之间的变换关系

R = v v T + s 2 I + 2 s v ∧ + ( v ∧ ) 2 R = \bm{v} \bm{v}^T + s^2 \bm{I} + 2s \bm{v}^{\wedge} + (\bm{v}^{\wedge})^2 R=vvT+s2I+2sv+(v)2

反之,从旋转矩阵到四元数之间的变换关系可以先参考第2节将旋转矩阵 R R R 转化为旋转矢量 w = θ ⋅ n \bm{w} =\theta\cdot \bm{n} w=θn,再参考4.1节将旋转矢量转换为四元数 q = [ s , v ] T \bm{q}=[s, \bm{v}]^T q=[s,v]T

R ⇒ w = θ ⋅ n ⇒ s = cos ⁡ θ 2 ,   v = n ⋅ sin ⁡ θ 2 R\quad \Rightarrow \quad \bm{w} =\theta\cdot \bm{n} \quad \Rightarrow \quad s = \cos\frac{\theta}{2}, ~\bm{v} = \bm{n}\cdot\sin\frac{\theta}{2} Rw=θns=cos2θ, v=nsin2θ

参考教程

  1. 自动驾驶与机器人中的SLAM技术:从理论到实践/高翔著. —北京:电子工业出版社,2023.8
  2. 视觉SLAM十四讲:从理论到实践/高翔等著.— 2版. —北京:电子工业出版社,2019.9
  3. 四元数的定义与属性
<think>好的,我现在需要帮助用户理解视觉SLAM数学模型,包括坐标系变换、特征点匹配和优化方法。首先,我得回忆一下用户提供的引用内容,看看哪些信息可以直接应用。 用户提到的引用[1]讲到相机成像模型和几何约束求解位姿变换,然后还原三维坐标。这应该涉及到坐标系变换,比如世界坐标系到相机坐标系的转换。引用[4]提到齐次坐标和矩阵运算,这可能和坐标系变换中的旋转矩阵和平移向量有关。 接下来是特征点匹配,用户的问题里需要这部分内容。引用[1]和[2]提到了特征点法和重投影误差,可能这里需要解释如何通过特征点匹配来建立几何约束,比如对极几何或者PnP问题。引用[3]提到了直接线性变换、P3P和非线性优化,这些方法可能用于求解位姿。 优化方法方面,引用[2]详细讨论了光束法平差(BA),使用非线性优化同时优化位姿和空间点,最小化重投影误差。引用[3]也提到了非线性优化的方法,这可能涉及到高斯-牛顿法或Levenberg-Marquardt算法。 现在需要将这三个部分组织起来:坐标系变换、特征点匹配、优化方法。每个部分都需要简明扼要地解释,并引用相关的内容。例如,坐标系变换部分需要解释旋转矩阵和平移向量,齐次坐标的转换,可能还要提到刚体变换的公式。特征点匹配需要描述特征提取和匹配的过程,以及如何用这些匹配点构建几何约束,比如对极约束中的基础矩阵或本质矩阵。优化方法部分要解释BA的原理,以及如何构建最小二乘问题,使用梯度下降或迭代方法求解。 需要注意用户提到的LaTeX格式要求,所有数学公式要用$...$或$$...$$。比如旋转矩阵的表示、重投影误差的公式等。同时,生成相关的问题,可能需要问及BA的具体实现、特征点匹配的算法比较,或不同坐标系变换的应用场景。 还需要检查是否每个引用都正确地标注在对应的内容后面,比如提到BA时引用[2],提到P3P时引用[3]等。确保回答结构清晰,分点阐述,每个部分都有小标题,并且符合用户的要求。 最后,生成相关问题时要围绕这三个主题,可能涉及深入的技术细节或比较不同方法的优缺点,比如BA的优缺点,特征点匹配中的误匹配处理等。</think>### 视觉SLAM数学模型详解 --- #### 一、坐标系变换 视觉SLAM的核心是通过传感器数据建立环境与相机的几何关系,涉及以下坐标系变换: 1. **世界坐标系 → 相机坐标系** 使用刚体变换描述,包含旋转矩阵 $R \in SO(3)$ 和平移向量 $t \in \mathbb{R}^3$: $$ P_c = R \cdot P_w + t $$ 其中 $P_w$ 是世界坐标系下的三维点,$P_c$ 是相机坐标系下的坐标[^4]。 2. **相机坐标系 → 图像坐标系** 通过针孔模型投影: $$ \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \frac{1}{Z_c} \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} X_c \\ Y_c \\ Z_c \end{pmatrix} $$ 这里 $f_x, f_y$ 为焦距,$(c_x, c_y)$ 是光心坐标,$Z_c$ 为深度值[^1]。 --- #### 二、特征点匹配 特征点是视觉SLAM中建立几何约束的基础: 1. **特征提取** 使用SIFT、ORB等算法检测关键点并生成描述子,例如ORB的二进制描述子可快速匹配。 2. **匹配构建几何约束** - **对极几何**:通过两帧图像中匹配点计算基础矩阵 $F$,满足 $x_2^T F x_1 = 0$,推导相机运动[^1]。 - **PnP问题**:已知3D点与其2D投影,求解 $R, t$,常用方法包括直接线性变换(DLT)和EPnP[^3]。 --- #### 三、优化方法 视觉SLAM通过优化方法迭代修正估计值: 1. **光束法平差(Bundle Adjustment)** 将相机位姿 $\boldsymbol{T}$ 和空间点 $\boldsymbol{P}$ 同时作为优化变量,最小化重投影误差: $$ \min_{\boldsymbol{T}, \boldsymbol{P}} \sum_{i,j} \left\| \pi(\boldsymbol{T}_i \cdot \boldsymbol{P}_j) - \boldsymbol{z}_{ij} \right\|^2 $$ 其中 $\pi(\cdot)$ 为投影函数,$\boldsymbol{z}_{ij}$ 是观测像素坐标。采用Levenberg-Marquardt算法求解[^2]。 2. **局部优化与全局优化** - 局部BA:优化局部关键帧和地图点,保证实时性。 - 全局BA:在回环检测后优化整个轨迹,消除累积误差[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值