SLAM中的李群与李代数【SLAM】

SLAM中为什么要用李代数?

本人从SLAM问题的角度出发得出的结论目前是这样的:在SLAM问题中,为了表示旋转姿态需要旋转矩阵或者四元数,在后端优化过程中为了求解非线性优化问题需要求雅可比矩阵,即求导;在运动学的描述中也需要求导;这两种情况中一般是对位姿求导,这时就产生了一个矛盾:根据导数的定义可知,对某一个变量求导,定义中需要该变量产生微小增量,为了保证物理意义的正确,我们希望该变量对加法是封闭的,而旋转矩阵或者四元数对加法都不封闭,所以引入李代数。李代数对李括号具有封闭性,李代数和李群中的元素通过指数映射和对数映射一一对应(对于 S O ( 3 ) SO(3) SO(3)李群需要规定旋转角在 ± π \pm \pi ±π之间),SLAM中引入的李代数的李括号刚好都是加法,这样我们就可以用李代数进行求导过程。

BCH线性近似解决了什么问题?

BCH线性近似提供了在SLAM中的李代数上做加法李群上做乘法的对应关系。

指数映射与对数映射

每个李群都有与之对应的李代数,李代数描述了李群的局部性质,即单位元的正切空间。
S O ( 3 ) SO(3) SO(3)对应的李代数为 s o ( 3 ) \mathfrak{so}(3) so(3)
s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ ∈ R 3 × 3 } \mathfrak{so}(3) = \{ \phi \in \mathbb{R}^{3}, \mathit{\Phi} = \phi^{\wedge} \in \mathbb{R}^{3\times3} \} so(3)={ϕR3,Φ=ϕR3×3}

SO(3)上的指数映射

R = e x p ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n R = exp(\phi^{\wedge}) = \sum_{n=0}^{\infty} \frac{1}{n!}(\phi^{\wedge})^{n} R=exp(ϕ)=n=0n!1(ϕ)n
如果把 ϕ \phi ϕ写成 θ n \theta \mathbf{n} θn,经过推导会发现:
e x p ( θ n ∧ ) = c o s θ I + ( 1 − c o s θ ) n n T + s i n θ n ∧ exp(\theta \mathbf{n}^{\wedge}) = cos\theta I + (1-cos \theta) \mathbf{n} \mathbf{n}^{T} + sin \theta \mathbf{n}^{\wedge} exp(θn)=cosθI+(1cosθ)nnT+sinθn
这与罗德里格斯公式如出一辙。
这说明 s o ( 3 ) \mathfrak{so}(3) so(3)的物理意义是和旋转矩阵 R R R对应的旋转向量。

SO(3)上的对数映射

ϕ = l n ( R ) ∨ = ( ∑ n = 0 ∞ ( − 1 ) n n + 1 ( R − I ) n + 1 ) \phi = ln(R)^{\vee} = \left ( \sum_{n=0}^{\infty} \frac{(-1)^{n}}{n+1}(R-I)^{n+1} \right) ϕ=ln(R)=(n=0n+1(1)n(RI)n+1)
一般不用,要求 S O ( 3 ) SO(3) SO(3)的对数映射其实就是求对应的旋转向量,直接求 θ \theta θ和特征值为1的特征向量即可。

BCH线性近似

BCH公式提供了两个李代数指数映射乘积的完整形式:
l n ( e x p ( A ) e x p ( B ) ) = A + B + 1 2 [ A , B ] + 1 12 [ A , [ A , B ] ] − 1 12 [ B , [ A , B ] ] + … ln(exp(A)exp(B)) = A+B+\frac{1}{2}[A,B]+\frac{1}{12}[A,[A,B]]-\frac{1}{12}[B,[A,B]]+\dots ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+
二元运算符 [ , ] [,] [,]为李括号。

线性近似表达:
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ≈ { J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2  当  ϕ 1 为小量 J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1  当  ϕ 2 为小量 ln(exp(\phi_{1}^{\wedge})exp(\phi_{2}^{\wedge}))^{\vee} \approx \begin{cases} J_{l}(\phi_{2})^{-1}\phi_{1} + \phi_{2} & \text{ 当 } \phi_{1}\text{为小量} \\ J_{r}(\phi_{1})^{-1}\phi_{2} + \phi_{1} & \text{ 当 } \phi_{2}\text{为小量} \end{cases} ln(exp(ϕ1)exp(ϕ2)){Jl(ϕ2)1ϕ1+ϕ2Jr(ϕ1)1ϕ2+ϕ1  ϕ1为小量  ϕ2为小量

对于 ϕ = θ n \phi = \theta \mathbf{n} ϕ=θn
J l ( ϕ ) = s i n θ θ I + ( 1 − s i n θ θ ) n n T + 1 − c o s θ θ n ∧ J_{l}(\phi) = \frac{sin\theta}{\theta}I + (1 - \frac{sin\theta}{\theta})\mathbf{n}\mathbf{n}^{T} + \frac{1 - cos\theta}{\theta}\mathbf{n}^{\wedge} Jl(ϕ)=θsinθI+(1θsinθ)nnT+θ1cosθn

J l ( ϕ ) − 1 = θ 2 c o t θ 2 I + ( 1 − θ 2 c o t θ 2 ) n n T − θ 2 n ∧ J_{l}(\phi)^{-1} = \frac{\theta}{2}cot\frac{\theta}{2}I + (1 - \frac{\theta}{2}cot\frac{\theta}{2})\mathbf{n}\mathbf{n}^{T} -\frac{\theta}{2}\mathbf{n}^{\wedge} Jl(ϕ)1=2θcot2θI+(12θcot2θ)nnT2θn

J r ( ϕ ) = J l ( − ϕ ) J_{r}(\phi) = J_{l}(-\phi) Jr(ϕ)=Jl(ϕ)

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值