李群李代数知识整理

反反复复看过很多次,总是有些地方不太明白,希望通过整理,再有一些新的认识。

参考:

李群李代数转换关系

视觉SLAM14讲 第4讲 https://zhuanlan.zhihu.com/p/33156814

https://blog.youkuaiyun.com/heyijia0327/article/details/50446140

群(group)是一种集合加上一种运算代数结构。把集合记为 \mathbf{A} ,运算记为 \cdot , 群就可以记为 \mathbf{G}=(\mathbf{A},\ \cdot) 。而这个运算必须满足以下条件:

  1. 封闭性: \forall a_1,a_2 \in \mathbf{A},\ a_1 \cdot a_2 \in \mathbf{A}
  2. 结合律: \forall a_1,a_2,a_3 \in \mathbf{A},\ (a_1 \cdot a_2) \cdot a_3 = a_1\cdot (a_2 \cdot a_3)
  3. 幺元: \exists a_0 \in \mathbf{A},\ s.t. \ \forall a \in \mathbf{A}, a_0 \cdot a = a \cdot a_0
  4. 逆: \forall a \in \mathbf{A},\exists a^{-1} \in A, \ s.t.\ a \cdot a^{-1}=a_0

李群

李群就是具有连续(光滑)性质的群。

三维旋转矩阵构成了特殊正交群 SO(3),变换矩阵构成了特殊欧式群 SE(3)。

李代数

李代数描述了李群的局部性质。

李代数的必要性:

考虑问题:假设某个时刻我们预测机器人的位姿为 \mathbf{T} (待定值), 观测到了一个惯性坐标系下的点 \mathbf{p} 而产生了一个观测数据 \mathbf{z}

机器人的位姿估计即为寻找一个最优的 \mathbf{T} 使得整体的误差最小化:

\mathop{\min}_{T} J(\mathbf{T})=\sum\limits^N_{i=1}||\mathbf{z}_i-\mathbf{T}\mathbf{p}_i||^2_2

如上最小二乘问题,一般利用初始值+梯度进行自变量更新,计算导数时需要用到加法,但是李群对加法不具备封闭性,遂引入李代数。

李代数的引出

考虑任意的旋转矩阵 \mathbf{R} ,有

\mathbf{R}\mathbf{R}^T=\mathbf{I}

因为机器人在不断运动,所以 \mathbf{R} 也在随时间不断变换,引入时间t 就得到 \mathbf{R}(t) ,上式也变成

\mathbf{R}(t)\mathbf{R}(t)^T=\mathbf{I}

等式两边一起对时间求导可得:

\dot{\mathbf{R}}(t)\mathbf{R}(t)^T+\mathbf{R}(t)\dot{\mathbf{R}}(t)^T=0

亦即

\dot{\mathbf{R}}(t)\mathbf{R}(t)^T=-\mathbf{R}(t)\dot{\mathbf{R}}(t)^T=-(\dot{\mathbf{R}}(t)\mathbf{R}(t)^T)^T

一个矩阵等于其自身转置后取负号,可知 \dot{\mathbf{R}}(t)\mathbf{R}(t)^T 是一个反对称矩阵。我们之前就介绍过反对称矩阵和^ 符号,可知对应地,对于任意的反对称矩阵,可以找到一个与之对应的向量,这个关系可以用 ^\vee 来表示:

\mathbf{a}^\wedge=\mathbf{A}= \begin{bmatrix} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \\ \end{bmatrix} , \ \ \mathbf{A}^\vee=\mathbf{a}

设这个对应的向量为 \phi(t)\in R^3 ,就有

\dot{\mathbf{R}}(t)\mathbf{R}(t)^T=\phi(t)^\wedge

等式两边同时右乘 \mathbf{R}(t) 则有

\dot{\mathbf{R}}(t)=\phi(t)^\wedge\mathbf{R}(t)

