SLAM中四元数、流形、李群、李代数是啥?

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:951026257,欢迎大家加入讨论。

知识点得逻辑关系如下

引言

非线性问题由于复杂的数学结构,多样的解空间,局部极值等问题求解难度大大增加。所以在求解时需要把非线性问题转化为更容易处理的形式,例如

  1. 数值优化方法:数值优化方法包括梯度下降、共轭梯度法、牛顿法、拟牛顿法等。这些方法可以用于求解非线性优化问题,例如最小化损失函数、拟合非线性模型等。
  2. 迭代法:迭代法通过不断迭代更新来逼近非线性问题的解。例如,迭代法可以用于求解非线性方程组、求解微分方程的数值解等。
  3. 泰勒展开法:泰勒展开法是一种将非线性函数近似为多项式的方法,通过保留函数在某一点的一阶、二阶甚至更高阶导数来实现。这种方法常用于局部近似和线性化处理。
  4. 李群与李代数方法:对于具有连续对称性的对象的变换问题,李群与李代数方法提供了一种有效的工具。例如,在机器人路径规划、SLAM(同时定位与地图构建)等问题中,李群与李代数方法常用于处理非线性变换。
  5. 数值模拟方法:对于复杂的非线性系统,数值模拟方法可以通过数值仿真来模拟系统的行为,并分析系统的稳定性和性能。
  6. 符号计算方法:符号计算方法利用计算机代数系统进行符号计算,可以对非线性方程组进行求解、符号推导等操作。
  7. 统计方法:统计方法包括贝叶斯推断、蒙特卡洛方法等,用于估计非线性模型的参数、进行概率推断等。
  8. 机器学习方法:机器学习方法可以用于建立非线性模型,并通过训练数据来学习模型的参数和结构,例如神经网络、支持向量机、随机森林等。

早期的SLAM问题被看为统计学问题,使用粒子滤波进行求解(Gmapping),但会存在粒子数目选择困难、样本退化、对传感器噪声敏感等问题。

SLAM是非线性估计问题,将其转化为线性问题可以大大降低求解难度。但旋转矩阵是一种特殊的结构,旋转矩阵的乘积是一个典型的非线性变换,它涉及到角度的叠加,而角度的叠加是非线性的。虽然泰勒展开可以用来近似非线性函数,由于角度叠加的非线性特性和截断误差的影响,泰勒展开并不是一个很好的选择。

旋转矩阵不符合加法特性,两个旋转矩阵相加不再是旋转矩阵,这意味着不能对旋转矩阵求导,求导的本质是衡量函数在给定点处的变化率,不能加法运算就不利于求导。旋转矩阵位于流形空间,流形空间中的每个点都对应一个局部线性空间,所以需要找到旋转矩阵对应的线性表达,这就涉及到了李群李代数的转换。

 一、为啥用四元数

位姿的表达

SLAM的一个目标是求解位姿,而位姿是由平移和旋转构成,变换矩阵构成如下

  • 旋转矩阵(Rotation Matrix):3x3的旋转矩阵表示物体的旋转姿态。它描述了相机或机器人在空间中的方向变化。
  • 平移向量(Translation Vector):3维向量表示物体从一个位置平移到另一个位置的平移量。它描述了相机或机器人在空间中的位置变化。

其中,R11R333x3的旋转矩阵,描述了物体的旋转姿态;T1T3是平移向量,描述了物体的位置变化。最后一行是[0 0 0 1],用于保持齐次坐标的一致性。

这时你会觉得,位姿这不很好被表达了,为什么要引入什么四元数、李群等等一大堆东西。我们需要注意一点就是表达和优化计算的区别,可以看到变换矩阵用9个变量表达旋转,在优化计算过程中是十分复杂的。因此需要一种简单的表达旋转的方法,我们会想到欧拉角。

欧拉角( Euler Angles)将旋转分解为三个方向上的转动例,按Z-Y-X顺序转动轴可以是定轴或动轴,顺序亦可不同常见的有 : yaw-pitch-roll,这样表达旋转参数量大大减少。然而,欧拉角存在着一些奇异性,这些奇异性可能导致旋转表示的不唯一性和不连续性。

1.万向锁(Gimbal Lock): 当俯仰角(pitch)接近 ±90 度时,会出现万向锁的情况。在这种情况下,两个旋转轴会趋向于重合,导致旋转系统丧失了一个自由度。这样一来,物体的旋转将变得不稳定,且不再具有唯一性。

2.奇异点(Singularities): 欧拉角存在一些奇异点,即某些特定的姿态下,无法唯一地确定欧拉角的值。这些奇异点通常出现在欧拉角的转换公式中,导致计算过程中的不连续性和不确定性。

3.旋转顺序的影响: 欧拉角的表示方式取决于旋转的顺序,不同的旋转顺序可能导致不同的结果。这种依赖旋转顺序的性质使得欧拉角的表示方式并不唯一。

4.理论上可以证明,用3个实数来描述旋转问题都会出现奇异性问题,因为这个问题,欧拉角不适用与插值或者迭代。 

四元数

旋转矩阵用9个量描述3自由度旋转具有冗余性,欧拉角虽然紧凑但存在奇异性,所以需要寻求一种新的旋转描述方式——四元数,它可以更有效地表示和计算旋转操作,并且相对于欧拉角等其他旋转表示方法,四元数不易受到奇异性的影响。

首先需要知道复数可以表达旋转。复数域定义如下,对应了复数的平面坐标系称为复平面x轴和y轴分别称为实轴虚轴。当r等于1时称为单位复数。特别的我们拿i乘以一个复数,对应的几何意义是旋转90°。在知道了可以用复数表达旋转后,引入了四元数。

四元数:三维情况下,四元数可作为复数的扩充,具有三个虚部和一个实部。四元数相比于角轴、欧拉角的优势:紧凑、无奇异性。且四元数与角轴之间可以相互转换。

详情请见...

SLAM中四元数、流形、李群、李代数是啥? - 古月居 (guyuehome.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桦树无泪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值