SLAM公式引出、推导和理解 1-2

1.7 李群李代数

(Group)是一种集合加上另一种运算的代数结构。把集合记作 A A A ,运算记作 ⋅ \cdot ,群可以记作 G = ( A , ⋅ ) G=(A,\cdot) G=(A,)李群是指具有连续(光滑)性质的群。
三维旋转矩阵和变换矩阵对应着李群这一概念。 S O ( 3 ) = { R ∈ R 3 × 3 ∣ R R T = I , d e t ( R ) = 1 } S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } \begin{aligned}&SO(3)=\left\{R\in \mathbb{R}^{3\times 3}|RR^T=I,det(R)=1\right\}\\&SE(3)=\left\{T=\left [ \begin{matrix}R&t\\0^T&1\end{matrix} \right ]\in\mathbb{R}^{4\times 4}|R\in SO(3),t\in \mathbb{R}^3\right\}\end{aligned} SO(3)={RR3×3RRT=I,det(R)=1}SE(3)={T=[R0Tt1]R4×4RSO(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)这一点对于进一步优化(求导等问题)来说,是很棘手的问题。但是对于乘法是封闭的。 R 1 R 2 ∈ S O ( 3 ), T 1 T 2 ∈ S E ( 3 ) R_1R_2\in SO(3),T_1T_2\in SE(3) R1R2SO(3),T1T2SE(3)
由于对任意旋转矩阵 R R R ,满足 R R T = I RR^T=I RRT=I这一性质。 R R R 是某相机随时间变换的旋转,即为时间的函数: R ( t ) R(t) R(t)。有 R ( t ) R ( t ) T = I R(t)R(t)^T=I R(t)R(t)T=I对时间求导得 R ˙ ( t ) R ( t ) T + R ( t ) R ˙ ( t ) T = 0 R ˙ ( t ) R ( t ) T = − ( R ˙ ( t ) R ( t ) T ) T \begin{aligned}\dot R(t)R(t)^T+R(t)\dot R(t)^T=0\\\dot R(t)R(t)^T=-(\dot R(t)R(t)^T)^T\end{aligned} R˙(t)R(t)T+R(t)R˙(t)T=0R˙(t)R(t)T=(R˙(t)R(t)T)T可以看出 R ˙ ( t ) R ( t ) T \dot R(t)R(t)^T R˙(t)R(t)T反对称矩阵(anti-symmetric matrix)。反对称矩阵就是向量和矩阵的映射关系。
由式子(1.1.3)可知,对任意反对称矩阵,可以找到与之一一对应得向量。把这个运算用 ∨ {}^\vee 表示( A A A 为矩阵, a a a 为向量,用符号 ∧ {}^\wedge 表示从向量到矩阵的转换,符号 ∨ {}^\vee 表示从矩阵到向量的转换): a ∧ = A = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] , A ∨ = a a^\wedge=A=\left[\begin{matrix}0&-a_3&a_2\\a_3&0&-a_1\\-a_2&a_1&0\end{matrix}\right],A^\vee=a a=A= 0a3a2a30a1a2a10 A=a于是,找到三维向量 ϕ ( t ) ∈ R 3 \phi(t)\in\mathbb{R}^3 ϕ(t)R3与之对应。 R ˙ ( t ) R ( t ) T = ϕ ( t ) ∧ R ˙ ( t ) = ϕ ( t ) ∧   R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] R ( t ) (1.7.1) \begin{aligned}\dot R(t)R(t)^T&=\phi(t)^\wedge\\\dot R(t)=\phi(t)^\wedge ~R(t)&=\left[\begin{matrix}0&-\phi_3&\phi_2\\\phi_3&0&-\phi_1\\-\phi_2&\phi_1&0\end{matrix}\right]R(t)\end{aligned}\tag{1.7.1} R˙(t)R(t)TR˙(t)=ϕ(t) R(t)=ϕ(t)= 0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10 R(t)(1.7.1)意味着,每对旋转求一次导数,只需左乘一个 ϕ ∧ ( t ) \phi^\wedge(t) ϕ(t) 矩阵即可。
R ( t ) R(t) R(t) t 0 = 0 t_0=0 t0=0( R ( 0 ) = I R(0)=I R(0)=I)附近进行一阶泰勒展开: R ( t ) ≈ R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t 0 ) ∧   t = I + ϕ 0 ∧   t \begin{aligned}R(t)&\approx R(t_0)+\dot R(t_0)(t-t_0)\\&=I+\phi(t_0)^\wedge ~t\\&=I+\phi_0^\wedge ~t\end{aligned} R(t)R(t0)+R˙(t0)(tt0)=I+ϕ(t0) t=I+ϕ0 t可见, ϕ \phi ϕ 反应了一阶导数性质,它位于正切空间(tangent space)上。
t 0 t_0 t0 附近,假设 ϕ ( t 0 ) = ϕ 0 \phi(t_0)=\phi_0 ϕ(t0)=ϕ0 保持不变,由式子(1.7.1)可知,求解微分方程,且有初始值 R ( t ) = I R(t)=I R(t)=I,解得 R ( t ) = exp ⁡ ( ϕ 0 ∧   t ) R(t)=\exp(\phi_0^\wedge~t) R(t)=exp(ϕ0 t)说明在 t = 0 t=0 t=0 附近,旋转矩阵由 exp ⁡ ( ϕ 0 ∧   t ) \exp(\phi_0^\wedge~t) exp(ϕ0 t) 计算出来。可见,旋转矩阵之间得乘法可以通过上式得指数映射转换为加法,而 ϕ \phi ϕ 正是对应到 S O ( 3 ) SO(3) SO(3) 上的李代数 s o ( 3 ) \mathfrak{so}(3) so(3),因此引出李代数。李代数空间就是有旋转向量组成的空间,其物理意义就是旋转向量。

