视觉SLAM十四讲2nd—学习笔记(二)20250817

复制代码
很久没写博客了: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ψ

相关推荐
立志成为大牛的小牛4 小时前
数据结构——三十一、最小生成树(王道408)
数据结构·学习·程序人生·考研·算法
摇滚侠4 小时前
Spring Boot3零基础教程,Actuator 导入,笔记82
java·spring boot·笔记
WarPigs4 小时前
Blender动画笔记
笔记·blender
Every exam must be5 小时前
10.27 JS学习12
开发语言·javascript·学习
崎岖Qiu5 小时前
【设计模式笔记11】:简单工厂模式优缺分析
java·笔记·设计模式·简单工厂模式
2501_938176885 小时前
远期合约和期权合约的区别是什么?
笔记
能工智人小辰5 小时前
VMamba: Visual State Space Model学习笔记
笔记·学习
woodykissme5 小时前
渐开线花键参数一般是怎么确定的?
学习·机械·齿轮·渐开线花键
Ligocious6 小时前
操作系统---第一章:2.操作系统的发展和分类
笔记