与视觉slam有关的群
三维旋转矩阵构成了特殊正交群(special orthogonal group)
SO(3)={R∈R3×3∣RRT=I,det(R)=1}
三维变换矩阵构成了特殊欧氏群(special euclidean group)
SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}
群(group)是一种集合加上一种运算的代数结构
记集合为A,运算为·,那么当运算满足以下性质时,称(A,·)成群
1. 封闭性: ∀a1,a2∈A,a1⋅a2∈A . 2. 结合律: ∀a1,a2,a3∈A,(a1⋅a2)⋅a3=a1⋅(a2⋅a3) . 3. 幺元: ∃a0∈A, s.t. ∀a∈A,a0⋅a=a⋅a0=a . 4. 逆: ∀a∈A,∃a−1∈A, s.t. a⋅a−1=a0 .
如果满足交换律,就是交换群,矩阵很少有交换群
李群与李代数在wiki上的定义
李群是指具有光滑(连续)性质的群,SO(3)和SE(3)表示的空间的旋转和变换,它一定是连续的,所以是李群。
对于任意旋转矩阵 R
RRT=I
它是对时间的函数
R(t)R(t)T=I
等式两边对时间求导
(矩阵对标量求导就是每个entry求导后转置)
R˙(t)R(t)T+R(t)R˙(t)T=0
R˙(t)R(t)T=−(R˙(t)R(t)T)T
引入向量与反对称矩阵的转换标志
a∧=A=⎣⎢⎡0a3−a2−a30a1a2−a10⎦⎥⎤,A∨=a
由于 R˙(t)R(t)T 是一个反对称矩阵,所以有
R˙(t)R(t)T=ϕ(t)∧
R˙(t)=ϕ(t)∧R(t)
可以看出对 R 求导就是左乘一个 ϕ(t)∧
在原点处 t0=0 ,假设 R(0)=I,在原点处泰勒展开
R(t)≈R(t0)+R˙(t0)(t−t0)&=I+ϕ(t0)∧(t)
可以看出 ϕ 反应了 R 导数的性质,故称它为 SO(3) 原点附近的正切空间(tangent space),设 ϕ(t0)=ϕ0
R˙(t)=ϕ(t0)∧R(t)=ϕ0∧R(t)
将它看成一阶线性齐次微分方程,解得
R(t)=exp(ϕ0∧t)
此处并不是传统意义上的 eϕ0∧t
该式说明对于任意 t 都可以找到 R 和 ϕ 的对应关系,这称为指数映射(exponential map)
ϕ 就是 SO(3) 对应的李代数 so(3)
每个李群都有对应的李代数,李代数描述了李群的局部性质,准确地说,是单位元附近的正切空间
李代数由一个集合 V ,一个数域 F ,和一个二元运算 [,] 组成。如果它们满足以下几条性质,称 (V,F,[,]) 为一个李代数 g
1. 封闭性 ∀X,Y∈V,[X,Y]∈V .
2. 叉线性 ∀X,Y,Z∈V,a,b∈F, 有:
[aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
3. 自反性 ∀X∈V,[X,X]=0 .
4. 雅可比等价 ∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[Y,X]]+[Y,[Z,X]]=0
二元运算被称为李括号(lie bracket),表达了两个元素的差异
李代数的例子,集合是三维向量,数域是实数,二元运算是叉积
g=(R3,R,×)
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}
Φ=ϕ∧=⎣⎢⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎥⎤∈R3×3
[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨
它们是一个由三维向量组成的集合,每个向量对应一个反对称矩阵,可以用于表达旋转矩阵的导数
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧0Tρ0]∈R4×4}
前三维为平移,后三维为旋转,就是so(3)中的元素,此处 ^ 不再表示反对称
可以简单地理解成se(3)就是由一个平移加上一个so(3)元素构成的向量,虽然此处并不是直接平移
ξ∧=[ϕ∧0Tρ0]∈R4×4
[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨
指数映射
R=exp(ϕ∧)
有泰勒展式得
exp(ϕ∧)=n=0∑∞n!1(ϕ∧)n
由于幂次太多不好计算,考虑将 ϕ 分解成 θa ,因为 ϕ 是三维向量,可以分解成方向和模长,此处 ∣∣a∣∣=1,这样又如下两条性质
a∧a∧=aaT−I
a∧a∧a∧=−a∧
这样就可以对泰勒展式进行化简
exp(ϕ∧)=exp(θa∧)=n=0∑∞n!1(θa∧)n=I+θa∧+2!1θ2a∧a∧+3!1θ3a∧a∧a∧+4!1θ4(a∧)4+…=aaT−a∧a∧+θa∧+2!1θ2a∧a∧−3!1θ3a∧−4!1θ4(a∧)2+…=aaT+(θ−3!1θ3+5!1θ5−…)a∧−(1−2!1θ2+4!1θ4−…)a∧a∧=a∧a∧+I+sinθa∧−cosθa∧a∧=(1−cosθ)a∧a∧+I+sinθa∧=cosθI+(1−cosθ)aaT+sinθa∧
最终结果
exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧
这与罗德里格斯公式一致,说明so(3)实际上就是由所谓的旋转向量组成的空间。这样so(3)中任意一个向量对应到了SO(3)中的旋转矩阵
反过来可以定义对数映射,表示SO(3)到so(3)
ϕ=ln(R)∨=(n=0∑∞n+1(−1)n(R−I)n+1)∨
但实际不应该这样求,更简单的方法是
θ=arccos(2tr(R)−1)
Rn=n
指数映射是满射,不是单射,这意味着可能存在多个so(3)对应同一个SO(3)。但是,把旋转角固定在[-π,+π]之间,就是一一对应的
旋转矩阵的导数可以由旋转向量指定。总结一下就是 R 对时间求导后的 R˙(t)R(t)T 是个反对称矩阵,那就有个 ϕ 它是个三维向量,变成旋转向量,指数映射刚好可以从罗德里格斯公式求出
求解过程与so(3)相似
exp(ξ∧)=[∑n=0∞n!1(ϕ∧)n∑n=0∞(n+1)!1(ϕ∧)nρ0T1]≜[R0TJρ1]=T
n=0∑∞(n+1)!1(ϕ∧)n=I+2!1θa∧+3!1θ2(a∧)2+4!1θ3(a∧)3+5!1θ4(a∧)4…=θ1(2!1θ2−4!1θ4+⋯)(a∧)+θ1(3!1θ3−51θ5+⋯)(a∧)2+I=θ1(1−cosθ)(a∧)+θθ−sinθ(aaT−I)+I=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧= def J
J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧
由以下两条可以求出 ϕ
θ=arccos(2tr(R)−1)
Rn=n
由 ϕ 可以求出 J,ρ 可以通过解线性方程求得
t=Jρ
转换关系 (image
)
由于李群上无加法,所以很难对李群求导,有两个思路。利用李代数上加法定义李群元素的导数?利用指数映射和对数映射完成转换
要解决的基本问题:李代数上的加法是否等价于李群上的乘法?即下式是否成立?
exp(ϕ1∧)exp(ϕ2∧)=exp((ϕ1+ϕ2)∧)?
ln(exp(A)exp(B))=A+B?
答案是不成立,计算公式是BCH公式
ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]−121[B,[A,B]]+⋯
当其中一个为小量时,bch拥有线性近似表示(分为左乘模型和右乘模型)
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2Jr(ϕ1)−1ϕ2+ϕ1 if ϕ1 is small if ϕ2 is small
Jl=J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧
Jl−1=2θcot2θI+(1−2θcot2θ)aaT−2θa∧
Jr(ϕ)=Jl(−ϕ)
这样就解决了李群乘法和李代数加法的问题
exp(Δϕ∧)exp(ϕ∧)=exp((ϕ+Jl−1(ϕ)Δϕ)∧)
exp((ϕ+Δϕ)∧)=exp((JlΔϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((JrΔϕ)∧)
exp(Δξ∧)exp(ξ∧)≈exp((Jl−1Δξ+ξ)∧)exp(ξ∧)exp(Δξ∧)≈exp((Jr−1Δξ+ξ)∧)
假设机器人的位姿为 T ,它观测到一个世界坐标系位于 p 的点,产生一个观测数据 z ,假设噪声是 w
z=Tp+w
误差
e=z−Tp
假设一共有 N 个这样的路标点和观测,就有 N 个式子。那么对机器人进行位姿估计相当于寻找一个最优的 T ,使得误差最小化
TminJ(T)=i=1∑N∥zi−Tpi∥22
求解类似问题都要用到导数,由于SO(3) SE(3)上没有很好地定义加法,所以求导很麻烦
它们的李代数上定义了良好的加法,所以用李代数求导
这样就有两种思路:
对 R 对应的李代数加上小量,求相对于小量的变化率(导数模型)
对 R 左乘或右乘一个小量,求相对于小量的李代数的变化率(扰动模型)
考虑 SO(3) 上的情况,假设对一个空间点 p 进行旋转,得到 Rp 现在要计算旋转之后的点的坐标相对于旋转的导数,非正式地记为
∂R∂(Rp)
由于它在李群上不好计算,所以转成李代数
设 R 对应的李代数为 ϕ
∂ϕ∂(exp(ϕ∧)p)=δϕ→0limδϕexp((ϕ+δϕ)∧)p−exp(ϕ∧)p=δϕ→0limδϕexp((Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p≈δϕ→0limδϕ(I+(Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p=δϕ→0limδϕ(Jlδϕ)∧exp(ϕ∧)p=δϕ→0limδϕ−(exp(ϕ∧)p)∧Jlδϕ=−(Rp)∧Jl
这样就推导出旋转后的点相对于李代数的导数
∂ϕ∂(Rp)=−(Rp)∧Jl
对 R 左乘一个扰动 ΔR ,设左扰动对应的李代数为 φ,对 φ 求导
∂φ∂(Rp)=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p≈φ→0limφ(1+φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφφ∧Rp=φ→0limφ−(Rp)∧φ=−(Rp)∧
∂δξ∂(Tp)=δξ→0limδξexp(δξ∧)exp(ξ∧)p−exp(ξ∧)p≈δξ→0limδξ(I+δξ∧)exp(ξ∧)p−exp(ξ∧)p=δξ→0limδξδξ∧exp(ξ∧)p=δξ→0limδξ[δϕ∧0Tδρ0][Rp+t1]=δξ→0limδξ[δϕ∧(Rp+t)+δρ0]=[I0T−(Rp+t)∧0T]≜(Tp)⊙
v1.4.14