每个李群都由对应的李代数,李代数描述了李群的局部性质(单位元内的正切空间)。
李代数(Lie Algebra)的定义如下:李代数由一个集合 V \mathbb{V} V、一个数域 F \mathbb{F} F 和一个二元运算 [ , ] [,] [,] (李括号)组成,满足一定性质,则可称( V \mathbb{V} V, F \mathbb{F} F, [ , ] [,] [,])为一个李代数,记作 g \mathfrak{g} g
S O ( 3 ) SO(3) SO(3) 对应的李代数是定义在 R 3 \mathbb{R}^3 R3 上的向量,记作 ϕ \phi ϕ。每个 ϕ \phi ϕ 都可以生成一个反对称矩阵: Φ = ϕ ∧ = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] ∈ R 3 × 3 \Phi=\phi^\wedge=\left[\begin{matrix}0&-\phi_3&\phi_2\\\phi_3&0&-\phi_1\\-\phi_2&\phi_1&0\end{matrix}\right]\in \mathbb{R}^{3\times3} Φ=ϕ= 0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10 R3×3由于向量 ϕ \phi ϕ 与反对称矩阵 Φ \Phi Φ 是一一对应的,因此称 s o ( 3 ) \mathfrak{so}(3) so(3) 的元素是三维向量或者三维反对称矩阵。 s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ ∈ R 3 × 3 } (1.7.2) \mathfrak{so}(3)=\{\phi\in\mathbb{R}^3,\Phi=\phi^\wedge\in\mathbb{R}^{3\times3}\}\tag{1.7.2} so(3)={ϕR3,Φ=ϕR3×3}(1.7.2)李代数 s o ( 3 ) \mathfrak{so}(3) so(3) 与李群 S O ( 3 ) SO(3) SO(3) 的关系由指数映射给定: R = exp ⁡ ( ϕ ∧ ) (1.7.3) R=\exp(\phi^\wedge)\tag{1.7.3} R=exp(ϕ)(1.7.3)
同理,对于 S E ( 3 ) SE(3) SE(3) 李群,对应的李代数 s e ( 3 ) \mathfrak{se}(3) se(3)。有 s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 , ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] ∈ R 4 × 4 } (1.7.4) \mathfrak{se}(3)=\left\{\xi=\left[\begin{matrix}\rho\\\phi\end{matrix}\right]\in\mathbb{R}^6,\rho\in\mathbb{R}^3,\phi\in\mathfrak{so}(3),\xi^\wedge=\left[\begin{matrix}\phi^\wedge&\rho\\0^T&0\end{matrix}\right]\in\mathbb{R}^{4\times4}\right\}\tag{1.7.4} se(3)={ξ=[ρϕ]R6,ρR3,ϕso(3),ξ=[ϕ0Tρ0]R4×4}(1.7.4)把每个 s e ( 3 ) \mathfrak{se}(3) se(3) 元素记作 ξ \xi ξ,它是一个六维向量。前三维 ρ \rho ρ 为平移相关的向量( t = J ρ t=J\rho t=Jρ t t t 为平移向量, J J J 为雅可比矩阵(系数矩阵)),后三维为上文提到的与旋转的向量( s o ( 3 ) \mathfrak{so}(3) so(3) 的元素)。同时拓展了 ∧ {}^\wedge 符号的含义。在 s e ( 3 ) \mathfrak{se}(3) se(3) 中,用该符号将一个六维向量转换成四维矩阵,但是不再表示为反对称。

由式(1.7.3)知,存在指数映射(Exponential Map),如何求解?
任意矩阵的指数映射可以写成一个泰勒展开,但只有在收敛的情况下才会由结果,其结果仍是一个矩阵: exp ⁡ ( A ) = ∑ n = 0 ∞ 1 n ! A n \exp(A)=\sum_{n=0}^\infty\frac{1}{n!}A^n exp(A)=n=0n!1An同样地,对于 s o ( 3 ) \mathfrak{so}(3) so(3) 中的元素 ϕ \phi ϕ 可得, exp ⁡ ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n \exp(\phi^\wedge)=\sum_{n=0}^\infty\frac{1}{n!}(\phi^\wedge)^n exp(ϕ)=n=0n!1(ϕ)n但此定义无法计算(无穷次幂)。令 ϕ = θ a \phi=\theta a ϕ=θa,类似于旋转向量, θ \theta θ 表示大小, a a a 表示方向( a a a 为单位向量)。
由式子(1.1.4)且带入上式可得
exp ⁡ ( ϕ ∧ ) = exp ⁡ ( θ a ∧ ) = ∑ n = 0 ∞ 1 n ! ( θ a ∧ ) n = I + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ + 1 3 ! θ 3 a ∧ a ∧ a ∧ + 1 4 ! θ 4 ( a ∧ ) 4 + ⋯ = a a T + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − ⋯   ) ⏟ sin ⁡ θ a ∧ − ( 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − ⋯   ) ⏟ cos ⁡ θ a ∧ a ∧ = cos ⁡ θ I + ( 1 − cos ⁡ θ ) a a T + sin ⁡ θ a ∧ \begin{aligned} \exp(\phi^\wedge)&=\exp(\theta a^\wedge)\\ &=\sum_{n=0}^\infty \frac{1}{n!}(\theta a^\wedge)^n\\ &=I+\theta a^\wedge+\frac{1}{2!}\theta^2a^\wedge a^\wedge+\frac{1}{3!}\theta ^3a^\wedge a^\wedge a^\wedge+\frac{1}{4!}\theta^4(a^\wedge)^4+\cdots\\ &=aa^T+\underbrace{(\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5-\cdots)}_{\sin \theta}a^\wedge-\underbrace{(1-\frac{1}{2!}\theta^2+\frac{1}{4!}\theta^4-\cdots)}_{\cos\theta}a^\wedge a^\wedge\\ &=\cos\theta I+(1-\cos\theta)aa^T+\sin\theta a^\wedge \end{aligned} exp(ϕ)=exp(θa)=n=0n!1(θa)n=I+θa+2!1θ2aa+3!1θ3aaa+4!1θ4(a)4+=aaT+sinθ (θ3!1θ3+5!1θ5)acosθ (12!1θ2+4!1θ4)aa=cosθI+(1cosθ)aaT+sinθa
整理出
exp ⁡ ( θ a ∧ ) = cos ⁡ θ I + ( 1 − cos ⁡ θ ) a a T + sin ⁡ θ a ∧ (1.7.5) \exp(\theta a^\wedge)=\cos\theta I+(1-\cos\theta)aa^T+\sin\theta a^\wedge\tag{1.7.5} exp(θa)=cosθI+(1cosθ)aaT+sinθa(1.7.5)