从式(11)(上式) 可以看到,每对旋转矩阵求一次导数,只需要左乘一个 \phi(t)^\wedge 就可以了。假设t0 = 0 并设此时 \mathbf{R}(0)=\mathbf{I} ,对式(10) 进行一阶泰勒展开就有:

\mathbf{R}(t) \approx \mathbf{R}(t_0)+\dot{\mathbf{R}}(t_0)(t-t_0)=\mathbf{I}+\phi(t_0)^\wedge \cdot (t)

NOTE: \phi 反应了 \mathbf{R} 的导数的性质,故称它在SO(3) 原点附近的正切空间(Tangent Space)上。

同时,在t0 附近,设 \phi 也是一个常数,即 \phi(t_0)=\phi_0 ,根据式(11) 就有

\dot{\mathbf{R}}(t)=\phi(t_0)^\wedge\mathbf{R}(t)=\phi_0^\wedge\mathbf{R}(t)

显然,上式是一个关于 \mathbf{R} 的微分方程,而且知道初始值 \mathbf{R}(0)=\mathbf{I} ,解为

\mathbf{R}(t)=\exp (\phi_0^\wedge t)

由于之前的假设,所以这个式子只在t 附近有效

但可以确定,当某个时刻的 \mathbf{R} 已知时,存在一个向量 \phi ,二者满足这个矩阵指数关系 。而这个 \phi ,就是对应到SO(3) 上的李代数so(3)。

李代数so(3)

李代数so(3) 对应的向量 \phi ,是定义在R3 上的向量,每个向量对应到一个反对称矩阵;(李括号为三维向量的外积运算);可以用来表达旋转矩阵的导数,和SO(3) 的关系由指数映射给定: \mathbf{R}=\exp (\phi^\wedge) .

两个向量 \phi_1, \phi_2 的李括号为:

[\phi_1, \phi_2]=(\mathbf{\Phi_1}\mathbf{\Phi_2}-\mathbf{\Phi_2}\mathbf{\Phi_1})^\vee

李代数se(3)

对于SE(3),它也有对应的李代数se(3)。和so(3) 类似,se(3) 在R6 空间中:

se(3)=\begin{Bmatrix} \mathbf{\xi}=\begin{bmatrix} \mathbf{\rho} \\ \mathbf{\phi} \end{bmatrix} \in R^6,\mathbf{\rho} \in R^3, \mathbf{\phi} \in so(3), \mathbf{\xi}^\wedge=\begin{bmatrix}\phi^\wedge & \mathbf{\rho} \\ \mathbf{0}^T & 0 \end{bmatrix} \in R^{4 \times 4} \end{Bmatrix}

把每个se(3) 元素记做 \xi ,它是一个六维向量:前三维为平移,记作 \rho ;后三维是旋转,记作 \phi,实质上是so(3) 元素。

此外,在se(3) 中, ^\wedge 符号的含义被拓展了:这里它将一个六维向量转换为四维矩阵,但这里不再表示反对称矩阵。

李代数se(3) 的李括号:

[\xi_1,\ \xi_2]=(\xi_1^\wedge \xi_2^\wedge - \xi_2^\wedge\xi_1^\wedge)^\vee

 指数和对数映射

从李代数到李群,通过指数映射;反之,从李群到李代数,则通过对数映射

so(3) : \varphi =a\Theta

so(3) —— SO(3):

\exp{\phi^\wedge}=\exp(\theta \mathbf{a})=\sum\limits_{n=0}^\infty \frac{1}{n!}(\theta \mathbf{a}^\wedge)^n \\ =\cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{a}\mathbf{a}^T+\sin\theta\mathbf{a}^T

SO(3) —— so(3):

                     \Theta =\arccos \frac{tr(R)-1}{2}

                     Ra=a

BCH近似

对于两次连续的旋转可以用矩阵乘法来描述,但用李代数如何表示呢?我们自然是希望李群中两个矩阵相乘对应李代数上对应元素的相加,这样我们才能够利用加法来计算导数和进行更新。但很遗憾,这是不成立的。

