【SLAM数学基础】李群与李代数 & BCH近似公式

本文介绍了三维旋转群SO(3)和三维变换群SE(3)的李代数,重点讨论了指数映射、对数映射以及BCH公式,特别是如何在自动驾驶和机器人领域的SLAM技术中应用BCH近似来处理旋转和变换问题。

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

三维旋转构成了三维旋转群 SO(3),其对应的李代数为 so\mathfrak{so}so(3);三维变换构成了三维变换群 SE(3),其对应的李代数为 se\mathfrak{se}se(3)。

1.指数映射

李代数元素到李群元素的映射为指数映射,其中 so\mathfrak{so}so(3) 至 SO(3) 的指数映射为:

exp⁡(ϕ∧)=R=Exp(ϕ)\exp(\bm{\phi}^{\wedge}) = \bm{R} = \text{Exp}(\bm{\phi})exp(ϕ)=R=Exp(ϕ)

具体计算公式由罗德里格斯公式给出:

R=cos⁡θ⋅I+(1−cos⁡θ)nnT+sin⁡θ⋅n∧=exp⁡(ϕ∧) \bm{R} = \cos\theta \cdot \bm{I} + (1-\cos \theta) \bm{n}\bm{n}^T + \sin\theta\cdot \bm{n}^{\wedge} = \exp(\bm{\phi}^{\wedge}) R=cosθI+(1cosθ)nnT+sinθn=exp(ϕ)

其中 ϕ∈so(3)\bm{\phi}\in \mathfrak{so}(3)ϕso(3) 可以分解为 ϕ=θn\bm{\phi} =\theta\bm{n}ϕ=θn.

2.对数映射

从李群元素到李代数元素的映射为对数映射,记作

ϕ=log⁡(R)∨=Log(R)\bm{\phi} = \log(\bm{R})^{\vee} = \text{Log}(\bm{R})ϕ=log(R)=Log(R)

其中ϕ∈so(3)\bm{\phi}\in \mathfrak{so}(3)ϕso(3) 可以分解为 ϕ=θn\bm{\phi} =\theta\bm{n}ϕ=θn,具体的计算过程由下式给出:

θ=arccos⁡(tr(R)−12)Rn=n\theta = \arccos\left(\frac{tr(\bm{R}) - 1}{2}\right) \\ \bm{R}\bm{n} = \bm{n}θ=arccos(2tr(R)1)Rn=n

其中 转轴 n\bm{n}n 是矩阵 RRR 特征值1对应的单位特征向量。

3. BCH公式及其线性近似表达

两个李代数指数映射乘积的完整形式,由 Baker-Campbell-Hausdorff 公式(BCH公式)给出,其展开式的前几项为:

ln⁡(exp⁡(A)exp⁡(B))=A+B+12[A,B]+112[A,[A,B]]−112[B,[A,B]]+⋯\ln\left(\exp(A)\exp(B)\right) = A + B + \frac{1}{2}[A, B] + \frac{1}{12}[A,[A,B]] - \frac{1}{12}[B,[A,B]] + \cdotsln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+

其中 [ ] 为李括号。特别地,考虑 SO(3) 上的李代数 ln⁡(exp⁡(ϕ1∧)exp⁡(ϕ2∧))∨\ln\left(\exp(\bm{\phi}^{\wedge}_1)\exp(\bm{\phi}^{\wedge}_2)\right)^{\vee}ln(exp(ϕ1)exp(ϕ2)),当 ϕ1\bm{\phi}_1ϕ1ϕ2\bm{\phi}_2ϕ2 为小量时,小量二次以上的项可以忽略,此时 BCH 具有线性近似表达:

在这里插入图片描述

第一个近似公式表明,当对一个旋转矩阵 R2\bm{R}_2R2(李代数为 ϕ2\bm{\phi}_2ϕ2) 左乘一个微小旋转矩阵 R1\bm{R}_1R1(李代数为 ϕ1\bm{\phi}_1ϕ1)时,可以近似看作在原来的李代数 ϕ2\bm{\phi}_2ϕ2 加上了一项 Jl(ϕ2)−1ϕ1\bm{J}_l(\bm{\phi}_2)^{-1}\bm{\phi}_1Jl(ϕ2)1ϕ1。同理,第二个近似公式描述了右乘一个微小旋转的情况。

因此,李代数在BCH近似下分成了左乘和右乘近似两种,使用时需要注意区分。

4. SO(3)上的BCH近似公式

BCH公式给出了李代数上的小量加法与李群上小量乘法之间的关系(李代数加法 ⇔\Leftrightarrow 李群乘法),其线性近似公式广泛应用于各种函数的线性化。