(不将 ϕ ∧ \phi ^ \wedge ϕ 展开为 θ a ∧ \theta a ^ \wedge θa ,则有如下公式)
exp ⁡ ( ϕ ∧ ) = I + sin ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ ϕ ∧ + 1 − cos ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 2 ( ϕ ∧ ) 2 \exp ( \phi ^ \wedge ) = I + \frac{\sin(\|\phi\|)}{\|\phi\|}\phi^\wedge + \frac{1 - \cos(\|\phi\|)}{\|\phi\|^2}(\phi^\wedge)^2 exp(ϕ)=I+ϕsin(ϕ)ϕ+ϕ21cos(ϕ)(ϕ)2

上式与式子(1.4.1)如出一辙。这说明 s o ( 3 ) \mathfrak{so}(3) so(3) 就是所谓的旋转向量组成的空间,而指数映射即罗德里格斯公式。那么对于求李代数的指数映射和求李群的对数映射分别直接利用式子(1.7.5)和式子(1.4.3)(1.4.4)求得。(对于 θ \theta θ 来说,角度应该固定在 ± π \pm\pi ±π 之间,就存在李群和李代数的单射)。旋转矩阵的导数可以由旋转向量指定,指导着如何在旋转矩阵中进行微积分运算。
s e ( 3 ) \mathfrak{se}(3) se(3) 上的指数映射形式如下: exp ⁡ ( ξ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ξ ∧ ) n = ∑ n = 0 ∞ 1 n ! [ ϕ ∧ ρ 0 T 0 ] n = [ ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n ρ 0 T 1 ] = △ [ R J ρ 0 T 1 ] = T . (1.7.6) \begin{aligned}\exp(\xi^\wedge)&=\sum_{n=0}^\infty\frac{1}{n!}(\xi^\wedge)^n=\sum_{n=0}^\infty\frac{1}{n!}\left[\begin{matrix}\phi^\wedge&\rho\\0^T&0\end{matrix}\right]^n\\&=\left[\begin{matrix} \sum_{n=0}^\infty \frac{1}{n!}(\phi^\wedge)^n&\sum_{n=0}^\infty\frac{1}{(n+1)!}(\phi^\wedge)^n\rho\\0^T&1\end{matrix}\right]\\&\overset{\triangle}{=}\left[\begin{matrix}R&J\rho\\0^T&1\end{matrix}\right]=T.\end{aligned}\tag{1.7.6} exp(ξ)=n=0n!1(ξ)n=n=0n!1[ϕ0Tρ0]n=[n=0n!1(ϕ)n0Tn=0(n+1)!1(ϕ)nρ1]=[R0TJρ1]=T.(1.7.6)其中 J J J 同式子(1.7.5)可得 ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n = sin ⁡ θ θ I + ( 1 − sin ⁡ θ θ ) a a T + 1 − cos ⁡ θ θ a ∧ = d e f J (1.7.7) \sum_{n=0}^\infty\frac{1}{(n+1)!}(\phi^\wedge)^n=\frac{\sin\theta}{\theta}I+\left(1-\frac{\sin\theta}{\theta}\right)aa^T+\frac{1-\cos\theta}{\theta}a^\wedge\overset{def}{=}J\tag{1.7.7} n=0(n+1)!1(ϕ)n=θsinθI+(1θsinθ)aaT+θ1cosθa=defJ(1.7.7)
t = J ρ (1.7.8) t=J\rho\tag{1.7.8} t=Jρ(1.7.8)


在这里插入图片描述

公 式
S O ( 3 ) → s o ( 3 ) SO(3)\to\mathfrak{so}(3) SO(3)so(3)(1.4.3)(1.4.4)
s o ( 3 ) → S O ( 3 ) \mathfrak{so}(3)\to SO(3) so(3)SO(3)(1.7.5)
S E ( 3 ) → s e ( 3 ) SE(3)\to\mathfrak{se}(3) SE(3)se(3)(1.4.3)(1.4.4)(1.7.8)
s e ( 3 ) → S E ( 3 ) \mathfrak{se}(3)\to SE(3) se(3)SE(3)(1.7.6)(1.7.7)

1.8 李代数求导

