李群李代数

news2024/11/18 2:39:28

0.知识回顾

描述旋转本身的矩阵叫做旋转矩阵,旋转矩阵是一个行列式为1的正交矩阵 ,反之,行列式为1的正交矩阵也是一个旋转矩阵。将n维旋转矩阵的集合定义如下:
S O ( n ) = { R ∈ R n ∗ n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R\in \mathbb{R}^{n*n}|RR^T=I,det(R)=1\} SO(n)={RRnnRRT=Idet(R)=1}
SO(n)是特殊正交群。

我们把旋转和平移写在一个矩阵T里,将其变成四维向量,成为齐次坐标,矩阵T称为变换矩阵。对于变换矩阵,它具有比较特别的结构,左上角为旋转矩阵,右侧为平移向量,左下角为0向量,右下角为1。这种矩阵为特殊欧式群。
S E ( 3 ) = { T = [ R t 0 1 ] ∈ R 4 ∗ 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } SE(3)=\{T=\left[ \begin{matrix} R & t\\ 0& 1 \end{matrix} \right]\in \mathbb{R}^{4*4} |R\in SO(3),t\in \mathbb{R}^{3}\} SE(3)={T=[R0t1]R44RSO(3),tR3}
在旋转矩阵或者变换矩阵中,它们是对加法不封闭的,就是说,对于任意两个旋转矩阵 R 1 R_1 R1 R 2 R_2 R2,按照矩阵加法的定义,和不再是一个旋转矩阵。但是乘法对应着旋转或者变换的复合,两个旋转矩阵相乘表示做了两次旋转。对于这种只有一个运算的集合,我们称之为群。

1.群

群是一种集合加上一种运算的代数结构,我们把集合记作A,运算记作 · ,那么群可以记作G=(A,·)。

1.1 李群

李群是指具有连续(光滑)性质的群,SO(n)和SE(n)在实数空间上是连续的,我们可以直观地想象一个刚体能够连续地在空间中运动,所以它们是李群。

1.2 李代数引出

考虑任意旋转矩阵R,我们知道它满足:
R R T = I RR^T=I RRT=I
现在,R是某个相机的旋转,他会随时间连续地变化,即为时间的函数:R(t)。由于他仍是旋转矩阵,有:
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 ) T \dot{R}(t)R(t)^T=-(R(t)\dot{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是一个反对称矩阵,即满足 A T = − A A^T=-A AT=A

这里引入一个^符号,将一个向量变成了反对称矩阵,同理,对于任意反对称矩阵,我们也能找到唯一与之对应的向量,用符号v表示。
a ∧ = A = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] , A ∨ = a a^ \wedge=A=\left[ \begin{matrix} 0&-a_3 & a_2\\ a_3&0& -a_1\\ -a_2&a_1&0 \end{matrix} \right],A^\vee=a a=A= 0a3a2a30a1a2a10 ,A=a
于是,由于 R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^T R˙(t)R(t)T是个反对称矩阵,我们可以找到一个三维向量 ϕ ( t ) ∈ R 3 \phi(t) \in \mathbb{R}^{3} ϕ(t)R3与之对应:
R ˙ ( t ) R ( t ) T = ϕ ( t ) ∧ \dot{R}(t)R(t)^T=\phi(t)^ \wedge R˙(t)R(t)T=ϕ(t)
等式两边右乘R(t),由于R为正交矩阵,有:
R ˙ ( t ) R ( t ) = ϕ ( t ) ∧ R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] R ( t ) \dot{R}(t)R(t)=\phi(t)^ \wedge R(t)=\left[ \begin{matrix} 0&-\phi_3 & \phi_2\\ \phi_3&0& -\phi_1\\ -\phi_2&\phi_1&0 \end{matrix} \right]R(t) R˙(t)R(t)=ϕ(t)R(t)= 0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10 R(t)
可以看到,每对旋转矩阵求一次导数,只需左乘一个 ϕ ( t ) \phi(t) ϕ(t)矩阵即可,考虑 t 0 = 0 t_0=0 t0=0时,设此时旋转矩阵为 R ( 0 ) = I R(0)=I R(0)=I。按照导数定义,可以把 R ( t ) R(t) R(t)在t=0附近进行一阶泰勒展开:
R ( t ) = R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t ) ∧ ( t ) R(t)=R(t_0)+\dot{R}(t_0)(t-t_0) \\=I+\phi(t)^ \wedge(t) R(t)=R(t0)+R˙(t0)(tt0)=I+ϕ(t)(t)
我们看到 ϕ \phi ϕ反应了R的导数性质,故称他在SO(3)原点附近的正切空间上,同时在 t 0 t_0 t0附近,设 ϕ ( t 0 ) = ϕ 0 \phi(t_0)=\phi_0 ϕ(t0)=ϕ0。那么有:
R ˙ ( t ) = ϕ ( t ) ∧ R ( t ) = ϕ 0 ∧ R ( t ) \dot{R}(t)=\phi(t)^ \wedge R(t)=\phi_0^ \wedge R(t) R˙(t)=ϕ(t)R(t)=ϕ0R(t)
上式是一个关于R的微分方程,而且有初始值 R ( 0 ) = I R(0)=I R(0)=I,解得:
R ( t ) = e x p ( ϕ 0 t ) R(t)=exp(\phi_0t) R(t)=exp(ϕ0t)
以上式子说明在t=0附近,旋转矩阵可以由 e x p ( ϕ 0 t ) exp(\phi_0t) exp(ϕ0t)计算出来。

