SLAM--李群李代数左扰动模型

一、数学基础

对于两个非零向量:

a = ( x 1 , y 1 , z 1 ) T , b = ( x 2 , y 2 , z 2 ) T a = ({x_1},{y_1},{z_1})^\mathsf{T},b = ({x_2},{y_2},{z_2})^\mathsf{T}\\ a=(x1,y1,z1)T,b=(x2,y2,z2)T

则向量的内积:
⟨ b , a ⟩ = a T b = x 1 x 2 + y 1 y 2 + z 1 z 2 \left\langle {b,a} \right\rangle = a^\mathsf{T} b = {x_1}{x_2} + {y_1}{y_2} + {z_1}{z_2}\\ b,a=aTb=x1x2+y1y2+z1z2
其结果为一个标量;

向量的外积:
a × b = ∣ i j k x 1 y 1 z 1 x 2 y 2 z 2 ∣ = ( y 1 z 2 − y 2 z 1 , z 1 x 2 − z 2 x 1 , x 1 y 2 − x 2 y 1 ) T = [ 0 − z 1 y 1 z 1 0 − x 1 − y 1 x 1 0 ] b \begin{aligned} a \times b &= \left| {\begin{matrix} i&j&k\\ {{x_1}}&{{y_1}}&{{z_1}}\\ {{x_2}}&{{y_2}}&{{z_2}} \end{matrix}} \right| \\ &= ({y_1}{z_2} - {y_2}{z_1},{z_1}{x_2} - {z_2}{x_1},{x_1}{y_2} - {x_2}{y_1})^\mathsf{T}\\ &= \left[ {\begin{matrix} 0&{ - {z_1}}&{{y_1}}\\ {{z_1}}&0&{ - {x_1}}\\ { - {y_1}}&{{x_1}}&0 \end{matrix}} \right] b \end{aligned} a×b=ix1x2jy1y2kz1z2=(y1z2y2z1,z1x2z2x1,x1y2x2y1)T=0z1y1z10x1y1x10b
向量的外积依旧是个向量,其方向为用右手从a转向b,其模长为:
∣ a ∣ ∣ b ∣ sin ⁡ ⟨ a , b ⟩ \left| a \right|\left| b \right|\sin \left\langle {a,b} \right\rangle absina,b
令矩阵:
a ∧ = [ 0 − z 1 y 1 z 1 0 − x 1 − y 1 x 1 0 ] a ^\wedge =\left[ {\begin{matrix} 0&{ - {z_1}}&{{y_1}}\\ {{z_1}}&0&{ - {x_1}}\\ { - {y_1}}&{{x_1}}&0 \end{matrix}} \right] a=0z1y1z10x1y1x10
我们称其为a向量的反对称矩阵。

 
 

二、旋转矩阵求导

三维的旋转矩阵R构成了一种特殊的正交群SO(3),变换矩阵T则构成了SE(3):
S O ( 3 ) = { R ∈ R 3 × 3 ∣ R R T = I , det ⁡ ( R ) = 1 } S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ R 3 × 3 , t ∈ R 3 } \begin{aligned} SO(3) &= \{ R \in {\mathbb{R}^{3 \times 3}}|R{R^T} = I,\det (R) = 1\} \\ SE(3) &= \{ T = \left[ {\begin{matrix} R&t \\ {{0^T}}&1 \end{matrix}} \right] \in {\mathbb{R}^{4 \times 4}}|R \in {\mathbb{R}^{3 \times 3}},t \in {\mathbb{R}^3}\} \end{aligned} SO(3)SE(3)={RR3×3RRT=I,det(R)=1}={T=[R0Tt1]R4×4RR3×3,tR3}
需要注意的是,它们对加法不封闭:
R 1 + R 2 ∉ S O ( 3 ) , T 1 + T 2 ∉ S E ( 3 ) {R_1} + {R_2} \notin SO(3),{T_1} + {T_2} \notin SE(3) R1+R2/SO(3),T1+T2/SE(3)

我们首先让旋转矩阵对时间t求导(注意这里是对时间t求导,和后面的左扰动求导参数不同)

