很久没写博客了:1、最近比较忙;2、10年的笔记本也坏掉了;3、自己对视觉SLAM了解太浅,虽然没写博客但一直在学习
今天20251026接着写20250817没写完的笔记
补充知识
常见的数学结构包括:代数结构,拓扑结构,序结构。
代数结构:在一种或多种运算下封闭的一个或多个集合。
(拓扑)流形:可以"局部欧几里得空间化"的一个拓扑空间。n维流形是一个拓扑空间,其性质是每个点都有一个邻域,该邻域同胚于n维欧氏空间的一个开集。
光滑流形:也称C∞C^\inftyC∞微分流形、C∞C^\inftyC∞可微流形,是被赋予光滑结构的流形。C∞C^\inftyC∞指无限次可微。
微分结构:可以做微积分的拓扑流形,光滑结构是其中一种。
李群:是群也是光滑流形,同时具有群结构(乘法封闭)、拓扑结构(连续)、光滑结构(无限可微)。
切空间:Ck,k≥1C^k, k\geq 1Ck,k≥1微分流形才具有切空间,切空间是微分流形某点处所有切线方向构成的线性空间。
李代数:李群单位元处的切空间,描述李群的局部性质。切线方向也称为无穷小变换。
由于我的数学比较薄弱,我只能查资料做到不出错,但比如让我说数学结构具体有多少个,那我说不出来。
广义上的结构指集合加结构,如:拓扑结构与拓扑空间同义;狭义上结构只是结构,拓扑空间是非空集合及其上定义的拓扑结构构成。
[1] https://zh.wikipedia.org/wiki/数学结构
[2] https://zh.wikipedia.org/wiki/代数结构
[3]https://zh.wikipedia.org/wiki/流形
[4]https://zh.wikipedia.org/wiki/微分流形
[5]https://zh.wikipedia.org/wiki/微分结构
[6]https://zh.wikipedia.org/wiki/李群
4.1 李群与李代数基础
群是一种集合加上一种运算的代数结构。群的定义见https://leslielee.blog.csdn.net/article/details/145946143
GL(n)GL(n)GL(n):一般线性群,由n×nn\times nn×n可逆矩阵与乘法运算构成的群
SO(n)SO(n)SO(n):特殊正交群,由n×nn\times nn×n旋转矩阵RRR与乘法运算构成的群
SE(n)SE(n)SE(n):特殊欧式群,由n×nn\times nn×n变换矩阵TTT与乘法运算构成的群
这三种群对加法不封闭但对乘法封闭,如:TiTj∈SE(3),Ti,Tj∈SE(3)T_iT_j \in SE(3), T_i, T_j \in SE(3)TiTj∈SE(3),Ti,Tj∈SE(3)
GL(n),SO(n),SE(n)GL(n),SO(n),SE(n)GL(n),SO(n),SE(n)都是(矩阵)李群。
如果RRR随时间连续变化,由其正交性得到:R(t)R(t)T=IR(t)R(t)^T = IR(t)R(t)T=I eq1
由eq1对时间求导,则有R˙(t)R(t)T=−(R˙(t)R(t)T)T\dot R(t) R(t)^T = -(\dot R(t) R(t)^T)^TR˙(t)R(t)T=−(R˙(t)R(t)T)T eq2
由eq2可以得出R˙(t)R(t)T\dot R(t) R(t)^TR˙(t)R(t)T是反对称矩阵。因此,对于任意反对称矩阵必对应一个向量,该向量可以改写为反对称矩阵。
令R˙(t)R(t)T\dot R(t) R(t)^TR˙(t)R(t)T对应的向量为ϕ(t)\phi(t)ϕ(t),则有:
R˙(t)R(t)T=ϕ(t)∧\dot R(t) R(t)^T = \phi(t)^{\wedge}R˙(t)R(t)T=ϕ(t)∧ eq3
注:∧\wedge∧表示将向量改写成反对称矩阵
eq3进一步得到:R˙(t)=ϕ(t)∧R(t)\dot R(t) = \phi(t)^{\wedge} R(t)R˙(t)=ϕ(t)∧R(t)eq4,表明对旋转矩阵每求一次导数只需左乘反对称矩阵即可。
假设R(0)=IR(0)=IR(0)=I,则R(t)R(t)R(t)在t=0t=0t=0处的一阶泰勒展开为:
R(t)≈R(0)+R˙(0)t=I+ϕ(0)∧tR(t) \approx R(0) + \dot R(0) t = I + \phi(0)^{\wedge} tR(t)≈R(0)+R˙(0)t=I+ϕ(0)∧t
假设ϕ(0)\phi(0)ϕ(0)为常数ϕ0\phi_0ϕ0,则有:
R(t)=I+ϕ0∧tR(t) = I + \phi_0^{\wedge} tR(t)=I+ϕ0∧teq5
将eq5代入eq4得:
假设R(0)=I,ϕ(0)=ϕ0R(0)=I, \phi(0)=\phi_0R(0)=I,ϕ(0)=ϕ0,求解微分方程eq4得出:
R(t)=exp(ϕ0∧t)R(t) = exp(\phi_0^{\wedge}t)R(t)=exp(ϕ0∧t)eq6
可以发现eq6的一阶泰勒展开便是eq5
李代数
李代数(V,F,[,])(V,F,[,])(V,F,[,])满足:
1、封闭性 ∀X,Y∈V,[X,Y]∈V\forall X,Y\in V, [X,Y]\in V∀X,Y∈V,[X,Y]∈V
2、双线性 ∀X,Y,Z∈V,a,b∈F\forall X,Y,Z\in V, a,b \in F∀X,Y,Z∈V,a,b∈F,[aX+bY,Z]=a[X,Z]+b[Y,Z][aX+bY,Z]=a[X,Z]+b[Y,Z][aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y][Z,aX+bY]=a[Z,X]+b[Z,Y][Z,aX+bY]=a[Z,X]+b[Z,Y]
3、自反性 ∀X∈V,[X,X]=0\forall X \in V, [X,X]=0∀X∈V,[X,X]=0
4、雅可比等价 ∀X,Y,Z∈V\forall X,Y,Z\in V∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
其中,[,][,][,]称为李括号,V,FV,FV,F分别是集合与数域。
注:R3R^3R3上的叉积是一种李括号,(R3,R,×)(R^3,R,\times)(R3,R,×)是一个李代数。
SO(3)SO(3)SO(3)单位元处的正切空间为so(3)so(3)so(3)(或者说SO(3)SO(3)SO(3)对应的李代数为so(3)so(3)so(3))
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}so(3) = \{\phi\in R^3, \Phi=\phi^{\wedge} \in R^{3\times 3}\}so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3},so(3)so(3)so(3)的元素是三维向量或三维反对称矩阵。
李括号:[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨[\phi_1, \phi_2] = (\Phi_1\Phi_2 - \Phi_2\Phi_1)^{\vee}[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨
注:∨\vee∨表示反对称矩阵对应的三维向量
SO(3)SO(3)SO(3)与so(3)so(3)so(3)的映射:R=exp(ϕ∧)R=exp(\phi^\wedge)R=exp(ϕ∧)
SE(3)SE(3)SE(3)的李代数se(3)se(3)se(3):
se(3)={ξ=[ρϕ]∈R6,ξ∧=[ϕ∧ρ0T0]∈R4×4∣ρ∈R3,ϕ∈so(3)}se(3) = \{\xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix} \in R^6, \xi^\wedge = \begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0 \end{bmatrix} \in R^{4\times 4}| \rho \in R^3, \phi \in so(3)\}se(3)={ξ=[ρϕ]∈R6,ξ∧=[ϕ∧0Tρ0]∈R4×4∣ρ∈R3,ϕ∈so(3)}
李括号:[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨[\xi_1, \xi_2] = (\xi^\wedge_1\xi^\wedge_2 - \xi^\wedge_2\xi^\wedge_1)^{\vee}[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨
4.2 指数与对数映射
SO(3)SO(3)SO(3)与so(3)so(3)so(3)间的映射
指数映射:R=exp(ϕ∧)R = exp(\phi^\wedge)R=exp(ϕ∧)
对数映射:ϕ=ln(R)∨\phi=ln(R)^\veeϕ=ln(R)∨
指数映射(矩阵指数)的泰勒展开:
exp(ϕ∧)=Σn=0∞(ϕ∧)n/n!exp(\phi^\wedge) = \Sigma_{n=0}^\infty (\phi^\wedge)^n/n!exp(ϕ∧)=Σn=0∞(ϕ∧)n/n!
令ϕ=θa\phi = \theta aϕ=θa,θ,a\theta,aθ,a分别为ϕ\phiϕ的模长与方向(单位向量)
利用反对称矩阵与自身相乘的特性,可以化简得到:
exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧exp(\theta a^\wedge) = cos\theta I + (1-cos\theta)aa^T + sin\theta a^\wedgeexp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧
表明指数映射即罗德里格斯公式
对数映射:θ=arccos(tr(R)−12),Ra=a\theta = arccos(\frac{tr(R)-1}{2}), Ra=aθ=arccos(2tr(R)−1),Ra=a
注:aaa是RRR的旋转轴方向向量,因此Ra=aRa=aRa=a不会改变
注:对数映射也可以由泰勒展开推出,ϕ=ln(R)∨=(Σn=0∞(−1)nn+1(R−I)n+1)∨\phi = ln(R)^\vee = (\Sigma_{n=0}^\infty \frac{(-1)^n}{n+1} (R-I)^{n+1} )^\veeϕ=ln(R)∨=(Σn=0∞n+1(−1)n(R−I)n+1)∨,但如何化简大家可以研究一下。
如果将转角固定在[−π,π][-\pi, \pi][−π,π],则李群与李代数的元素是一一对应的。
SE(3)SE(3)SE(3)与se(3)se(3)se(3)间的映射
T=exp(ξ∧)=[RJρ01]T = exp(\xi^\wedge) = \begin{bmatrix} R & J \rho \\ 0 & 1 \end{bmatrix}T=exp(ξ∧)=[R0Jρ1]
指数映射后的结果对应变换矩阵,可以发现平移t=Jρt = J \rhot=Jρ
雅可比矩阵J=sinθθI+(1−sinθθ)aaT+1−cosθθa∧J = \frac{sin\theta}{\theta}I + (1-\frac{sin\theta}{\theta})aa^T + \frac{1 - cos\theta}{\theta} a^\wedgeJ=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧
书中图4-1有SO(3)SO(3)SO(3)与so(3)so(3)so(3)间的映射、SE(3)SE(3)SE(3)与se(3)se(3)se(3)间的映射。
4.3 李代数求导与扰动模型
如果是标量,则有exp(a)exp(b)=exp(a+b)exp(a)exp(b) = exp(a+b)exp(a)exp(b)=exp(a+b),但ϕ∧\phi^\wedgeϕ∧是矩阵,该关系式并不成立。
本节便是讲如何用ϕ1,ϕ2\phi_1, \phi_2ϕ1,ϕ2表示ϕ\phiϕ,即R=R1R2=exp(ϕ1∧)exp(ϕ2∧)=exp(ϕ∧)R = R_1 R_2 = exp(\phi_1^\wedge)exp(\phi_2^\wedge) = exp(\phi^\wedge)R=R1R2=exp(ϕ1∧)exp(ϕ2∧)=exp(ϕ∧)
BCH公式:ln(exp(A)exp(B))=A+B+[A,B]/2+[A,[A,B]]/12−[B,[A,B]]/12+...ln(exp(A)exp(B)) = A+B+[A,B]/2+[A,[A,B]]/12 - [B,[A,B]]/12 +...ln(exp(A)exp(B))=A+B+[A,B]/2+[A,[A,B]]/12−[B,[A,B]]/12+...
如果AAA或BBB很小,则BCH拥有线性近似表达。
对于李代数so(3)so(3)so(3)
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈ln(exp(\phi_1^\wedge)exp(\phi_2^\wedge))^\vee \approxln(exp(ϕ1∧)exp(ϕ2∧))∨≈
J(ϕ2)−1ϕ1+ϕ2J(\phi_2)^{-1}\phi_1 + \phi_2J(ϕ2)−1ϕ1+ϕ2,当ϕ1\phi_1ϕ1很小
J(−ϕ1)−1ϕ2+ϕ1J(-\phi_1)^{-1}\phi_2 + \phi_1J(−ϕ1)−1ϕ2+ϕ1,当ϕ2\phi_2ϕ2很小
ϕ1+ϕ2\phi_1 + \phi_2ϕ1+ϕ2,当ϕ1,ϕ2\phi_1, \phi_2ϕ1,ϕ2很小
根据BCH近似,左乘一个小旋转相当于对李代数进行加法:
exp(Δϕ∧)exp(ϕ∧)=exp((ϕ+J−1(ϕ)Δϕ)∧)exp(\Delta \phi^\wedge) exp(\phi^\wedge) = exp((\phi + J^{-1}(\phi) \Delta \phi)^\wedge)exp(Δϕ∧)exp(ϕ∧)=exp((ϕ+J−1(ϕ)Δϕ)∧)
对李代数进行加法相当于左乘或右乘小旋转:
exp((ϕ+Δϕ)∧)=exp((J(ϕ)Δϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((J(−ϕ)Δϕ)∧)exp((\phi + \Delta \phi)^\wedge) = exp((J(\phi) \Delta \phi)^\wedge) exp(\phi^\wedge) = exp(\phi^\wedge) exp((J(-\phi) \Delta \phi)^\wedge)exp((ϕ+Δϕ)∧)=exp((J(ϕ)Δϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((J(−ϕ)Δϕ)∧)
对SE(3)SE(3)SE(3)也有同样的BHC近似
补充
反对称矩阵与自身相乘有:
ϕ∧ϕ∧=ϕϕT−∣∣ϕ∣∣2I\phi^{\wedge}\phi^{\wedge} = \phi\phi^T - ||\phi||_2 Iϕ∧ϕ∧=ϕϕT−∣∣ϕ∣∣2I
反对称矩阵与自身向量相乘有:
ϕ∧ϕ=0\phi^{\wedge} \phi = 0ϕ∧ϕ=0
进一步可得出:
ϕ∧ϕ∧ϕ∧=−∣∣ϕ∣∣2I\phi^{\wedge} \phi^{\wedge} \phi^{\wedge} = - ||\phi||_2 Iϕ∧ϕ∧ϕ∧=−∣∣ϕ∣∣2I
罗德里格公式的两种写法:
R=exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧R = exp(\theta a^\wedge) = cos\theta I + (1-cos\theta)aa^T + sin\theta a^\wedgeR=exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧
R=exp(ϕ∧)=I+(1−cosθ)ϕ∧ϕ∧/θ2+sinθϕ∧/θR = exp(\phi^\wedge) = I + (1-cos\theta ) \phi^\wedge \phi^\wedge /\theta^2 + sin\theta \phi^\wedge /\thetaR=exp(ϕ∧)=I+(1−cosθ)ϕ∧ϕ∧/θ2+sinθϕ∧/θ
向量矩阵求导
θ=∣∣ϕ∣∣2\theta = ||\phi||_2θ=∣∣ϕ∣∣2,∂θ∂ϕ=[∂θ∂ϕ1,∂θ∂ϕ2,∂θ∂ϕ3]T=a\frac{\partial \theta}{\partial \phi} = [\frac{\partial \theta}{\partial \phi_1}, \frac{\partial \theta}{\partial \phi_2}, \frac{\partial \theta}{\partial \phi_3}]^T = a∂ϕ∂θ=[∂ϕ1∂θ,∂ϕ2∂θ,∂ϕ3∂θ]T=a
a=ϕ/∣∣ϕ∣∣2a = \phi / ||\phi||_2a=ϕ/∣∣ϕ∣∣2,∂a∂ϕ=(1−aaT)/θ\frac{\partial a}{\partial \phi} = (1 - aa^T)/\theta∂ϕ∂a=(1−aaT)/θ
疑问:李群对李代数如何求导?
dRdϕ=∂R∂θ∂θ∂ϕ+Σi∂R∂ai∂ai∂ϕ\frac{d R}{d \phi} = \frac{\partial R}{\partial \theta} \frac{\partial \theta}{\partial \phi} + \Sigma_i \frac{\partial R}{\partial a_i} \frac{\partial a_i}{\partial \phi}dϕdR=∂θ∂R∂ϕ∂θ+Σi∂ai∂R∂ϕ∂ai
SO(3)SO(3)SO(3)上的李代数求导
给定p,zp,zp,z估计变换矩阵TTT
T=argminΣi∣∣zi−Tpi∣∣22T = argmin \Sigma_i ||z_i - Tp_i||_2^2T=argminΣi∣∣zi−Tpi∣∣22
李群没有良好定义的加法,想利用求导解决问题,就需要从李代数的角度考虑:
1、用李代数表示姿态,然后目标函数对李代数求导(精确求导)
2、对姿态左乘或右乘微小扰动,对扰动求导(近似求导)
精确求导:∂(Rp)∂R=∂(exp(ϕ∧)p)∂ϕ=−(Rp)∧J\frac{\partial (Rp)}{\partial R} = \frac{\partial (exp(\phi^\wedge) p)}{\partial \phi} = -(Rp)^\wedge J∂R∂(Rp)=∂ϕ∂(exp(ϕ∧)p)=−(Rp)∧J
利用左乘扰动模型求导:∂(Rp)∂ψ=−(Rp)∧\frac{\partial (Rp)}{\partial \psi} = -(Rp)^\wedge∂ψ∂(Rp)=−(Rp)∧,左扰动的李代数为ψ\psiψ
利用右乘扰动模型求导:∂(Rp)∂ψ=−(Rp)∧R\frac{\partial (Rp)}{\partial \psi} = -(Rp)^\wedge R∂ψ∂(Rp)=−(Rp)∧R,右扰动的李代数为ψ\psiψ
SE(3)SE(3)SE(3)上的李代数求导
利用左乘扰动模型求导:∂(Tp)∂ψ=[I−(Rp+t)∧00]\frac{\partial (Tp)}{\partial \psi} = \begin{bmatrix} I & -(Rp+t)^\wedge \\ 0 & 0 \end{bmatrix}∂ψ∂(Tp)=[I0−(Rp+t)∧0],左扰动的李代数为ψ\psiψ