可以说明下面两个关系:

1.给定某时刻的R,我们能求得一个 ϕ \phi ϕ,它描述了R在局部的导数关系, ϕ \phi ϕ正是对应到SO(3)上的李代数so(3)。

2.给定某个向量 ϕ \phi ϕ,矩阵指数 e x p ( ϕ 0 t ) exp(\phi_0t) exp(ϕ0t)的计算就是李群和李代数间的指数/对数映射。

1.3 李代数的意义

1.应用意义

在视觉slam中,我们需要不断计算相机的位姿和构建地图,相机的位姿表现在其变换矩阵T,由于干扰的存在,我们无法准确获得所需要的信息,所以我们转而求其最小误差。

假设我们有N个三维点p和对应的观测值z,我们的目标就是寻找一个最佳位姿T,使得整体误差最小化,如下式:
m i n T J ( T ) = ∑ i = 1 N ∣ ∣ z i − T p i ∣ ∣ 2 2 \underset{T}{min}J(T)=\sum_{i = 1} ^N||z_i-Tp_i||^2_2 TminJ(T)=i=1N∣∣ziTpi22
要求解上面的方程,就是要求目标函数J对T的导数,但是由于T所在的变换矩阵群(SO(3))对加法不封闭,无法直接求取,所以我们需要引入一个新的量,通过对该量的计算间接获得对T的求导,这个引入的量就是李代数

2.数学意义

每个李群都有与之对应的李代数。李代数描述了李群的局部性质(局部导数),准确的说是单位元附近的正切空间。

1.4 李代数定义

李代数有一个集合 V \mathbb{V} V、一个数域 F \mathbb{F} F和一个二元运算[,]组成,如果满足以下几条性质,则称( V \mathbb{V} V F \mathbb{F} F,[,])为一个李代数,记作g。

1.封闭性 ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y\in \mathbb{V},[X,Y]\in \mathbb{V} X,YV,[X,Y]V

2.双线性 ∀ X , Y , Z ∈ V , a , b ∈ F \forall X,Y,Z\in \mathbb{V},a,b\in \mathbb{F} X,Y,ZV,a,bF 有 [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]

3.自反性 ∀ X ∈ V , [ X , X ] = 0 \forall X\in \mathbb{V},[X,X]=0 XV,[X,X]=0

