视觉SLAM十四讲|【二】李群与李代数

本文介绍了李群和李代数的基本概念,包括群的封闭性和结合律,旋转向量的性质,以及在三维空间中的SO(3)和SE(3)上的指数和对数映射。特别关注了如何通过李代数求导处理旋转矩阵的扰动模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视觉SLAM十四讲|【二】李群与李代数

李群与李代数基础

群的性质

  • 封闭性: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A \forall a_1, a_2 \in A, a_1 \cdot a_2 \in A a1,a2A,a1a2A
  • 结合律: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) \forall a_1,a_2,a_3 \in A, (a_1 \cdot a_2) \cdot a_3 = a_1 \cdot (a_2 \cdot a_3) a1,a2,a3A,(a1a2)a3=a1(a2a3)
  • 么元: ∃ a 0 ∈ A , s . t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exist a_0 \in A, s.t. \forall a\in A, a_0 \cdot a= a \cdot a_0 = a a0A,s.t.∀aA,a0a=aa0=a
  • 逆: ∀ a ∈ A , ∃ a − 1 ∈ A , s . t . a ⋅ a − 1 = a 0 \forall a \in A, \exist a^{-1} \in A, s.t. a \cdot a^{-1} = a_0 aA,a1A,s.t.aa1=a0

R 1 R 2 ∈ S O ( 3 ) R_1R_2 \in SO(3) R1R2SO(3)
T 1 T 2 ∈ S E ( 3 ) T_1T_2 \in SE(3) T1T2SE(3)

李代数的引出

定义

设一个三维向量 ϕ ( t ) ∈ R 3 \phi(t)\in \mathbb{R^3} ϕ(t)R3,有
ϕ ( t ) ∧ = R ˙ ( t ) R ( t ) T \phi(t)^{\land} = \dot{R}(t)R(t)^T ϕ(t)=R˙(t)R(t)T
注意, ∧ \land 为矩阵化符号,得到一关于 ϕ \phi ϕ的反对称矩阵,因此该等式要求 R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^T R˙(t)R(t)T为反对称矩阵。

证明

三维向量 ϕ ( t ) \phi(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
两边对时间求导,可以得到如下形式
R ˙ ( t ) R ( t ) T + R ( t ) R ˙ ( t ) T = 0 \dot{R}(t)R(t)^T + R(t)\dot{R}(t)^T = 0 R˙(t)R(t)T+R(t)R˙(t)T=0
R ˙ ( t ) R ( t ) T = − R ( t ) R ˙ ( t ) T \dot{R}(t)R(t)^T= - R(t)\dot{R}(t)^T R˙(t)R(t)T=R(t)R˙(t)T
R ˙ ( t ) R ( t ) T = − ( R ˙ ( t ) R ( t ) T ) T \dot{R}(t)R(t)^T= - (\dot{R}(t)R(t)^T)^T R˙(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为反对称矩阵。

性质

ϕ ( t ) ∧ = R ˙ ( t ) R ( t ) T \phi(t)^{\land} = \dot{R}(t)R(t)^T ϕ(t)=R˙(t)R(t)T
两边同时右乘 R ( t ) R(t) R(t),有
ϕ ( t ) ∧ R ( t ) = R ˙ ( t ) R ( t ) T R ( t ) \phi(t)^{\land}R(t) = \dot{R}(t)R(t)^TR(t) ϕ(t)R(t)=R˙(t)R(t)TR(t)
由于
R ( t ) T R ( t ) = I R(t)^TR(t)=I R(t)TR(t)=I
得到
ϕ ( t ) ∧ R ( t ) = R ˙ ( t ) \phi(t)^{\land}R(t) = \dot{R}(t) ϕ(t)R(t)=R˙(t)
即对 ϕ ( t ) ∧ \phi(t)^{\land} ϕ(t)通过右乘 R ( t ) R(t) R(t),或者对 R ( t ) R(t) R(t)左乘 ϕ ( t ) ∧ \phi(t)^{\land} ϕ(t),我们可以实现对旋转矩阵的求导
R ˙ ( t ) = ϕ ( t ) ∧ R ( t ) \dot{R}(t) =\phi(t)^{\land}R(t) R˙(t)=ϕ(t)R(t)
t = 0 t=0 t=0时有 R ( 0 ) = I R(0)=I R(0)=I t 0 = 0 t_0=0 t0=0进行一阶泰勒展开有如下形式
R ( t ) ≈ R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t 0 ) ∧ ( t ) R(t) \approx R(t_0) + \dot{R}(t_0)(t-t_0) = I + \phi(t_0)^{\land}(t) R(t)R(t0)+R˙(t0)(tt0)=I+ϕ(t0)(t)
又有
R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) \dot{R}(t)=\phi(t_0)^{\land}R(t) R˙(t)=ϕ(t0)R(t)
解该微分方程,可以得到四元数与旋转矩阵的关系如下所示
R ( t ) = e x p ( ϕ 0 ∧ t ) R(t) = exp(\phi_0^{\land}t) R(t)=exp(ϕ0t)

指数与对数映射

SO(3)上的指数映射