对于李群 S O ( 3 ) SO(3) SO(3) 和李代数 s e ( 3 ) \mathfrak{se}(3) se(3) 来说,是否有
R 1 R 2 = exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) = ? exp ⁡ ( ϕ 1 ∧ + ϕ 2 ∧ ) = exp ⁡ ( ( ϕ 1 + ϕ 2 ) ∧ ) \begin{aligned} R_1R_2&=\exp(\phi_1^\wedge)\exp(\phi_2^\wedge)\\&\overset{?}{=}\exp(\phi_1^\wedge+\phi_2^\wedge)\\&=\exp((\phi_1+\phi_2)^\wedge) \end{aligned} R1R2=exp(ϕ1)exp(ϕ2)=?exp(ϕ1+ϕ2)=exp((ϕ1+ϕ2))
exp ⁡ ( ϕ 1 ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ 1 ∧ ) n = 1 + ϕ 1 ∧ + 1 2 ! ( ϕ 1 ∧ ) 2 + ⋯ + 1 n ! ( ϕ 1 ∧ ) n + ⋯ \exp(\phi_1^\wedge)=\sum_{n=0}^\infty\frac{1}{n!}(\phi_1^\wedge)^n=1+\phi_1^\wedge+\frac{1}{2!}(\phi_1^\wedge)^2+\cdots+\frac{1}{n!}(\phi_1^\wedge)^n+\cdots exp(ϕ1)=n=0n!1(ϕ1)n=1+ϕ1+2!1(ϕ1)2++n!1(ϕ1)n+可得出 exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) = [ 1 + ϕ 1 ∧ + 1 2 ! ( ϕ 1 ∧ ) 2 + ⋯ + 1 n ! ( ϕ 1 ∧ ) n + ⋯   ] [ 1 + ϕ 2 ∧ + 1 2 ! ( ϕ 2 ∧ ) 2 + ⋯ + 1 n ! ( ϕ 2 ∧ ) n + ⋯   ] = 1 + ( ϕ 1 ∧ + ϕ 2 ∧ ) + 1 2 ! ( ( ϕ 2 ∧ ) 2 + ( ϕ 2 ∧ ) 2 + 2 ϕ 1 ∧ ϕ 2 ∧ ) + ⋯ \begin{aligned}\exp(\phi_1^\wedge)\exp(\phi_2^\wedge)&=\left[1+\phi_1^\wedge+\frac{1}{2!}(\phi_1^\wedge)^2+\cdots+\frac{1}{n!}(\phi_1^\wedge)^n+\cdots\right]\left[1+\phi_2^\wedge+\frac{1}{2!}(\phi_2^\wedge)^2+\cdots+\frac{1}{n!}(\phi_2^\wedge)^n+\cdots\right]\\&=1+\left(\phi_1^\wedge+\phi_2^\wedge\right)+\frac{1}{2!}\left((\phi_2^\wedge)^2+(\phi_2^\wedge)^2+2\phi_1^\wedge\phi_2^\wedge\right)+\cdots\end{aligned} exp(ϕ1)exp(ϕ2)=[1+ϕ1+2!1(ϕ1)2++n!1(ϕ1)n+][1+ϕ2+2!1(ϕ2)2++n!1(ϕ2)n+]=1+(ϕ1+ϕ2)+2!1((ϕ2)2+(ϕ2)2+2ϕ1ϕ2)+ exp ⁡ ( ( ϕ 1 + ϕ 2 ) ∧ ) = exp ⁡ ( ϕ 1 ∧ + ϕ 2 ∧ ) = 1 + ( ϕ 1 ∧ + ϕ 2 ∧ ) + 1 2 ! ( ϕ 1 ∧ + ϕ 2 ∧ ) 2 + ⋯ = 1 + ( ϕ 1 ∧ + ϕ 2 ∧ ) + 1 2 ! ( ( ϕ 2 ∧ ) 2 + ( ϕ 2 ∧ ) 2 + ϕ 1 ∧ ϕ 2 ∧ + ϕ 2 ∧ ϕ 1 ∧ ) + ⋯ \begin{aligned}\exp((\phi_1+\phi_2)^\wedge)&=\exp(\phi_1^\wedge+\phi_2^\wedge)\\&=1+(\phi_1^\wedge+\phi_2^\wedge)+\frac{1}{2!}(\phi_1^\wedge+\phi_2^\wedge)^2+\cdots\\&=1+(\phi_1^\wedge+\phi_2^\wedge)+\frac{1}{2!}\left((\phi_2^\wedge)^2+(\phi_2^\wedge)^2+\phi_1^\wedge\phi_2^\wedge+\phi_2^\wedge\phi_1^\wedge\right)+\cdots\end{aligned} exp((ϕ1+ϕ2))=exp(ϕ1+ϕ2)=1+(ϕ1+ϕ2)+2!1(ϕ1+ϕ2)2+=1+(ϕ1+ϕ2)+2!1((ϕ2)2+(ϕ2)2+ϕ1ϕ2+ϕ2ϕ1)+由于 ϕ ∧ \phi^\wedge ϕ 为矩阵, ϕ 1 ∧ ϕ 2 ∧ ≠ ϕ 2 ∧ ϕ 1 ∧ \phi_1^\wedge\phi_2^\wedge\neq\phi_2^\wedge\phi_1^\wedge ϕ1ϕ2=ϕ2ϕ1,该式不成立。
也就是说,当 A , B A,B A,B 为矩阵时, ln ⁡ ( exp ⁡ ( A ) exp ⁡ ( B ) ) ≠ A + B \ln (\exp(A)\exp(B))\neq A+B ln(exp(A)exp(B))=A+B由Baker-Campbell-Hausdorff公式(BCH公式)给出展开式前几项 ln ⁡ ( exp ⁡ ( A ) exp ⁡ ( 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]]+\cdots ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+其中 [   ] [~] [ ] 为李括号。
特别地,对于 S O ( 3 ) SO(3) SO(3) 上的李代数 [ ln ⁡ ( exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) ) ] ∨ [\ln(\exp(\phi_1^\wedge)\exp(\phi_2^\wedge))]^\vee [ln(exp(ϕ1)exp(ϕ2))],当 ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2 为小量时(小量的二次以上的项都可以被忽略)。BCH近似表达为 [ ln ⁡ ( exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) ) ] ∨ ≈ { J l − 1 ( ϕ 2 ) ϕ 1 + ϕ 2    当  ϕ 1  为小量 ϕ 1 + J r − 1 ( ϕ 1 ) ϕ 2    当  ϕ 2  为小量 (1.8.1) [\ln\left(\exp(\phi_1^\wedge)\exp(\phi_2^\wedge)\right)]^\vee\approx\begin{cases}J_l^{-1}(\phi_2)\phi_1+\phi_2~~~当 ~\phi_1~为小量\\ \phi_1+J_r^{-1}(\phi_1)\phi_2~~~当 ~\phi_2~为小量\end{cases}\tag{1.8.1} [ln(exp(ϕ1)exp(ϕ2))]{Jl1(ϕ2)ϕ1+ϕ2    ϕ1 为小量ϕ1+Jr1(ϕ1)ϕ2    ϕ2 为小量(1.8.1)其中,左乘BCH近似雅可比 J l J_l Jl 事实上就是式子(1.7.7)
J l = J = sin ⁡ θ θ I + ( 1 − sin ⁡ θ θ ) a a T + 1 − cos ⁡ θ θ a ∧ J_l=J=\frac{\sin\theta}{\theta}I+\left(1-\frac{\sin\theta}{\theta}\right)aa^T+\frac{1-\cos\theta}{\theta}a^\wedge Jl=J=θsinθI+(1θsinθ)aaT+θ1cosθa
逆为:
J l − 1 = θ 2 cot ⁡ θ 2 I + ( 1 − θ 2 cot ⁡ θ 2 ) a a T − θ 2 a ∧ J_l^{-1}=\frac{\theta}{2}\cot\frac{\theta}{2}I+\left(1-\frac{\theta}{2}\cot\frac{\theta}{2}\right)aa^T-\frac{\theta}{2}a^\wedge Jl1=2θcot2θI+(12θcot2θ)aaT2θa
右乘雅可比 J r J_r Jr 仅需对自变量去负号即可

J r ( ϕ ) = J l ( − ϕ ) J_r(\phi)=J_l(-\phi) Jr(ϕ)=Jl(ϕ) J r ( θ ) = J l ( − θ ) J_r(\theta)=J_l(-\theta) Jr(θ)=Jl(θ)

(不将 ϕ ∧ \phi ^ \wedge ϕ 展开为 θ a ∧ \theta a ^ \wedge θa ,则有如下公式)
J r ( ϕ ∧ ) = I − 1 − cos ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 2 ϕ ∧ + ( ∥ ϕ ∥ − sin ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 3 ) ( ϕ ∧ ) 2 J_r(\phi^\wedge) = I - \frac{1-\cos(\|\phi\|)}{\|\phi\|^2}\phi^\wedge + \left(\frac{\|\phi\|-\sin(\|\phi\|)}{\|\phi\|^3}\right)(\phi^\wedge)^2 Jr(ϕ)=Iϕ21cos(ϕ)ϕ+(ϕ3ϕsin(ϕ))(ϕ)2 J r − 1 ( ϕ ∧ ) = I + 1 2 ϕ ∧ + ( 1 ∥ ϕ ∥ 2 − 1 + cos ⁡ ( ∥ ϕ ∥ ) 2 ⋅ ∥ ϕ ∥ ⋅ sin ⁡ ( ∥ ϕ ∥ ) ) ( ϕ ∧ ) 2 J_r^{-1} (\phi^\wedge)= I + \frac{1}{2}\phi^\wedge+ \left(\frac{1}{\|\phi\|^2} - \frac{1+\cos(\|\phi\|)}{2\cdot\|\phi\|\cdot\sin(\|\phi\|)} \right)(\phi^\wedge)^2 Jr1(ϕ)=I+21ϕ+(ϕ212ϕsin(ϕ)1+cos(ϕ))(ϕ)2
表明,当对一个旋转矩阵 R 2 R_2 R2 (李代数为 ϕ 2 \phi_2 ϕ2 )左乘一个微小的旋转矩阵 R 1 R_1 R1(李代数为 ϕ 1 \phi_1 ϕ1)时,可以近似的看操作,在原有的李代数 ϕ 2 \phi_2 ϕ2 的基础上添加了一项 J l ( ϕ 2 ) − 1 ϕ 1 J_l(\phi_2)^{-1}\phi_1 Jl(ϕ2)1ϕ1
上述可理解为:对某个旋转 R R R,对应的李代数为 ϕ \phi ϕ。左乘一个微小的旋转 Δ R \Delta R ΔR,对应的李代数为 Δ ϕ \Delta\phi Δϕ。那么在李群上的结果就是 Δ R ⋅ R \Delta R\cdot R ΔRR,而在李代数上,根据BCH近似,为 J l − 1 ( ϕ ) Δ ϕ + ϕ J_l^{-1}(\phi)\Delta \phi+\phi Jl1(ϕ)Δϕ+ϕ,写成 exp ⁡ ( Δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ( J l − 1 ( ϕ ) Δ ϕ + ϕ ) ∧ ) (1.8.2) \exp(\Delta \phi^\wedge)\exp(\phi^\wedge)=\exp\left((J_l^{-1}(\phi)\Delta\phi+\phi)^\wedge\right)\tag{1.8.2} exp(Δϕ)exp(ϕ)=exp((Jl1(ϕ)Δϕ+ϕ))(1.8.2)反之,如果在李代数上进行加法 Δ ϕ + ϕ \Delta\phi+\phi Δϕ+ϕ,那么可近似为李群上代左右雅可比的乘法: exp ⁡ ( ( ϕ + Δ ϕ ) ∧ ) = exp ⁡ ( J l ( ϕ ) Δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ϕ ∧ ) exp ⁡ ( J r ( ϕ ) Δ ϕ ∧ ) (1.8.3) \exp\left((\phi+\Delta\phi)^\wedge\right)=\exp\left(J_l(\phi)\Delta\phi^\wedge\right)\exp(\phi^\wedge)=\exp(\phi^\wedge)\exp\left(J_r(\phi)\Delta\phi^\wedge\right)\tag{1.8.3} exp((ϕ+Δϕ))=exp(Jl(ϕ)Δϕ)exp(ϕ)=exp(ϕ)exp(Jr(ϕ)Δϕ)(1.8.3)(上式中的雅可比矩阵为系数矩阵,左乘右乘体现在李群上)
同理,对于李群 S E ( 3 ) SE(3) SE(3) 来说,也有类似的BCH近似: exp ⁡ ( Δ ξ ∧ ) exp ⁡ ( ξ ∧ ) ≈ exp ⁡ ( ( J l − 1 Δ ξ + ξ ) ∧ ) exp ⁡ ( ξ ∧ ) exp ⁡ ( Δ ξ ∧ ) ≈ exp ⁡ ( ( J r − 1 Δ ξ + ξ ) ∧ ) (1.8.4) \exp(\Delta\xi^\wedge)\exp(\xi^\wedge)\approx\exp\left((\mathcal{J}_l^{-1}\Delta\xi+\xi)^\wedge\right)\\\exp(\xi^\wedge)\exp(\Delta\xi^\wedge)\approx\exp\left((\mathcal{J}_r^{-1}\Delta\xi+\xi)^\wedge\right)\tag{1.8.4} exp(Δξ)exp(ξ)exp((Jl1Δξ+ξ))exp(ξ)exp(Δξ)exp((Jr1Δξ+ξ))(1.8.4)其中, J l \mathcal{J}_l Jl 形式比较复杂,是一个 6 × 6 6\times6 6×6 矩阵。(过于繁琐,不使用。)

对相机的位姿估计,该位姿是由 S O ( 3 ) SO(3) SO(3)上的旋转矩阵或 S E ( 3 ) SE(3) SE(3) 上的变换矩阵描述的。设某一时刻相机的位姿为 T T T,相机观察到可一个世界坐标位于 p p p 的点,产生了一个观测数据 z z z,有 z = T p + w z=Tp+w z=Tp+w其中 w w w 为噪声。因此会定义理想观测和实际数据的误差为: e = z − T p e=z-Tp e=zTp假设共有 N N N 个路标点 p p p 和观测点 z z z,那么对机器人的位姿估计就相当于寻找一个最优的 T T T,使整体误差最小化: min ⁡ T J ( T ) = min ⁡ T ( ∑ i = 1 N ∥ z i − T p i ∥ 2 2 ) (1.8.5) \min_TJ(T)=\min_T\left(\sum_{i=1}^N\|z_i-Tp_i\|_2^2\right)\tag{1.8.5} TminJ(T)=Tmin(i=1NziTpi22)(1.8.5)显然,求解此问题需要计算目标函数 J ( T ) J(T) J(T) 关于变换矩阵 T T T 的导数。

通常来讲,我们会构建与位姿有关的函数,然后去讨论该函数对于位姿的导数,已调整当前的估计值。求导分为两种思路:导数模型,对 R R R 对应的李代数 ϕ \phi ϕ 加上小量 δ ϕ \delta\phi δϕ,求相当于小量 δ ϕ \delta\phi δϕ 的变化率(通过导数的定义);扰动模型,对 R R R 左乘或右乘一个小量 Δ R \Delta R ΔR,求相对于小量 Δ R \Delta R ΔR 的李代数 φ \varphi φ 的变化率(相对于扰动的变化率)。

导数模型: ∂ exp ⁡ ( ϕ ∧ ) p ∂ ϕ = lim ⁡ δ ϕ → 0 exp ⁡ ( ϕ + δ ϕ ) ∧ p − exp ⁡ ( ϕ ∧ ) p δ ϕ = lim ⁡ δ ϕ → 0 exp ⁡ ( J l − 1 ( ϕ ) δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) p − exp ⁡ ( ϕ ∧ ) p δ ϕ = lim ⁡ δ ϕ → 0 ( I + J l − 1 ( ϕ ) δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) p − exp ⁡ ( ϕ ∧ ) p δ ϕ = lim ⁡ δ ϕ → 0 ( J l − 1 ( ϕ ) δ ϕ ) ∧ exp ⁡ ( ϕ ∧ ) p δ ϕ = lim ⁡ δ ϕ → 0 − ( exp ⁡ ( ϕ ∧ ) p ) ∧ ( J l − 1 ( ϕ ) δ ϕ ) δ ϕ = − ( R p ) ∧ J l (1.8.6) \begin{aligned}\frac{\partial\exp(\phi^\wedge)p}{\partial \phi}&=\lim_{\delta\phi\to0}\frac{\exp(\phi+\delta\phi)^\wedge p-\exp(\phi^\wedge)p}{\delta\phi}\\&=\lim_{\delta\phi\to0}\frac{\exp(J_l^{-1}(\phi)\delta\phi^\wedge)\exp(\phi^\wedge)p-\exp(\phi^\wedge)p}{\delta\phi}\\&=\lim_{\delta\phi\to0}\frac{(I+J_l^{-1}(\phi)\delta\phi^\wedge)\exp(\phi^\wedge)p-\exp(\phi^\wedge)p}{\delta\phi}\\&=\lim_{\delta\phi\to0}\frac{(J_l^{-1}(\phi)\delta\phi)^\wedge\exp(\phi^\wedge)p}{\delta\phi}\\&=\lim_{\delta\phi\to0}\frac{-(\exp(\phi^\wedge)p)^\wedge (J_l^{-1}(\phi)\delta\phi)}{\delta\phi}\\&=-(Rp)^\wedge J_l\end{aligned}\tag{1.8.6} ϕexp(ϕ)p=δϕ0limδϕexp(ϕ+δϕ)pexp(ϕ)p=δϕ0limδϕexp(Jl1(ϕ)δϕ)exp(ϕ)pexp(ϕ)p=δϕ0limδϕ(I+Jl1(ϕ)δϕ)exp(ϕ)pexp(ϕ)p=δϕ0limδϕ(Jl1(ϕ)δϕ)exp(ϕ)p=δϕ0limδϕ(exp(ϕ)p)(Jl1(ϕ)δϕ)=(Rp)Jl(1.8.6)

扰动模型: ∂ R p ∂ φ = lim ⁡ φ → 0 exp ⁡ ( φ ∧ ) exp ⁡ ( ϕ ∧ ) p − exp ⁡ ( ϕ ∧ ) p φ = lim ⁡ φ → 0 ( I + φ ∧ ) exp ⁡ ( ϕ ∧ ) p − exp ⁡ ( ϕ ∧ ) p φ = lim ⁡ φ → 0 φ ∧ exp ⁡ ( ϕ ∧ ) p φ = lim ⁡ φ → 0 − ( exp ⁡ ( ϕ ∧ ) p ) ∧ φ φ = − ( R p ) ∧ (1.8.7) \begin{aligned}\frac{\partial Rp}{\partial \varphi}&=\lim_{\varphi\to0}\frac{\exp(\varphi^\wedge)\exp(\phi^\wedge)p-\exp(\phi^\wedge)p}{\varphi}\\&=\lim_{\varphi\to0}\frac{(I+\varphi^\wedge)\exp(\phi^\wedge)p-\exp(\phi^\wedge)p}{\varphi}\\&=\lim_{\varphi\to0}\frac{\varphi^\wedge\exp(\phi^\wedge)p}{\varphi}\\&=\lim_{\varphi\to0}\frac{-(\exp(\phi^\wedge)p)^\wedge\varphi}{\varphi}\\&=-(Rp)^\wedge\end{aligned}\tag{1.8.7} φRp=φ0limφexp(φ)exp(ϕ)pexp(ϕ)p=φ0limφ(I+φ)exp(ϕ)pexp(ϕ)p=φ0limφφexp(ϕ)p=φ0limφ(exp(ϕ)p)φ=(Rp)(1.8.7)由此可知,扰动模型更为实用。

给出 S E ( 3 ) SE(3) SE(3) 上的扰动模型:某一空间点 p p p 经过一次变换 T T T (李代数为 ξ \xi ξ)之后,得到 T p Tp Tp。给出 T T T 左乘一个扰动 Δ T = exp ⁡ ( δ ξ ∧ ) \Delta T=\exp(\delta\xi^\wedge) ΔT=exp(δξ),设扰动项的李代数为 δ ξ = [ δ ρ     δ ϕ ] T \delta\xi=[\delta\rho~~~\delta\phi]^T δξ=[δρ   δϕ]T,得出: ∂ ( T p ) ∂ δ ξ = lim ⁡ δ ξ → 0 exp ⁡ ( δ ξ ∧ ) exp ⁡ ( ξ ∧ ) p − exp ⁡ ( ξ ∧ ) p δ ξ = lim ⁡ δ ξ → 0 ( I + δ ξ ∧ ) exp ⁡ ( ξ ∧ ) p − exp ⁡ ( ξ ∧ ) p δ ξ = lim ⁡ δ ξ → 0 δ ξ ∧ exp ⁡ ( ξ ∧ ) p δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ δ ρ 0 T 0 ] [ R p + t 1 ] δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ ( R p + t ) + δ ρ 0 ] [ δ ρ     δ ϕ ] T              分子布局 = [ I − ( R p + t ) ∧ 0 T 0 T ] = d e f ( T p ) ⊙ (1.8.8) \begin{aligned}\frac{\partial (Tp)}{\partial \delta\xi}&=\lim_{\delta\xi\to0}\frac{\exp(\delta\xi^\wedge)\exp(\xi^\wedge)p-\exp(\xi^\wedge)p}{\delta\xi}\\&=\lim_{\delta\xi\to0}\frac{(I+\delta\xi^\wedge)\exp(\xi^\wedge)p-\exp(\xi^\wedge)p}{\delta\xi}\\&=\lim_{\delta\xi\to0}\frac{\delta\xi^\wedge\exp(\xi^\wedge)p}{\delta\xi}\\&=\lim_{\delta\xi\to0}\frac{\left[\begin{matrix}\delta\phi^\wedge&\delta\rho\\0^T&0\end{matrix}\right]\left[\begin{matrix}Rp+t\\1\end{matrix}\right]}{\delta\xi}\\&=\lim_{\delta\xi\to0}\frac{\left[\begin{matrix}\delta\phi^\wedge(Rp+t)+\delta\rho\\0\end{matrix}\right]}{[\delta\rho~~~\delta\phi]^T}~~~~~~~~~~~~~分子布局\\&=\left[\begin{matrix}I&-(Rp+t)^\wedge\\0^T&0^T\end{matrix}\right]\overset{def}{=}(Tp)^\odot\end{aligned}\tag{1.8.8} δξ(Tp)=δξ0limδξexp(δξ)exp(ξ)pexp(ξ)p=δξ0limδξ(I+δξ)exp(ξ)pexp(ξ)p=δξ0limδξδξexp(ξ)p=δξ0limδξ[δϕ0Tδρ0][Rp+t1]=δξ0lim[δρ   δϕ]T[δϕ(Rp+t)+δρ0]             分子布局=[I0T(Rp+t)0T]=def(Tp)(1.8.8)