4.雅克比等价 ∀ X , Y , Z ∈ V \forall X,Y,Z\in \mathbb{V} X,Y,ZV [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0

相比于群中较为简单为二元运算,李括号[,]表达了两个元素的差异。

1.5 李代数so(3)

之前提到的 ϕ \phi ϕ,事实上就是一种李代数。SO(3)对应的李代数就是定义在 R 3 \mathbb{R}^3 R3上的向量,我们记作 Φ \Phi Φ
s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ 0 ∧ ∈ R 3 ∗ 3 } so(3)=\{\phi\in \mathbb{R}^{3},\Phi=\phi_0^ \wedge \in \mathbb{R}^{3*3}\} so(3)={ϕR3,Φ=ϕ0R33}
so(3)是由三维向量组成的集合,每个向量对应一个反对称矩阵,可以用于表达旋转矩阵的导数。他与SO(3)的关系有指数映射给定:
R ( t ) = e x p ( ϕ 0 t ) R(t)=exp(\phi_0t) R(t)=exp(ϕ0t)

1.6 SO(3)上的指数映射

这个问题就是如何计算 e x p ( ϕ 0 t ) exp(\phi_0t) exp(ϕ0t)

任意矩阵的指数映射可以写成一个泰勒展开,但是之后只有在收敛的情况下才会有结果,其结果仍是一个矩阵:
e x p ( A ) = ∑ n = 0 ∞ 1 n ! A n exp(A)=\sum_{n=0}^\infty\frac{1}{n!}A^n exp(A)=n=0n!1An
带入 ϕ ∧ \phi^ \wedge ϕ,得到:
e x p ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ϕ 0 ∧ n exp(\phi^ \wedge)=\sum_{n=0}^\infty\frac{1}{n!} {\phi_0^\wedge} ^n exp(ϕ)=n=0n!1ϕ0n
但是上式无法直接计算,因为需要计算矩阵的无穷次幂。下面进行一种简单的方法。

由于 ϕ \phi ϕ是三维向量,可以定义他的模长和方向,分别记作 θ \theta θ和a。这里 ϕ = θ a \phi=\theta a ϕ=θa,a为一个长度为1的方向向量。对于 a ∧ a^ \wedge a有以下性质:
a ∧ a ∧ = [ − a 2 2 − a 3 2 a 1 a 2 a 1 a 3 a 1 a 2 − a 1 2 − a 3 2 a 2 a 3 a 1 a 3 a 2 a 3 − a 1 2 − a 2 2 ] = a a T − I a^\wedge a^\wedge=\left[ \begin{matrix} -a_2^2-a_3^2&a_1a_2 & a_1a_3\\ a_1a_2&-a_1^2-a_3^2& a_2a_3\\ a_1a_3&a_2a_3&-a_1^2-a_2^2 \end{matrix} \right]=aa^ T-I\\ aa= a22a32a1a2a1a3a1a2a12a32a2a3a1a3a2a3a12a22 =aaTI

a ∧ a ∧ a ∧ = a ∧ ( a a T − I ) = − a ∧ a^\wedge a^\wedge a^\wedge=a^\wedge(aa^T-I)=-a^\wedge aaa=a(aaTI)=a

上面两个式子提供了处理 a ∧ a^\wedge a高阶项的方法,这样可以把指数映射写成:
e x p ( ϕ ∧ ) = e x p ( θ a ∧ ) = ∑ n = 0 ∞ 1 n ! ( θ a ∧ ) n = I + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ + 1 3 ! θ 3 a ∧ a ∧ a ∧ ⋯ = a a T − a ∧ a ∧ + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ − 1 3 ! θ 3 a ∧ ⋯ = a a T + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − ⋯   ) a ∧ − ( 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − ⋯   ) a ∧ a ∧ = a ∧ a ∧ + I + s i n θ a ∧ − c o s θ a ∧ a ∧ = ( 1 − c o s θ ) a ∧ a ∧ + I + s i n θ a ∧ = c o s θ I + ( 1 − c o s θ ) a a T + s i n θ a ∧ exp(\phi^ \wedge)=exp(\theta a^ \wedge)=\sum_{n=0}^\infty\frac{1}{n!} {(\theta a^ \wedge} )^n\\ =I+\theta a^ \wedge+\frac{1}{2!}\theta^2a^ \wedge a^ \wedge+\frac{1}{3!}\theta^3a^ \wedge a^ \wedge a^ \wedge \cdots\\ =aa^T-a^ \wedge a^ \wedge+\theta a^ \wedge+\frac{1}{2!}\theta^2a^ \wedge a^ \wedge-\frac{1}{3!}\theta^3a^ \wedge \cdots\\ =aa^T+(\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5 -\cdots)a^ \wedge-(1-\frac{1}{2!}\theta^2+\frac{1}{4!}\theta^4- \cdots)a^ \wedge a^ \wedge \\ =a^ \wedge a^ \wedge+I+sin\theta a^ \wedge-cos\theta a^ \wedge a^ \wedge\\ =(1-cos\theta)a^ \wedge a^ \wedge+I+sin\theta a^ \wedge \\=cos\theta I+(1-cos\theta)aa^T+sin\theta a^ \wedge exp(ϕ)=exp(θa)=n=0n!1(θa)n=I+θa+2!1θ2aa+3!1θ3aaa=aaTaa+θa+2!1θ2aa3!1θ3a=aaT+(θ3!1θ3+5!1θ5)a(12!1θ2+4!1θ4)aa=aa+I+sinθacosθaa=(1cosθ)aa+I+sinθa=cosθI+(1cosθ)aaT+sinθa