对于三维向量 ϕ \phi ϕ,我们令 ϕ = θ a \phi=\theta a ϕ=θa θ \theta θ为模长, a a a为单位方向向量,有以下性质:
a ∧ a ∧ = a a T − I a^{\land}a^{\land} = aa^T-I aa=aaTI
a ∧ a ∧ a ∧ = − a ∧ a^{\land}a^{\land}a^{\land} =-a^{\land} aaa=a
e x p ( ϕ ∧ ) = e x p ( θ a ∧ ) = c o s θ I + ( 1 − c o s θ ) a a T + s i n θ a ∧ exp(\phi^{\land})=exp(\theta a^{\land}) = cos\theta I + (1-cos\theta)aa^T + sin\theta a^{\land} exp(ϕ)=exp(θa)=cosθI+(1cosθ)aaT+sinθa
反回来,旋转向量的对数映射有
ϕ = l n ( R ) ∨ = ( ∑ n = 0 ( − 1 ) n n + 1 ( R − I ) n + 1 ) ∨ \phi = ln(R)^{\vee} = (\sum_{n=0}\frac{(-1)^n}{n+1}(R-I)^{n+1})^{\vee} ϕ=ln(R)=(n=0n+1(1)n(RI)n+1)

SE(3)上的指数映射

e x p ( ϵ ∧ ) = [ R J ρ 0 T 1 ] = T exp(\epsilon^{\land})=\begin{bmatrix} R & J\rho \\ 0^T & 1 \end{bmatrix} = T exp(ϵ)=[R0TJρ1]=T
其中,
J = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ J = \frac{sin\theta}{\theta}I + (1- \frac{sin\theta}{\theta})aa^T + \frac{1-cos\theta}{\theta}a^{\land} J=θsinθI+(1θsinθ)aaT+θ1cosθa

李代数求导与扰动模型

ϕ 1 \phi_1 ϕ1为小量,有
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ≈ J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 ln(exp(\phi_1^{\land})exp(\phi_2^{\land}))^{\vee} \approx J_l(\phi_2)^{-1}\phi_1 + \phi_2 ln(exp(ϕ1)exp(ϕ2))Jl(ϕ2)1ϕ1+ϕ2

ϕ 2 \phi_2 ϕ2为小量,有
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ≈ J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 ln(exp(\phi_1^{\land})exp(\phi_2^{\land}))^{\vee} \approx J_r(\phi_1)^{-1}\phi_2 + \phi_1 ln(exp(ϕ1)exp(ϕ2))Jr(ϕ1)1ϕ2+ϕ1

J l = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ J_l = \frac{sin\theta}{\theta}I + (1- \frac{sin\theta}{\theta})aa^T + \frac{1-cos\theta}{\theta}a^{\land} Jl=θsinθI+(1θsinθ)aaT+θ1cosθa

J l − 1 = θ 2 c o t θ 2 I + ( 1 − θ 2 c o t θ 2 ) a a T − θ 2 a ∧ J_l ^{-1} = \frac{\theta}{2}cot \frac{\theta}{2}I + (1- \frac{\theta}{2}cot \frac{\theta}{2})aa^T - \frac{\theta}{2}a^{\land} Jl1=2θcot2θI+(12θcot2θ)aaT2θa
J r ( ϕ ) = J l ( − ϕ ) J_r(\phi) = J_l(-\phi) Jr(ϕ)=Jl(ϕ)

补充性质

l n ( R e x p ( ϕ ∧ ) ) ∨ = l n ( R ) ∨ + J r − 1 ϕ ln(Rexp(\phi^{\land}))^{\vee}=ln(R)^{\vee}+J_r^{-1}\phi ln(Rexp(ϕ))=ln(R)+Jr1ϕ
SO(3)伴随性质:
R T e x p ( ϕ ∧ ) R = e x p ( ( R T ϕ ) ∧ ) R^Texp(\phi^{\land})R = exp((R^T\phi)^{\land}) RTexp(ϕ)R=exp((RTϕ))
a ∧ b = − b ∧ a a^{\land} b = -b^{\land}a ab=ba

### 关于 SLAM李群代数的代码实现 在《视觉SLAM十四》中提到,为了处理旋转和平移操作中的微分问题,引入了李群代数的概念。由于李群上的运算仅限于乘法而缺乏加法规则,这使得在其上定义导数变得困难[^3]。 针对这一挑战,在实际编程实践中通常会通过指数映射将李群转换至其对应的代数空间内进行计算,因为后者是一个线性的向量空间,允许执行诸如求导这样的操作。下面给出一段简单的 Python 实现例子用于展示如何利用 Sophus 库来进行 SE(3) 的基本操作: ```python import sophus as sp from scipy.spatial.transform import Rotation as R def se3_exp_map(w,u): """Compute the exponential map from Lie algebra to Lie group. Args: w (numpy.ndarray): A 3D vector representing angular velocity. u (numpy.ndarray): A 3D vector representing linear velocity. Returns: sophus.SE3: An element of SE(3). """ omega_hat = sp.so3.exp(sp.Vector3d(*w)) v = sp.Vector3d(*u) return sp.SE3(omega_hat, v) if __name__ == "__main__": # Example usage with random values for demonstration purposes only rotation_velocity = [0.1, 0.2, 0.3] translation_velocity = [0.4, 0.5, 0.6] transformation_matrix = se3_exp_map(rotation_velocity, translation_velocity) print(transformation_matrix.matrix()) ``` 上述代码片段展示了怎样创建一个 `sophus` 类型的对象并打印出相应的变换矩阵。这里使用的是 Sophus 这一专门设计用来高效表示 SO(3)/SE(3) 及其对应代数 so(3)/se(3) 的 C++/Python 库[^4]。 对于更复杂的场景比如轨迹绘制,则可能涉及到读取外部文件以及调用图形库如 Pangolin 来可视化结果。这部分工作往往依赖具体的应用需求和个人偏好来决定具体的实施方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值