在SO(3)中,某个旋转 R\bm{R}R 对应的李代数为 ϕ\bm{\phi}ϕ,左乘一个微小旋转,记作 ΔR\Delta \bm{R}ΔR,对应的李代数为 Δϕ\Delta \bm{\phi}Δϕ,那么在李群上得到的结果就是 ΔRR\Delta \bm{R} \bm{R}ΔRR,而在李代数上,根据BCH近似,为 Jl(ϕ)−1Δϕ+ϕ\bm{J}_l(\bm{\phi})^{-1}\Delta\bm{\phi} + \bm{\phi}Jl(ϕ)1Δϕ+ϕ,合并后可以简单写成:

ΔRR=exp⁡(Δϕ∧)exp⁡(ϕ∧)=exp⁡((ϕ+Jl(ϕ)−1Δϕ)∧) \Delta \bm{R} \bm{R} = \exp(\Delta \bm{\phi}^{\wedge})\exp(\bm{\phi}^{\wedge}) = \exp \left( (\bm{\phi} + \bm{J}_l(\bm{\phi})^{-1}\Delta\bm{\phi})^{\wedge} \right) ΔRR=exp(Δϕ)exp(ϕ)=exp((ϕ+Jl(ϕ)1Δϕ))

反过来,如果在李代数上进行加法,让一个 ϕ\bm{\phi}ϕ 加上小量 Δϕ\Delta \bm{\phi}Δϕ,那么可以近似为李群上带左右雅克比矩阵的乘法:

exp⁡((ϕ+Δϕ)∧)=exp⁡((Jl(ϕ)Δϕ)∧)exp⁡(ϕ∧)=exp⁡(ϕ∧)exp⁡((Jr(ϕ)Δϕ)∧) \exp((\bm{\phi} + \Delta \bm{\phi})^{\wedge}) = \exp((\bm{J}_l(\bm{\phi})\Delta \bm{\phi})^\wedge) \exp(\bm{\phi}^\wedge) = \exp( \bm{\phi}^\wedge) \exp((\bm{J}_r(\bm{\phi})\Delta\bm{\phi})^\wedge) exp((ϕ+Δϕ))=exp((Jl(ϕ)Δϕ))exp(ϕ)=exp(ϕ)exp((Jr(ϕ)Δϕ))

其中SO(3)的左雅克比矩阵为

Jl(θa)=sin⁡θθI+(1−sin⁡θθ)aaT+(1−cos⁡θθ)a∧Jl−1(θa)=θ2cot⁡θ2I+(1−θ2cot⁡θ2)aaT−θ2a∧\bm{J}_l(\theta\bm{a}) = \frac{\sin\theta}{\theta} \bm{I} + (1-\frac{\sin\theta}{\theta})\bm{a}\bm{a}^T+(\frac{1-\cos\theta}{\theta})\bm{a}^{\wedge} \\ \bm{J}^{-1}_l(\theta\bm{a}) = \frac{\theta}{2}\cot\frac{\theta}{2} \bm{I} + (1-\frac{\theta}{2}\cot\frac{\theta}{2})\bm{a}\bm{a}^T-\frac{\theta}{2}\bm{a}^{\wedge}Jl(θa)=θsinθI+(1θsinθ)aaT+(θ1cosθ)aJl1(θa)=2θcot2θI+(12θcot2θ)aaT2θa

而SO(3)的右雅克比矩阵为

Jr(ϕ)=Jl(−ϕ)\bm{J}_r(\bm{\phi}) = \bm{J}_l(-\bm{\phi})Jr(ϕ)=Jl(ϕ)

值得注意的是,由于李代数 ϕ\bm{\phi}ϕ 可以和旋转矩阵 R\bm{R}R 简单地对应起来,因此有时也把 Jr(ϕ)\bm{J}_r(\bm{\phi})Jr(ϕ) 简单地记作 Jr(R)\bm{J}_r(\bm{R})Jr(R) 而不是 Jr(Log(R))\bm{J}_r(\text{Log}(\bm{R}))Jr(Log(R))。另外,在很多情况下,也会省略 Jr(ϕ)\bm{J}_r(\bm{\phi})Jr(ϕ) 括号里的内容,而直接记为 Jr\bm{J}_rJrJl\bm{J}_lJl,这都是为了让公式看上去更加简洁。

参考教程

  1. 自动驾驶与机器人中的SLAM技术:从理论到实践/高翔著. —北京:电子工业出版社,2023.8
  2. 视觉SLAM十四讲:从理论到实践/高翔等著.— 2版. —北京:电子工业出版社,2019.9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值