经过以上计算,得到:
e x p ( ϕ ∧ ) = c o s θ I + ( 1 − c o s θ ) a a T + s i n θ a ∧ exp(\phi^ \wedge)=cos\theta I+(1-cos\theta)aa^T+sin\theta a^ \wedge exp(ϕ)=cosθI+(1cosθ)aaT+sinθa
可以发现上式就是罗德里格斯公式,so(3)就是由所谓的旋转向量组成的空间,指数映射即罗德里格斯公式,通过这个公式,我们把任意一个向量对应到一个位于SO(3)中的旋转矩阵。

罗德里格斯公式就是表明旋转向量到旋转矩阵的转换过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6dVI3FiO-1690698811035)(C:\Users\13611\AppData\Roaming\Typora\typora-user-images\image-20230730143034186.png)]

本文主要参考《视觉SLAM十四讲》
以发现上式就是罗德里格斯公式,so(3)就是由所谓的旋转向量组成的空间,指数映射即罗德里格斯公式,通过这个公式,我们把任意一个向量对应到一个位于SO(3)中的旋转矩阵。

罗德里格斯公式就是表明旋转向量到旋转矩阵的转换过程。
请添加图片描述

本文主要参考《视觉SLAM十四讲》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

事件标志组

Q: 什么是事件标志组? A: 事件标志位:表明某个事件是否发生,联想:全局变量 flag。通常按位表示,每一个位表示一个事件(高8位不算) 事件标志组是一组事件标志位的集合, 可以简单的理…

Android应用开发(24)启用广色域(wideColorGamut)

Android应用开发学习笔记——目录索引 参考android官网: 使用广色域内容增强图形效果 | Android 开发者 | Android Developers ColorSpace | Android Developers Wide Color Photos Are Coming to Android: Things You Need to Know to be Prepared 广色域…

redis主从复制 哨兵模式

目录 1.主从 1.主从概念 2.作用 3.主从流程 2.哨兵 1.哨兵核心 2.原理 3.作用 4.结构 3.案例 主从搭建 哨兵搭建 1.主从 1.主从概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者…

Psim 2022电力仿真--锁相环控制程序

目录 目录 1.原理 2.代码实现 3.仿真实现 4.仿真结果 5.讨论 1.原理 三相锁相环是一种用于控制交流(AC)信号的相位、频率和波形的电路,其原理和应用也广泛用于电源领域。使用三相锁相环可以使交流电源输出的电压稳定、精准地与输入信号…

Kotlin基础(九):对象和委托

前言 本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 对象 在Kotlin中,对象(Object)是一个具有特殊用途的单例实例。它是一种创建单个实例的方式,确保在整个应用程序中只存在一个特…

C语言:扫雷(递归+清屏)详细讲解

目录 一.前言 二.功能功能实现 1.游戏菜单/雷盘定义 menu: 雷盘定义: 2.定义布局(数组)/初始化雷盘 数组: 初始化雷盘: 3.打印棋盘 4.布置雷(利用随机数) 5.排查雷(判断周围雷) 1.判断周围雷数: 2.递归排查…

卡特兰数 公式及其应用