估计轨迹误差
估计轨迹 T e s t i , i T_{esti,i} Testi,i 和真实轨迹 T g t , i T_{gt,i} Tgt,i,其中 i = 1 , ⋯   , N i=1,\cdots,N i=1,,N,则有绝对轨迹误差(Absolute Trajectory Error,ATE) A T E a l l = 1 N ∑ i = 1 N ∥ log ⁡ ( T g t , i − 1 T e s t i , i ) ∨ ∥ 2 2 ATE_{all}=\sqrt {\frac{1}{N}\sum_{i=1}^N\|\log(T_{gt,i}^{-1}T_{esti,i})^\vee\|_2^2} ATEall=N1i=1Nlog(Tgt,i1Testi,i)22 实际上是每个位姿李代数的均方根误差(Root-Mean-Squared-Error,RMSE)。


齐次坐标

二维平面上,一条直线可以写作 l : a x + b y + c = 0 l:ax+by+c=0 l:ax+by+c=0 表示直线 l l l 的向量可写为 l = ( a , b , c ) T l=(a,b,c)^T l=(a,b,c)T直线上一点 p = ( x , y ) p=(x,y) p=(x,y),写作齐次坐标为 p ~ = ( x , y , 1 ) \tilde{p} =(x,y,1) p~=(x,y,1),则直线 l l l 可用向量内积来表示
a x + b y + c = ( a , b , c ) ( x , y , 1 ) = l T ⋅ p ~ = p ~ T ⋅ l = 0 ax + by + c = (a,b,c) (x,y,1) = l^T \cdot \tilde{p} = \tilde{p}^T \cdot l = 0 ax+by+c=(a,b,c)(x,y,1)=lTp~=p~Tl=0
同理三维空间,有平面 π \pi π
a x + b y + c z + d = ( a , b , c , d ) ( x , y , z , 1 ) = π T ⋅ P ~ = P ~ T ⋅ π = 0 ax + by + cz + d = (a,b,c,d) (x,y,z,1) = \pi^T \cdot \tilde{P} = \tilde{P}^T \cdot \pi = 0 ax+by+cz+d=(a,b,c,d)(x,y,z,1)=πTP~=P~Tπ=0