因为:
R R T = I RR^T=I RRT=I
若旋转矩阵随时间变化,则:
R ( t ) R ( t ) T = I R(t)R(t)^T=I R(t)R(t)T=I
我们设初始时刻姿态为P0,t时刻姿态为Pt,则:
P t = R ( t ) P 0 {P_t} = R(t){P_0} Pt=R(t)P0
两边同时求导得:
d P t d t = d R ( t ) d t P 0 \frac{\mathrm{d} P_t }{\mathrm{d} t} = \frac{\mathrm{d} R(t) }{\mathrm{d} t} P_0 dtdPt=dtdR(t)P0
由理论力学的知识得:
V ( t ) = ω × P ( t ) = ω × R ( t ) ⋅ P 0 = ω ∧ R ( t ) ⋅ P 0 V(t) = \omega \times P(t)=\omega \times R(t)\cdot P_0=\omega^\wedge R(t)\cdot P_0 V(t)=ω×P(t)=ω×R(t)P0=ωR(t)P0
位置对t求导即速度:
d P t d t = V ( t ) \frac{\mathrm{d} P_t }{\mathrm{d} t} = V(t) dtdPt=V(t)
所以由上式得
ω ∧ R ( t ) ⋅ P 0 = d R ( t ) d t P 0 \omega^\wedge R(t)\cdot P_0=\frac{\mathrm{d} R(t) }{\mathrm{d} t} P_0 ωR(t)P0=dtdR(t)P0
所以有:
d R ( t ) d t = ω ∧ R ( t ) ⋅ \frac{\mathrm{d} R(t) }{\mathrm{d} t}= \omega^\wedge R(t)\cdot dtdR(t)=ωR(t)
又假设t0=0时的初始条件为:
R ( t 0 ) = I R(t_0)=I R(t0)=I
所以由矩阵论的知识可得:
R ( t ) = e x p ( t ⋅ ω ∧ ) R(t) = exp(t\cdot \omega^\wedge) R(t)=exp(tω)
又因为:
ϕ = ω ⋅ t \phi = \omega\cdot t ϕ=ωt
所以最后:
R ( t ) = e x p ( ϕ ∧ ) R(t)=exp(\phi^\wedge) R(t)=exp(ϕ)
由因为此式对任意时刻都适用,即:
R = e x p ( ϕ ∧ ) R=exp(\phi^\wedge) R=exp(ϕ)

三、李代数求导

3.1 对李代数求导的意义:

假设一个点的世界坐标p已知,又已知在一个位姿下T(位姿T未知)观测到该点的坐标为z,求出最优的T使得||z-Tp||最小,这样的T就是最优估计

或者也可以这么解释,如果我们得到一组点的k时刻观测数据Z ,上一个时刻k-1对同一组点观测的数据为P(k-1时刻的位姿与世界坐标重合),此时我们估计它从k-1k的变化矩阵T,这时候存在着一个误差:
e = z − T p e = z-Tp e=zTp
这时候我们需要让这个误差最小,才能让我们估计的T成为最优估计;
所以可以转化为,对于目标函数J(T),使得J(T)最小:
min ⁡ T J ( T ) = ∑ i = 1 N ∥ z i − T p i ∥ 2 2 \mathop {\min }\limits_T J(T) = \sum\limits_{i = 1}^N {\left\| {{z_i} - T{p_i}} \right\|_2^2} TminJ(T)=i=1NziTpi22
我们需要对Tp求导,通过导数来判断极小值点,求出最优解;
但由于李群的不可加性,所以只能通过李群对应的李代数来进行求导;例如:
∂ ( T p ) ∂ T = lim ⁡ Δ T → 0 ( T + Δ T ) p − T p Δ T \frac{{\partial (Tp)}}{{\partial T }} =\mathop {\lim }\limits_{\Delta T \to 0} \frac{{(T+\Delta T)p - Tp}}{\Delta T } T(Tp)=ΔT0limΔT(T+ΔT)pTp
这个式子是不正确的,因为T+△T不再是SE(3)群,所以要考虑利用其李代数求导;
考虑旋转,平移六个自由度,六个参数:
T = T ( ϕ , t ) , ϕ ∈ R 3 , t ∈ R 3 T=T(\phi,t),\phi \in \mathbb{R}^3,t \in \mathbb{R}^3 T=T(ϕ,t),ϕR3,tR3
这个问题就转变为了对下面的式子:
min ⁡ ϕ , t J ( ϕ , t ) = ∑ i = 1 N ∥ z i − T ( ϕ , t ) p i ∥ 2 2 \mathop {\min }\limits_{\phi,t} J(\phi,t)=\sum\limits_{i = 1}^N {\left\| {{z_i} - T(\phi,t){p_i}} \right\|_2^2} ϕ,tminJ(ϕ,t)=i=1NziT(ϕ,t)pi22
由定义的李代数:
s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 ∣ ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] } se(3) = \{ \xi = \left[ {\begin{matrix} \rho \\ \phi \end{matrix}} \right] \in {\mathbb{R}^6}|\rho \in {\mathbb{R}^3},\phi \in so(3),{\xi ^ \wedge } = \left[ {\begin{matrix} {{\phi ^ \wedge }}&\rho \\ {{0^T}}&0 \end{matrix}} \right]\} se(3)={ξ=[ρϕ]R6ρR3,ϕso(3),ξ=[ϕ0Tρ0]}
最后变为:
min ⁡ ϕ , ρ J ( ϕ , ρ ) = ∑ i = 1 N ∥ z i − exp ⁡ ( ϕ ∧ ) p i ∥ 2 2 \mathop {\min }\limits_{\phi,\rho} J(\phi,\rho)=\sum\limits_{i = 1}^N {\left\| {{z_i} - \exp ({\phi ^ \wedge) }{p_i}} \right\|_2^2} ϕ,ρminJ(ϕ,ρ)=i=1Nziexp(ϕ)pi22