卡特兰数可用于两种场景(编程) n个元素入栈,共有几种出栈方法n个不同的元素可以组成多少种不同形态的二叉树 卡特兰数的公式是 比如说: 5个元素入栈 那么一共有 种出栈方法 再比如说(干咳一声) 有4个不…

【雕爷学编程】MicroPython动手做(20)——掌控板之三轴加速度3

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

读发布!设计与部署稳定的分布式系统(第2版)笔记27_安全性下

1. 安全配置出现失误 1.1. 攻击者已经通过使用开箱默认的admin登录名和密码,进入了不少应用程序、网络设备和数据库 1.2. 出现配置的遗漏 1.2.1. 服务器默认启用不需要的特性 1.2.1.1. 我们忘记(或不知道)禁用它们,从而开放了…

C++ 多线程编程导论(下)

文章目录 参考资料线程安全(续)门闩与屏障——latch 对象与 barrier 对象门闩(latch)屏障(barrier) 一次性调用——once_flag 对象与 call_once 函数 异步任务未来与承诺——future 对象与 promise 对象fut…

Ubuntu网络设置之固定IP详解

尊敬的家人们,欢迎观看我的文章!今天,我们将为您介绍Ubuntu22.04操作系统中固定IP的设置方法,帮助您更好地管理网络连接并提高网络稳定性。 什么是固定IP? 在网络中,IP地址是设备在网络上的唯一标识。通常…

用html+javascript打造公文一键排版系统9:主送机关排版

一、主送机关的规定 公文一般在标题和正文之间还有主送机关,相关规定为: 主送机关 编排于标题下空一行位置,居左顶格,回行时仍顶格,最后一个机关名称后标全角冒号。如主送机关名称过多导致公文首页不能显示正文时&…

哨兵模式原理

哨兵模式原理 一、定义二、作用三、故障转移机制主节点的选举: 哨兵的模式一、哨兵对主从复制集群进行监控二、哨兵与哨兵之间互相进行监控三、监控的目的 故障切换的原理?cluster模式cluster模式同步两种方式 一、定义 哨兵(sentinel):是一个分布式系统,用于对主…

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…

MATLAB | 如何绘制这样的描边散点图?

part.-1 前前言 最近略忙可能更新的内容会比较简单,见谅哇,今日更新内容: part.0 前言 看到gzhBYtools科研笔记(推荐大家可以去瞅瞅,有很多有意思的图形的R语言复现!!)做了这样一张图: 感觉很…

RK3588平台开发系列讲解(LCD篇)FrameBuffer 操作步骤

文章目录 一、FrameBuffer 介绍二、屏幕参数信息的获取三、刷新 FrameBuffer四、FrameBuffer 例程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在应用程序中,操作/dev/fbX 的一般步骤进行介绍。 打开 FrameBuffer 设备;获取 FrameBuffer 设备的固定信息和可变信息;…

生成对抗网络DCGAN学习实践

在AI内容生成领域,有三种常见的AI模型技术:GAN、VAE、Diffusion。其中,Diffusion是较新的技术,相关资料较为稀缺。VAE通常更多用于压缩任务,而GAN由于其问世较早,相关的开源项目和科普文章也更加全面&#…

809协议服务端程序解码程序

809协议服务端程序解码程序 目录概述需求: 设计思路实现思路分析1.服务端2.code: 拓展实现性能参数测试:1.功能测试 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip…

【LeetCode】探索杨辉三角模型

一、题目描述 力扣原题 首先我们要来了解一下题目本身在说些什么,通过下方的动图我们可以更加清楚地看到杨辉三角是怎样一步步生成的。给到的示例中我们通过输入杨辉三角的行数,然后通过计算得到这个杨辉三角的每一行是什么具体的数值 二、模型选择 首先…

大数据技术之ClickHouse---入门篇---介绍

星光下的赶路人star的个人主页 一棵树长到它想长到的高度之后,它才知道怎样的空气适合它 文章目录 1、Clickhouse入门1.1 什么是Clickhouse1.1.1 Clickhouse的特点1.1.1.1 列示储存1.1.1.2 DBMS的功能1.1.1.3 多样化引擎1.1.1.4 高吞吐写入能力1.1.1.5 数据分区与线…