在齐次坐标下,可以用 p p p q q q 两个点的齐次坐标叉乘结果来表示一条直线 l l l,即 l = p ~ × q ~ l = \tilde{p} \times \tilde{q} l=p~×q~
证: 记 l = p ~ × q ~ l = \tilde{p} \times \tilde{q} l=p~×q~,则有 p ~ T ⋅ ( p ~ × q ~ ) = 0 = p ~ T ⋅ l = l T ⋅ p ~ \tilde{p}^T\cdot(\tilde{p}\times \tilde{q})=0=\tilde{p}^T\cdot l=l^T\cdot \tilde{p} p~T(p~×q~)=0=p~Tl=lTp~
同理,则有 q ~ T ⋅ ( p ~ × q ~ ) = 0 = q ~ T ⋅ l = l T ⋅ q ~ \tilde{q}^T \cdot (\tilde{p} \times \tilde{q}) = 0 = \tilde{q}^T \cdot l = l^T \cdot \tilde{q} q~T(p~×q~)=0=q~Tl=lTq~则点 p p p q q q 都在直线 l l l 上。

也可以用两条直线 l l l m m m 的叉乘表示两条直线的交点的齐次坐标 p p p,即 p ~ = l × m \tilde{p}=l\times m p~=l×m
证:两条非异面直线构成一个平面,直线叉乘可得到该平面法向量。两条直线分别为 l l l m m m,记 l × m = p ~ l\times m = \tilde{p} l×m=p~则有 l T ⋅ ( l × m ) = 0 = l T ⋅ p ~ l^T\cdot (l\times m)=0=l^T\cdot \tilde{p} lT(l×m)=0=lTp~
同理 m T ⋅ ( l × m ) = 0 = m T ⋅ p ~ m^T\cdot (l\times m)=0=m^T\cdot \tilde{p} mT(l×m)=0=mTp~
p p p 既在直线 l l l 上,又在直线 m m m 上,因此点 p p p 为两直线交点。

齐次坐标下点和向量的区别在于第四维。点 p p p 的齐次坐标为 ( a , b , c , 1 ) (a,b,c,1) (a,b,c,1),向量 p p p 的齐次坐标为 ( a , b , c , 0 ) (a,b,c,0) (a,b,c,0)。 向量只有方向,大小,没有起点终点。向量为两个点的差。
如果一个点的齐次坐标最后为0,则认为此点为无限远。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值