李代数指数映射的乘积,见BCH公式:

\ln(\exp(\mathbf{A})\exp(\mathbf{B}))=\mathbf{A}+\mathbf{B}+\frac{1}{12}[\mathbf{A},\mathbf{B}]+\frac{1}{12}[\mathbf{A},[\mathbf{A},\mathbf{B}]]-\frac{1}{12}[\mathbf{B},[\mathbf{A},\mathbf{B}]]+\ldots

BCH 的线性近似:

\ln(\exp(\phi^\wedge_1)\exp(\phi^\wedge_2))^\vee \approx \begin{cases} \mathbf{J}_l(\phi_2)^{-1}\phi_1 + \phi2,\ 当\phi_1 为小量,\\ \mathbf{J}_r(\phi_1)^{-1}\phi_2+\phi_1,\ 当\phi_2 为小量,\\ \end{cases}

根据BCH 近似:

 \exp(\Delta\phi^\wedge)\exp(\Delta\phi^\wedge)=\exp((\phi+\mathbf{J}_l(\phi)^{-1}\Delta\phi)^\wedge)

 \exp((\phi+\Delta\phi)^\wedge)=\exp((\mathbf{J}_l\Delta\phi)^\wedge)\exp(\phi^\wedge)=\exp(\phi^\wedge)\exp((\mathbf{J}_r\Delta\phi)^\wedge)

扰动模型

 利用李代数求导,有两种思路

  1. 李代数来表示位姿,根据李代数加法来对李代数进行求导;
  2. 利用李群来左乘或者右乘微小扰动,在对这个扰动的李代数进行求导。

一般使用第二种,扰动模型:

先对旋转矩阵 \mathbf{R} 进行一次扰动 \Delta\mathbf{R} ,然后再求导。

这里以左乘扰动模型为例。设左扰动的李代数为 \varphi ,直接对 \varphi (而不是 \mathbf{R} )进行求导:

\frac{\partial(\mathbf{R}\mathbf{p})}{\partial\varphi}=\lim_{\varphi\to 0}\frac{\exp(\varphi^\wedge)\exp(\phi^\wedge)\mathbf{p}-\exp(\phi^\wedge)\mathbf{p}}{\varphi}=-(\mathbf{R}\mathbf{p})^\wedge

SE(3)上的扰动模型:

假设某空间点 \mathbf{p} 经过了一次变换 \mathbf{T} ,对应的李代数为 \xi ,得到了 \mathbf{T}\mathbf{p} 。给\mathbf{T} 左乘一个微小扰动 \Delta\mathbf{T} ,扰动项的李代数为 \delta\xi=[\delta\rho,\delta\phi]^T 。则有:

\frac{\partial(\mathbf{T}\mathbf{p})}{\partial\delta\xi}=\lim_{\delta\xi\to0}\frac{\exp(\delta\xi^\wedge)\exp(\xi^\wedge)\mathbf{p}-\exp(\xi^\wedge)\mathbf{p}}{\delta\xi}= \begin{bmatrix} \mathbf{I}_{3\times3} & -(\mathbf{R}\mathbf{p}+\mathbf{t})^\wedge_{3\times3} \\ \mathbf{0}^T_{1\times3} & \mathbf{0}^T_{1\times3}\\ \end{bmatrix}=(\mathbf{T}\mathbf{p})^\bigodot

最后的结果被定义为符号 ^\bigodot 的一个运算:把一个齐次坐标下的空间点变换成一个4*6 的矩阵。

 