3.2 在李群SO(3)上的扰动模型:

对旋转矩阵R进行扰动△R,对应在李代数上为δψ,利用李代数求扰动模型:
∂ ( R p ) ∂ φ = lim ⁡ φ → 0 exp ⁡ ( φ ∧ ) exp ⁡ ( ϕ ∧ ) p − exp ⁡ ( ϕ ∧ ) p φ = − ( R p ) ∧ \begin{aligned} \frac{{\partial (Rp)}}{{\partial \varphi }} &= \mathop {\lim }\limits_{\varphi \to 0} \frac{{\exp ({\varphi ^ \wedge })\exp ({\phi ^ \wedge })p - \exp ({\phi ^ \wedge })p}}{\varphi }\\ &= - {(Rp)^ \wedge } \end{aligned} φ(Rp)=φ0limφexp(φ)exp(ϕ)pexp(ϕ)p=(Rp)
不再叙述推导的过程;

3.3 在李群SE(3)上的扰动模型:

首先说明对应的李代数se(3):
s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 ∣ ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] } se(3) = \{ \xi = \left[ {\begin{matrix} \rho \\ \phi \end{matrix}} \right] \in {\mathbb{R}^6}|\rho \in {\mathbb{R}^3},\phi \in so(3),{\xi ^ \wedge } = \left[ {\begin{matrix} {{\phi ^ \wedge }}&\rho \\ {{0^T}}&0 \end{matrix}} \right]\} se(3)={ξ=[ρϕ]R6ρR3,ϕso(3),ξ=[ϕ0Tρ0]}
其中满足:
e x p ( ξ ∧ ) = T = [ R J ρ 0 T 1 ] exp(\xi ^ \wedge)=T=\left[ {\begin{matrix} R&J\rho \\ {{0^T}}&1 \end{matrix}} \right] exp(ξ)=T=[R0TJρ1]
所以:
∂ ( T p ) ∂ δ ξ = ∂ ( exp ⁡ ( ϕ ∧ ) ) ∂ δ ξ = lim ⁡ δ ξ → 0 exp ⁡ ( δ ξ ∧ ) exp ⁡ ( ξ ∧ ) p − exp ⁡ ( ξ ∧ ) p δ ξ = [ I 3 × 3 − ( R p + t ) ∧ 0 1 × 3 T 0 1 × 3 T ] \begin{aligned} \frac{{\partial (Tp)}}{{\partial \delta \xi }} &=\frac{{\partial (\exp ({\phi ^ \wedge) })}}{{\partial \delta \xi }}\\ &=\mathop {\lim }\limits_{\delta \xi \to 0} \frac{{\exp ({\delta \xi ^ \wedge })\exp ({\xi ^ \wedge })p - \exp ({\xi ^ \wedge })p}}{\delta \xi }\\ &= \left[ {\begin{matrix} {{I_{3 \times 3}}}&{ - {{(Rp + t)}^ \wedge }} \\ {0_{1 \times 3}^T}&{0_{1 \times 3}^T} \end{matrix}} \right] \end{aligned} δξ(Tp)=δξ(exp(ϕ))=δξ0limδξexp(δξ)exp(ξ)pexp(ξ)p=[I3×301×3T(Rp+t)01×3T]

总结

李群李代数的左扰动模型是非常有用的,尤其是在估计位姿的时候。
对于左扰动,我们定义的变换矩阵为:
T k , k − 1 T_{k,k-1} Tk,k1
(这个矩阵的物理意义为:上一个观测位姿下观测点的坐标左乘变换矩阵T可以得到下一个观测位姿下的观测点坐标)
P k = T k , k − 1 ⋅ P k − 1 P_k =T_{k,k-1}\cdot P_{k-1} Pk=Tk,k1Pk1

左扰动定义为:
δ T = δ T k , k − 1 \delta T=\delta T_{k,k-1} δT=δTk,k1
所以有:

T k , k − 1 = δ T k , k − 1 ⋅ T k − 1 T_{k,k-1} = \delta T_{k,k-1} \cdot T_{k-1} Tk,k1=δTk,k1Tk1

同理对于右扰动模型:

T k − 1 ⋅ δ T k − 1 , k = T k − 1 , k T_{k-1} \cdot \delta T_{k-1,k} =T_{k-1,k}\\ Tk1δTk1,k=Tk1,k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值