视觉SLAM14讲笔记分享——第四章【李群与李代数】
李群与李代数基础
群
- 直观的理解:群就是一种特殊的代数结构,这种代数结构是由一种集合加上一种运算组成,我们把集合记作A,运算记为 ⋅ \cdot ⋅,那么群记为 G = ( A , ⋅ ) G=(A,\cdot) G=(A,⋅)。
例如:我规定“土豆list(TODO list)”是一种代数结构,其由待办事项和添加待办、删除待办这样的运算组成,那么“土豆list”也可以和“群”作类比来理解。
要求的满足条件:
1.封闭性 : ∀ a 1 , a 2 ∈ A , \forall a_1,a_2 \in A, ∀a1,a2∈A, a 1 ⋅ a 2 ∈ A a_1 \cdot a_2 \in A a1⋅a2∈A.2.结合律: ∀ a 1 , a 2 , a 3 ∈ A , \forall a_1,a_2,a_3 \in A, ∀a1,a2,a3∈A, ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) (a_1 \cdot a_2) \cdot a_3 = a_1\cdot (a_2 \cdot a_3) (a1⋅a2)⋅a3=a1⋅(a2⋅a3).
3.幺元: ∃ a 0 ∈ A , s . t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exists a_0 \in A,s.t. \forall a \in A ,\space a_0 \cdot a = a \cdot a_0 = a ∃a0∈A,s.t.∀a∈A, a0⋅a=a⋅a0=a.
4.逆: ∀ a ∈ A , ∃ a − 1 ∈ A , s . t . a ⋅ a − 1 = a 0 \forall a \in A,\space \exists a ^{-1} \in A,\space s.t. \space a \cdot a^{-1} = a_0 ∀a∈A, ∃a−1∈A, s.t. a⋅a−1=a0.
矩阵中常见的群有特殊正交群(旋转矩阵群) S O ( n ) SO(n) SO(n)和特殊欧式群(n维欧式变换) S E ( n ) SE(n) SE(n)。
以三维旋转矩阵 S O ( 3 ) SO(3) SO(3)为例,旋转矩阵和乘法构成了旋转矩阵群,旋转矩阵之间的乘法满足封闭性和结合性,而幺元就是单位矩阵, R R R乘以 R − 1 R^{-1} R−1也确实等于幺元。
- 李群:指具有连续光滑性质的群,可以直观地以相机位姿在空间中的连续旋转来想象。
李代数
以下的推导将书中的内容细分,虽然说看上去有些多,但是也将推导过程变得更容易理解,建议手推一遍,这样会很有成就感~
旋转矩阵求导
定义一个三维向量 α = [ a 1 , a 2 , a 3 ] T \alpha = [a_1,a_2,a_3]^T α=[a1,a2,a3]T.
引出^符号,来表示将向量 α \alpha α变成了反对称矩阵A: α ^ = A = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] \alpha \hat{} = A = \begin{bmatrix} 0&-a_3&a_2\\ a_3 & 0& -a_1 \\ -a_2 & a_1 & 0 \end{bmatrix} α^=A=⎣⎡0a3−a2−a30a1a2−a10⎦⎤.对于任意旋转矩阵R,它会随时间连续的变化,是时间的函数,满足 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 ) 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 ) ^ \phi(t)\hat{} ϕ(t)^,则 R ˙ ( t ) = ϕ ( t ) ^ R ( t ) \dot R(t) = \phi(t)\hat{}R(t) R˙(t)=ϕ(t)^R(t),也就是说,对旋转矩阵求导数,只要左乘一个 ϕ ( t ) \phi(t) ϕ(t)矩阵即可。
旋转矩阵和反对称矩阵的关系—— R ( t ) = e x p ( ϕ 0 t t ) R(t) = exp(\phi _0 ^ t t) R(t)=exp(ϕ0tt)
- R(t)在t = 0时,规定此时旋转矩阵R(t)为 I I I。
- R ˙ ( t ) = ϕ ( t ) ^ R ( t ) \dot R(t) = \phi(t)\hat{}R(t) R˙(t)=ϕ(t)^R(t),此时引入一个小概念——矩阵指数。
有一个简单的标量一阶线性微分方程 x ˙ ( t ) = a x ( t ) \dot x(t) = ax(t) x˙(t)=ax(t),其中 x ( t ) ∈ R , a ∈ R x(t) \in R, a \in R x(t)∈R,a∈R,且初始条件为 x ( 0 ) = x 0 x(0) = x_0 x(0)=x0,那么解为 x ( t ) = e a t x 0 x(t) = e^{at}x_0 x(t)=eatx0。
- 有了矩阵指数的概念,我们可以轻地得出 R ( t ) = e ϕ ( t 0 ) ^ t R ( t 0 ) R(t) = e^{\phi(t_0) \hat{} t}R(t_0) R(t)=eϕ(t0)^tR(t0)。
- 因为 R ( 0 ) = I R(0) = I R(0)=I,在 t 0 t_0 t0附近,设 ϕ \phi ϕ保持为常数 ϕ 0 \phi_0 ϕ0,所以上式可化为 R ( t ) = e ϕ 0 ^ t R(t) = e^{\phi_0 \hat{}t} R(t)=eϕ0^t即 R ( t ) = e x p ( ϕ 0 ^ t ) R(t) = exp(\phi_0 \hat{}t) R(t)=exp(ϕ0^t)。
李代数的引出
- 按照导数定义,使旋转矩阵在t=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) \hat {}(t) R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)^(t). - 可以看到 ϕ \phi ϕ反映了R的导数性质,故称它在SO(3)上的原点 ϕ 0 \phi _0 ϕ0 附近的正切空间上。这个 ϕ \phi ϕ正是李群SO(3)对应的李代数so(3)。
- 简单地理解就是,李代数so(3)是三维向量 ϕ \phi ϕ的集合,李群SO(3)是旋转矩阵的集合,冥冥之中两个集合建立了联系:李群空间的任意一个旋转矩阵R,都可以用李代数空间的一个向量的反对称矩阵指数来近似。
李代数的定义
- 每个李群都有对应的李代数,李代数描述了李群的局部性质,准确地说,是单位元附近的正切空间。
- 李代数由一个集合V、一个数域F和一个二元运算[,]组成。如果满足以下几条性质,则称(V,F,[,])为一个李代数。
- 封闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in V,[X,Y] \in V ∀X,Y∈V,[X,Y]∈V.
- 双线性: ∀ X , Y , Z ∈ V , a , b ∈ F \forall X,Y,Z \in V,a,b \in F ∀X,Y,Z∈V,a,b∈F,有
[ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] [aX+bY,Z] = a[X,Z]+ b[Y,Z],[Z,aX+bY] = a[Z,X]+ b[Z,Y] [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]. - 自反性: ∀ X ∈ V , [ X , X ] = 0 \forall X \in V,[X,X] = 0 ∀X∈V,[X,X]=0.
- 雅可比等价: ∀ X , Y , Z ∈ V , [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0 \forall X,Y,Z \in V,[X,[Y,Z]] + [Z,[X,Y]]+[Y,[Z,X]] = 0 ∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0.
- 其中的二元运算被称为李括号,例如,三维向量 R 3 R^3 R3上定义的叉积x就是一种李括号。
两种李代数so(3)和se(3)
- 李代数 so(3) 是定义在 R 3 R^3 R3上的向量,记作 ϕ \phi ϕ。每个 ϕ \phi ϕ都可以生成一个反对称矩阵:
Φ = ϕ ^ = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] ∈ R 3 × 3 \Phi = \phi \hat{} = \begin{bmatrix} 0 & -\phi _3 & \phi _2 \\ \phi _3 & 0 & -\phi _1 \\ -\phi _2 & \phi _1& 0 \end{bmatrix} \in R^{3 \times 3} Φ=ϕ^=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤∈R3×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)∨. - 李代数 se(3) 与 so(3) 相似,se(3) 位于 R 6 R^6 R6空间中: s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 , ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ^ = [ ϕ ^ ρ 0 T 0 ] ∈ R 4 × 4 } se(3) = \{ \xi = \begin {bmatrix} \rho \\ \phi \end{bmatrix} \in R^6 , \rho \in R^3 , \phi \in so(3), \xi \hat{} = \begin {bmatrix} \phi \hat{} & \rho \\ 0 ^T & 0 \end{bmatrix} \in R^{4 \times 4} \} se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ^=[ϕ^0Tρ0]∈R4×4}
这里把每个se(3)元素记作 ξ \xi ξ,它是一个六维向量,前三维为平移,记作 ρ \rho ρ,后三维为旋转,记作 ϕ \phi ϕ,实质上是so(3)元素。在se(3)中,同样使用^符号,但是^不再表示反对称,而是表示将一个六维向量转换成四维矩阵。
se(3)的李括号为: [ ξ 1 , ξ 2 ] = ( ξ 1 ^ ξ 2 ^ − ξ 2 ^ ξ 1 ^ ) ∨ [\xi _1 ,\xi _2] = (\xi _1 \hat{} \xi _2 \hat{}-\xi _2 \hat{} \xi _1 \hat{}) ^ {\vee} [ξ1,ξ2]=(ξ1^ξ2^−ξ2^ξ1^)∨.
指数与对数映射
公式写麻了。。。就以so(3)为例吧
SO(3)上的指数映射
刚才已经推导出来: R ( t ) = e x p ( ϕ 0 t t ) R(t) = exp(\phi _0 ^ t t) R(t)=exp(ϕ0tt), e x p ( ϕ 0 t t ) exp(\phi _0 ^ t t) exp(ϕ0tt)显然是一个矩阵的指数,这也是为什么叫它指数映射。那么具体该怎样算呢?
首先,任意矩阵的指数映射可以写成一个泰勒展开,其结果仍是一个矩阵,即 e x p ( ϕ ^ ) ) = ∑ n = 0 ∞ 1 n ! ϕ ^ n exp(\phi \hat{})) = \displaystyle \sum^{ \infty}_{n = 0}{\frac{1}{n!}\phi \hat{} \space ^ n} exp(ϕ^))=n=0∑∞n!1ϕ^ n.
其次,我们规定三维向量 ϕ \phi ϕ的模长为 θ \theta θ,方向为a,于是有 ϕ = θ a \phi = \theta a ϕ=θa,为了接下来运算方便,我们提前算一下简便形式, a ^ a ^ = a a T − I a \hat{} a \hat{} = aa^T - I a^a^=aaT−I, a ^ a ^ a ^ = − a ^ a \hat{} a \hat{} a \hat{} = -a \hat{} a^a^a^=−a^.
接下来,把指数映射展开: e x p ( ϕ ^ ) = e x p ( θ a ^ ) = ∑ n = 0 ∞ 1 n ! ( θ a ^ ) n exp(\phi \hat{}) = exp (\theta a \hat{}) = \displaystyle \sum^{ \infty}_{n = 0} {\frac{1}{n!}(\theta a \hat{} )^ n} exp(ϕ^)=exp(θa^)=n=0∑∞n!1(θa^)n.
(公式太多了。。直接截图了视觉SLAM14讲笔记分享——第四章【李群与李代数】相关推荐
- 视觉SLAM14讲笔记分享——第三章【三维空间刚体运动】
这一章开始有一些数学公式上的推导和定义的理解,但是还不算太难
- 视觉SLAM14讲笔记04:ch7对极几何(epipolar geometry)
2D-2D:对极几何(epipolar geometry) 对极约束 现在,假设我们从两张图像中,得到了一对配对好的特征点,像图7-7里显示的那样.如果我们有若干对这样的匹配点,就可以通过这些二维图像 ...
- c语言中除法除以1000与1e3,北京航空航天大学C语言b第二讲(第三、四章)数据类型、运算符与表达式和最简单的C程序设计.ppt...
<北京航空航天大学C语言b第二讲(第三.四章)数据类型.运算符与表达式和最简单的C程序设计.ppt>由会员分享,可在线阅读,更多相关<北京航空航天大学C语言b第二讲(第三.四章)数据 ...
- 视觉slam14讲ch5 opencv安装 ubuntu20.04
视觉slam14讲ch5 opencv安装 ubuntu20.04 最近在学习视觉slam14讲第五章时,由于opencv需要较多依赖项,安装过程经历了一些曲折,在此进行记录. 1.下载opencv工 ...
- javascript学习笔记(第四章图片库--初步了解)
javascript学习笔记(第四章图片库–初步了解) 通过前三章的学习我们已经对这个新的语言有了一个了解,js的语法基本和C语言一致,我们可以通过调用一些document对象中的函数来对实现一些很简 ...
- C++ Primer 学习笔记(第四章:表达式)
2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...
- 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法
机器学习理论<统计学习方法>学习笔记:第四章 朴素贝叶斯法 4 朴素贝叶斯法 4.1 朴素贝叶斯法的学习与分类 4.1.1 基本方法 4.1.2 后验概率最大化的含义 4.2 朴素贝叶斯法 ...
- 《算法笔记》第四章笔记
<算法笔记>第四章 排序 排序算法的思想都比较简单,而且c++可以直接用sort函数进行排序,一般不会直接写排序代码 归根到底就是每轮处理一个数据,n个数据只需处理n-1次即可变得有序 选 ...
- Python入门:对Excel数据处理的学习笔记【第四章】字符串类型处理技术
注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第四章 字符串类型处理技术 目录 第四章 字符串类型处理技术 一 ...
最新文章
- hdu1395 数论 欧拉函数
- DELL IDRAC9配置RAID
- Java数据结构与算法:堆
- 印象笔记html预览,7 个方法,把印象笔记打造成轻量级笔记工具
- 分子生物学之蛋白质与氨基酸
- sql多字段求和降序排序_elasticsearch基础笔记11-搜索排序
- 系统困境与软件复杂度,为什么我们的系统会如此复杂
- nginx php image,[Docker]应该把 nginx 和 PHP 放在一个 image 里还是分开?
- LeetCode 48 旋转图像
- 【转载】使用Lucene.NET实现数据检索功能
- InstallShield - Kevin Wan的博文索引
- Android加载网络GIF完整解决方案
- 纯js 写一个秒表 (精确到毫秒)
- Python数据库编程
- 【拆书】9000字总结,一文掌握737页程序员圣经《深入理解计算机系统》(第三版)重点
- 【渝粤题库】陕西师范大学164109人力资源管理 作业(高起专)
- rms 公式 有效值_真有效值RMS定义及推导
- 【RabbitMQ】SpringBoot的RabbitMQTemplate实战
- Apache DolphinScheduler 3.0.0 正式版发布!
- notes服务器标识文件,怎样重新验证将要过期的服务器标识符文件_lotus notes
热门文章
- 视觉SLAM14讲笔记分享——第三章【三维空间刚体运动】