三维旋转、李群与李代数的一些知识点记录以下内容来源于《视觉SLAM十四讲》以及其他博文内容的汇总,所有出处均会表明。部分内容比较简略,主要是总结一些自己觉得需要注意的地方或者是归纳一下结论之类的,因为写本文的目的是仅做自身学习记录汇总用途,好记性不如烂笔头,方便自己回顾(之前都学过但是现在发现忘得差不多了...所以再重新回顾一下),当然如果对大家有帮助那再好不过。 一、三维刚体旋转1.1 内积和外积内积,即点乘操作,设a, b为2个向量,具体公式如下: 注意外积的方向垂直于a、b,大小为 |a| |b| sin<a,b>,并且引入了符号 ^
该符号把 a 向量表示为了一个反对称矩阵 a^ (反对称矩阵定义为为 A T = − A A^T=-A AT=−A),也就是说带有这个^符号的均表示将一个向量转换为了反对称矩阵,后续在李代数推导过程中会用到,外积只对三维向量存在定义,且可以用外积来表示向量的旋转。如在右手法则下有:
1.2 旋转矩阵、变换矩阵和旋转向量这部分主要区分旋转矩阵和变换矩阵,以及两者在群中的表示区别。 1.2.1 旋转矩阵欧式变换基本概念:视觉SLAM基本原理(1)—— 欧氏变换与旋转向量 对于同一个向量 a a a ,它在一个坐标系中的坐标为 a a a ,而在另一个坐标系下坐标为 a ′ a' a′ ,那么可以通过旋转矩阵进行对应的转换 a ′ = R ∗ a a' = R * a a′=R∗a 其中用 R R R来表示旋转矩阵,实际上其为一个行列式为1的正交矩阵( A A T = E AA^T=E AAT=E),集合定义如下:
S
O
(
n
)
SO(n)
SO(n)表示的是特殊正交群,
n
n
n表示的是
n
n
n维空间的意思,一般来说我们都是3。在欧式变换中,如果需要平移,则还需要加上平移矩阵
t
t
t 1.2.2 变换矩阵由于旋转矩阵在多次变换过程中并非线性关系,并会越来越复杂,因此我们将其引入齐次坐标下,吧三维向量重写(末尾+1),由此可以把旋转和平移写入同一个矩阵中,称为变换矩阵 变换矩阵又称特殊欧式群 1.2.3 旋转向量旋转向量定义为:任意旋转均可用一个旋转轴和一个旋转角来表示,由此使用一个向量,其方向与旋转轴保持一致,向量长度等于旋转角。 相关内容在李代数中进行详解。这边需要注意的是使用罗德里格斯公式来完成旋转向量到旋转矩阵的转换。关于罗德里格斯公式的推导,详见:三维重建学习(1):基础知识:旋转矩阵与旋转向量。 这里只放结论: 旋转向量转换为旋转矩阵(其中的 ^ 符号定义回看第一章叉乘): 反向推导,从旋转矩阵获得旋转向量:
1.3 欧拉角和四元数和姿态解算此处就不做过多介绍了,放些我当初自己学习时的资源链接好了 欧拉角的基础示意:欧拉角说明 想深入理解一下四元数可以看看这个视频:四元数的可视化 四元数表示旋转 需要注意的是用四元数表示旋转的过程: 假设某一个旋转时绕着单位向量
n
=
[
n
x
,
n
y
,
n
z
]
T
n=[nx,ny,nz]^T
n=[nx,ny,nz]T进行了角度
θ
θ
θ的旋转,那么旋转的四元数表示为 假定三维空间点 p = [ x , y , z ] p=[x,y,z] p=[x,y,z],经旋转之后变为 p ′ p' p′,如果用旋转矩阵 R R R表示,则为 p ′ = R p p'=Rp p′=Rp。如果用四元数表示,首先将三维空间点表示为虚四元数 p = [ 0 , x , y , z ] = [ 0 , v ] p=[0,x,y,z]=[0,v] p=[0,x,y,z]=[0,v] 参照上面的式子,用四元数表示旋转为 q = [ c o s θ 2 , n s i n θ 2 ] q=[cos\frac{θ}{2}, nsin\frac{θ}{2}] q=[cos2θ,nsin2θ] 则旋转之后的点
p
′
p'
p′可以表示为 四元数与旋转矩阵 四元数表示旋转矩阵: 姿态解算 顺便放一些我个人觉得还不错的姿态解算的学习博文(当然包含欧拉角和四元数的基础,主要还是方便自己以后找起来方便…):
二、李群与李代数此处由于内容涉及过多将不会放一些基础或者推导性的东西,仅会把我个人觉得需要记忆的概念或者结论放在此处 2.1 李群群(Group)是一种集合加上(只有)一种运算的代数结构。 李群是指具有连续(光滑)性质的群。 以上相关定义和特性不再细说,给出一些讲得比较好的博文的链接: 如前述内容可知,SO(3)表示由3维旋转矩阵R构成的特殊正交群,SE(3)则是由3维变换矩阵T构成的特殊欧式群。发现这两者对于加法来说并不封闭,也就是说任意2个旋转矩阵或者变换矩阵相加,所得结果将不再是一个旋转矩阵或者变换矩阵。但是它们对于乘法却不是封闭的,因此满足只有一种运算的定义。此外,刚体始终能够在三维空间中满足连续运动,换而言之,SO(3)和SE(3)均能够满足在实数空间连续的定义,因此这两者均为李群。 此处主要关心SO(3)和SE(3)的含义及内容。 2.2 李代数详细的还是看这边:视觉SLAM中的数学基础 第三篇 李群与李代数 重点关注以下几个概念:
SO(3)和SE(3)的李代数表示如下: 其中三维向量 Φ 的可以通过^运算为三维反对称矩阵。 主要分析SO(3) 如下所示为旋转矩阵中李群和李代数之间的转换关系,分别来分析一下:
SE(3)
|
|