<think> 我们详细讲解代数的基础知识、指数与对数映射的推导,以及它们在SLAM中的应用。内容从基础开始,逐步深入。 ### 一、代数基础 #### 1. 代数的定义 代数是与群关联的一个向量空间,同时配备了一个特殊的二元运算——括号(Lie Bracket)。在三维空间中,我们主要关注两类代数: - $\mathfrak{so}(3)$:对应旋转群$SO(3)$的代数 - $\mathfrak{se}(3)$:对应欧氏变换群$SE(3)$的代数 #### 2. $\mathfrak{so}(3)$的结构 $\mathfrak{so}(3)$的元素是三维向量或者其对应的反对称矩阵: $$\phi = \begin{bmatrix} \phi_1 \\ \phi_2 \\ \phi_3 \end{bmatrix} \in \mathbb{R}^3 \quad \Leftrightarrow \quad \phi^\wedge = \begin{bmatrix} 0 & -\phi_3 & \phi_2 \\ \phi_3 & 0 & -\phi_1 \\ -\phi_2 & \phi_1 & 0 \end{bmatrix}$$ 括号运算定义为:$[\phi_1, \phi_2] = (\phi_1^\wedge \phi_2^\wedge - \phi_2^\wedge \phi_1^\wedge)^\vee$ #### 3. $\mathfrak{se}(3)$的结构 $\mathfrak{se}(3)$的元素是六维向量: $$\xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix} \in \mathbb{R}^6 \quad \Leftrightarrow \quad \xi^\wedge = \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}$$ 其中$\rho \in \mathbb{R}^3$是平移相关的部分,$\phi \in \mathbb{R}^3$是旋转相关的部分。括号类似定义为矩阵交换子。 --- ### 二、指数映射:代数群 指数映射建立了代数元素到群元素的对应关系。 #### 1. $SO(3)$的指数映射 **目标**:将$\mathfrak{so}(3)$中的元素$\phi$映射为$SO(3)$中的旋转矩阵$R$。 **推导**: 设$\phi = \theta \mathbf{a}$,其中$\theta$是旋转角度,$\mathbf{a}$是单旋转轴($\|\mathbf{a}\|=1$)。反对称矩阵$\mathbf{a}^\wedge$满足性质: $$(\mathbf{a}^\wedge)^3 = -\mathbf{a}^\wedge$$ 利用指数级数展开: $$ \begin{align*} \exp(\phi^\wedge) &= \exp(\theta \mathbf{a}^\wedge) \\ &= \sum_{n=0}^{\infty} \frac{1}{n!} (\theta \mathbf{a}^\wedge)^n \\ &= I + \theta \mathbf{a}^\wedge + \frac{\theta^2}{2!} (\mathbf{a}^\wedge)^2 + \frac{\theta^3}{3!} (\mathbf{a}^\wedge)^3 + \frac{\theta^4}{4!} (\mathbf{a}^\wedge)^4 + \cdots \end{align*} $$ 利用$(\mathbf{a}^\wedge)^3 = -\mathbf{a}^\wedge$,将级数按奇偶次整理: - **偶次幂**:$(\mathbf{a}^\wedge)^{2k} = (-1)^{k-1} (\mathbf{a}^\wedge)^2$ - **奇次幂**:$(\mathbf{a}^\wedge)^{2k+1} = (-1)^k \mathbf{a}^\wedge$ 代入得: $$ \begin{align*} \exp(\theta \mathbf{a}^\wedge) &= I + \left( \theta - \frac{\theta^3}{3!} + \frac{\theta^5}{5!} - \cdots \right) \mathbf{a}^\wedge + \left( \frac{\theta^2}{2!} - \frac{\theta^4}{4!} + \frac{\theta^6}{6!} - \cdots \right) (\mathbf{a}^\wedge)^2 \\ &= I + \sin\theta \cdot \mathbf{a}^\wedge + (1 - \cos\theta) \cdot (\mathbf{a}^\wedge)^2 \end{align*} $$ 这就是**罗德里格斯公式**(Rodrigues' Formula),它将旋转向量转换为旋转矩阵。 #### 2. $SE(3)$的指数映射 **目标**:将$\mathfrak{se}(3)$中的元素$\xi$映射为$SE(3)$中的变换矩阵$T$。 **推导**: 设$\xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix}$,对应的$\xi^\wedge = \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}$。指数映射计算: $$\exp(\xi^\wedge) = \sum_{n=0}^{\infty} \frac{1}{n!} \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}^n$$ 通过分块矩阵计算幂次: - 当$n=0$:$I_4$ - 当$n=1$:$\begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}$ - 当$n\geq 2$: $$ \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}^n = \begin{bmatrix} (\phi^\wedge)^n & (\phi^\wedge)^{n-1} \rho \\ 0^T & 0 \end{bmatrix} $$ 因此,指数映射可写为: $$ \begin{align*} \exp(\xi^\wedge) &= \begin{bmatrix} \sum_{n=0}^{\infty} \frac{1}{n!} (\phi^\wedge)^n & \sum_{n=1}^{\infty} \frac{1}{n!} (\phi^\wedge)^{n-1} \rho \\ 0^T & 1 \end{bmatrix} \\ &= \begin{bmatrix} \exp(\phi^\wedge) & \mathbf{J} \rho \\ 0^T & 1 \end{bmatrix} \end{align*} $$ 其中$\mathbf{J}$称为**雅可比矩阵**: $$\mathbf{J} = \sum_{n=0}^{\infty} \frac{1}{(n+1)!} (\phi^\wedge)^n$$ 将$\phi = \theta \mathbf{a}$代入,可得$\mathbf{J}$的闭合形式: $$ \mathbf{J} = \frac{\sin\theta}{\theta} I + \left(1 - \frac{\sin\theta}{\theta}\right) \mathbf{a} \mathbf{a}^T + \frac{1-\cos\theta}{\theta} \mathbf{a}^\wedge $$ --- ### 三、对数映射:群→代数 对数映射是指数映射的逆运算。 #### 1. $SO(3)$的对数映射 **目标**:给定旋转矩阵$R \in SO(3)$,求对应的代数$\phi \in \mathfrak{so}(3)$。 **推导**: 从旋转矩阵$R$的迹性质出发: $$\operatorname{tr}(R) = 1 + 2\cos\theta$$ 解得旋转角: $$\theta = \arccos\left( \frac{\operatorname{tr}(R)-1}{2} \right)$$ 旋转轴$\mathbf{a}$由下式给出: $$(R - R^T) \mathbf{a} = 0 \quad \text{且} \quad \|\mathbf{a}\|=1$$ 因此,$\phi = \theta \mathbf{a}$。 #### 2. $SE(3)$的对数映射 **目标**:给定变换矩阵$T = \begin{bmatrix} R & t \\ 0^T & 1 \end{bmatrix} \in SE(3)$,求对应的代数$\xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix}$。 **步骤**: 1. 从$R$计算$\phi$(使用$SO(3)$的对数映射) 2. 解线性方程$t = \mathbf{J} \rho$得到$\rho$,其中$\mathbf{J}$由$\phi$计算得到 --- ### 四、在SLAM中的应用 #### 1. 无约束优化 在SLAM姿图优化中,我们需要最小化重投影误差: $$\min_{T} \sum_i \| z_i - \pi(T \cdot p_i) \|^2$$ 其中$T \in SE(3)$。直接优化$T$(受约束)困难,转而优化代数$\xi \in \mathfrak{se}(3)$: $$\min_{\xi} \sum_i \| z_i - \pi( \exp(\xi^\wedge) \cdot p_i ) \|^2$$ 这样将约束优化转化为无约束优化问题,可以使用高斯-牛顿法或列文伯格-马夸尔特法求解[^1][^3]。 #### 2. 扰动模型(求导) 在优化中需要计算雅可比矩阵,代数支持求导: - **左扰动模型**:对群元素左乘微小扰动$\exp(\delta \xi^\wedge)$ - 旋转部分:$\frac{\partial (R p)}{\partial \delta \phi} = - (R p)^\wedge$ - 变换部分:$\frac{\partial (T p)}{\partial \delta \xi} = \begin{bmatrix} I & - (R p)^\wedge \\ 0^T & 0^T \end{bmatrix}$ #### 3. 物理意义 - 代数$\mathfrak{so}(3)$的元素对应角速度 - $\mathfrak{se}(3)$的元素对应刚体运动的twist(包含角速度和平移速度) 微分方程描述运动: $$\dot{R}(t) = \omega(t)^\wedge R(t) \quad \text{或} \quad \dot{T}(t) = \xi(t)^\wedge T(t)$$ --- ### 五、总结 | **操作** | $SO(3)$ | $SE(3)$ | |----------|---------|---------| | **代数群** | $\exp(\phi^\wedge) = I + \sin\theta \mathbf{a}^\wedge + (1-\cos\theta)(\mathbf{a}^\wedge)^2$ | $\exp(\xi^\wedge) = \begin{bmatrix} R & \mathbf{J}\rho \\ 0^T & 1 \end{bmatrix}$ | | **群→代数** | $\theta = \arccos\left(\frac{\operatorname{tr}(R)-1}{2}\right), \quad \mathbf{a} \text{ 由 } R-R^T \text{ 给出}$ | $\phi \text{ 由 } R \text{ 计算}, \quad \rho = \mathbf{J}^{-1} t$ | | **扰动求导** | $\frac{\partial (Rp)}{\partial \delta\phi} = -(Rp)^\wedge$ | $\frac{\partial (Tp)}{\partial \delta\xi} = \begin{bmatrix} I & -(Rp)^\wedge \\ 0^T & 0^T \end{bmatrix}$ | 指数与对数映射为SLAM中的姿估计提供了数学基础,使得非线性优化问题得以高效解决[^1][^2][^3]。 --- §§相关问题§§ 1. 为什么代数能避免旋转矩阵的约束问题? 2. 如何从微分方程角度理解指数映射? 3. SE(3)的雅可比矩阵$\mathbf{J}$具体如何推导? 4. 代数在视觉SLAM后端优化中的实际应用案例有哪些? </think>### 代数基础讲解及在SLAM中的应用推导 #### 一、代数基本概念 1. **代数的定义** 代数群单元处的**切空间**,具有以下结构: - 向量空间:$\mathfrak{g} = \{ \mathbf{v} \in \mathbb{R}^n \}$ - 括号运算:$[\mathbf{v}_1, \mathbf{v}_2] \in \mathfrak{g}$(满足双线性、反对称性和雅可比恒等式) 在SLAM中最重要的两类代数: - $\mathfrak{so}(3) = \{ \phi \in \mathbb{R}^3 \mid \phi^\wedge \in \mathbb{R}^{3\times3} \text{ 反对称矩阵} \}$ $$\phi^\wedge = \begin{bmatrix} 0 & -\phi_3 & \phi_2 \\ \phi_3 & 0 & -\phi_1 \\ -\phi_2 & \phi_1 & 0 \end{bmatrix}$$ - $\mathfrak{se}(3) = \left\{ \xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix} \in \mathbb{R}^6 \right\}$ 2. **与群的关系** - $SO(3)$ 的切空间:$\mathfrak{so}(3)$ - $SE(3)$ 的切空间:$\mathfrak{se}(3)$ - 映射关系:$\frac{d}{dt}\bigg|_{t=0} \exp(t\phi^\wedge) = \phi^\wedge$ --- #### 二、指数映射推导(代数群) ##### 1. $SO(3)$ 的指数映射 **目标**:求解 $\exp(\phi^\wedge) = R \in SO(3)$ 设 $\phi = \theta \mathbf{a}$($\|\mathbf{a}\|=1$),利用反对称矩阵性质: $$(\mathbf{a}^\wedge)^3 = -\mathbf{a}^\wedge$$ 展开泰勒级数: $$ \begin{align*} \exp(\phi^\wedge) &= \sum_{n=0}^{\infty} \frac{1}{n!} (\theta \mathbf{a}^\wedge)^n \\ &= I + \theta \mathbf{a}^\wedge + \frac{\theta^2}{2!} (\mathbf{a}^\wedge)^2 + \frac{\theta^3}{3!} (\mathbf{a}^\wedge)^3 + \cdots \\ &= I + \left( \theta - \frac{\theta^3}{3!} + \frac{\theta^5}{5!} - \cdots \right) \mathbf{a}^\wedge + \left( \frac{\theta^2}{2!} - \frac{\theta^4}{4!} + \cdots \right) (\mathbf{a}^\wedge)^2 \\ &= I + \sin\theta \cdot \mathbf{a}^\wedge + (1 - \cos\theta) \cdot (\mathbf{a}^\wedge)^2 \end{align*} $$ 此即**罗德里格斯公式**,几何意义:绕轴 $\mathbf{a}$ 旋转 $\theta$ 角度[^1]。 ##### 2. $SE(3)$ 的指数映射 **目标**:求解 $\exp(\xi^\wedge) = T \in SE(3)$ 设 $\xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix}$,通过分块矩阵计算: $$ \xi^\wedge = \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix}, \quad (\xi^\wedge)^n = \begin{bmatrix} (\phi^\wedge)^n & (\phi^\wedge)^{n-1}\rho \\ 0^T & 0 \end{bmatrix} $$ 指数映射: $$ \begin{align*} \exp(\xi^\wedge) &= \begin{bmatrix} \sum_{n=0}^{\infty} \frac{1}{n!} (\phi^\wedge)^n & \sum_{n=1}^{\infty} \frac{1}{n!} (\phi^\wedge)^{n-1} \rho \\ 0^T & 1 \end{bmatrix} \\ &= \begin{bmatrix} \exp(\phi^\wedge) & \mathbf{J} \rho \\ 0^T & 1 \end{bmatrix} \end{align*} $$ 其中 $\mathbf{J}$ 是雅可比矩阵: $$ \mathbf{J} = \sum_{n=0}^{\infty} \frac{1}{(n+1)!} (\phi^\wedge)^n = \frac{\sin\theta}{\theta} I + \left(1 - \frac{\sin\theta}{\theta}\right) \mathbf{a}\mathbf{a}^T + \frac{1-\cos\theta}{\theta} \mathbf{a}^\wedge $$ --- #### 三、对数映射推导(群→代数) ##### 1. $SO(3)$ 的对数映射 给定 $R \in SO(3)$,求 $\phi \in \mathfrak{so}(3)$: - 旋转角:$\theta = \arccos\left( \frac{\operatorname{tr}(R)-1}{2} \right)$ - 旋转轴:解方程 $(R - R^T) \mathbf{a} = 0$($\|\mathbf{a}\|=1$) - 代数:$\phi = \theta \mathbf{a}$ ##### 2. $SE(3)$ 的对数映射 给定 $T = \begin{bmatrix} R & t \\ 0^T & 1 \end{bmatrix}$: 1. 从 $R$ 计算 $\phi$(方法同上) 2. 解方程 $t = \mathbf{J} \rho$ 得 $\rho$ - 当 $\theta \neq 0$:$\rho = \mathbf{J}^{-1} t$ - $\mathbf{J}^{-1} = I - \frac{\theta}{2} \mathbf{a}^\wedge + \left(1 - \frac{\theta \sin\theta}{2(1-\cos\theta)}\right) (\mathbf{a}^\wedge)^2$ --- #### 四、在SLAM中的应用推导 ##### 1. 姿优化的无约束化 SLAM后端优化的目标函数: $$\min_{T} \sum_k \| z_k - \pi(T \cdot p_k) \|^2$$ 其中 $T \in SE(3)$ 受约束 $T^T \eta T = \eta$($\eta$ 为闵氏度规) **代数解法**: 1. 参数化:$T = \exp(\xi^\wedge)$ 2. 目标函数转化为: $$\min_{\xi \in \mathbb{R}^6} \sum_k \| z_k - \pi( \exp(\xi^\wedge) \cdot p_k ) \|^2$$ 3. 使用高斯-牛顿法迭代求解[^3] ##### 2. 扰动模型求导 **左扰动模型**(在群上施加微小扰动): - 旋转部分:$\frac{\partial (R\mathbf{p})}{\partial \delta\phi} = \lim_{\delta\phi \to 0} \frac{ \exp(\delta\phi^\wedge) R \mathbf{p} - R\mathbf{p} }{\delta\phi} = -(R\mathbf{p})^\wedge$ - 变换部分:$\frac{\partial (T\mathbf{p})}{\partial \delta\xi} = \begin{bmatrix} I & -(R\mathbf{p})^\wedge \\ 0^T & 0^T \end{bmatrix}$ **SLAM中的雅可比计算**(重投影误差): $$ \begin{align*} e &= z - \pi(\exp(\xi^\wedge) p) \\ \frac{\partial e}{\partial \delta\xi} &= -\underbrace{\frac{\partial \pi}{\partial q}}_{2\times3} \cdot \underbrace{\frac{\partial (Tp)}{\partial \delta\xi}}_{3\times6} \end{align*} $$ ##### 3. 物理意义 - $\mathfrak{so}(3)$ 对应角速度 $\omega$:$\dot{R} = \omega^\wedge R$ - $\mathfrak{se}(3)$ 对应运动旋量 $\xi = [\mathbf{v}, \omega]^T$:$\dot{T} = \xi^\wedge T$ - 指数映射 $\exp(\xi^\wedge \Delta t)$ 表示 $\Delta t$ 时间内的运动 --- #### 五、应用实例(g2o中的姿图优化) ```cpp // g2o顶点定义(使用代数参数化) class VertexSE3 : public BaseVertex<6, SE3Quat> { void oplusImpl(const double* update) { // 代数更新:T_new = exp(δξ^) * T_old Eigen::Map<const Vector6d> δξ(update); _estimate = SE3Quat::exp(δξ) * _estimate; } } ``` 优化过程: 1. 误差定义:$e_{ij} = \log(T_{ij}^{-1} T_i^{-1} T_j)^\vee$ 2. 雅可比计算:$\frac{\partial e_{ij}}{\partial \delta\xi_i} = -\mathcal{J}_r^{-1}(e_{ij}) \text{Ad}_{T_j^{-1}}$ 3. 迭代更新:$\xi_i \leftarrow \xi_i + \Delta\xi_i$ --- ### 总结 | **操作** | $SO(3)$ | $SE(3)$ | |------------------|----------------------------|---------------------------------------------| | **指数映射** | $\exp(\phi^\wedge) = I + \sin\theta \mathbf{a}^\wedge + (1-\cos\theta)(\mathbf{a}^\wedge)^2$ | $\exp(\xi^\wedge) = \begin{bmatrix} R & \mathbf{J}\rho \\ 0^T & 1 \end{bmatrix}$ | | **对数映射** | $\phi = \theta \mathbf{a}$ | $\xi = \begin{bmatrix} \mathbf{J}^{-1}t \\ \phi \end{bmatrix}$ | | **扰动求导** | $\frac{\partial (Rp)}{\partial \delta\phi} = -(Rp)^\wedge$ | $\frac{\partial (Tp)}{\partial \delta\xi} = \begin{bmatrix} I & -(Rp)^\wedge \\ 0^T & 0^T \end{bmatrix}$ | | **SLAM应用** | 旋转参数化 | 姿优化/BA/姿图优化 | 指数/对数映射解决了旋转矩阵的约束问题,使SLAM中的姿优化转化为无约束非线性优化,是现代SLAM算法的数学基础[^1][^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值