最近毕业,真的很忙,调整了一阵子工作状态和心态,要开始继续学习了。
*往期回顾
SLAM 过程可以用运动方程和观测方程描述
运动=在xk时刻,通过一个输入uk,到了xk+1。伴有噪声。
观测=在xk这个位姿下,看到yj路标,得到zkj观测数据。伴有噪声。
①首先我们明确了xk应该如何来描述,即采用旋转矩阵R以及平移变量t来描述。为了使得变换的计算过程更加方便,可以直接用矩阵的乘法来描述位姿变化,可以将上述两者写成一个矩阵,即变换矩阵。
旋转矩阵为行列式为1的正交矩阵。即且
②观测方程是一个状态估计问题。我们希望通过输入的uk以及观测到的zkj估计出对应的位姿xk以及路标点yj的位置。
估计无可避免的就是会出估计不准确的情况,我们需要迭代,进行更好的估计,即优化。
在此过程中,我们需要对运动和观测方程求取关于x,y的导数(求导求误差方程极小值)
那么如何去求关于旋转矩阵和变换矩阵的导数呢?
旋转矩阵是无法定义出加法的,两个旋转矩阵相加,行列式不为1或者不构成正交条件,就不再是旋转矩阵了。因此该集合上不具有定义好的加法。
一、群 group
三维旋转矩阵构成了特殊的正交群
三维变换矩阵构成了特殊的欧式群
群是一种集合加上一种运算的代数结构。
这是一种封闭的运算,怎么运算都不会跑出去这个集合。
群满足一些性质: 封闭性、结合律(运算和顺序没有关系)、幺元(存在群内的一个元素、对元素进行运算后等于本身)、逆(任选a,存在a*a的逆=幺元)。凤姐咬你。
如果满足交换律,还叫交换群= =。
加法在整数域上是交换群。
旋转矩阵在乘法上成群。但在加法上不成群。
二、李群与李代数
具有连续(光滑)性质的群。
既是群又是流形。在3x3维空间中,SO(3)是局部的连续的。
一个刚体能够连续地在空间中运动,所以SO(3)和SE(3)都是李群。
但是这两年个李群,只定义了良好地乘法没有定义良好的加法。
李代数是与李群对应地一种结构。实际上是李群单位元处的正切空间。
定义单位元(英文常写作Identity)是集合里的一种特别的元,与该集合里的运算(可理解为实数里的*,但并不局限于)有关.当它和其他元素结合时,并不会改变那些元素.也叫幺元。
李代数:
正交群的李代数:
三维向量
欧式群的李代数:
六维向量。
三、指数映射与对数映射
3.1 指数映射
指数映射反映了从李代数到李群的对应关系。对于矩阵如何定义求指数运算。
求出so(3)的指数映射后可以发现,和罗德里格斯公式的形式是一样的。
说明so(3)的物理意义就旋转向量。罗德里格斯公式即:旋转向量到旋转矩阵的变换过程
3.2 对数映射
给定旋转矩阵,求李代数,就是对数映射。
到那时实际上没必要这么求,矩阵到向量的旋转关系已经在旋转向量部分给出:
李代数到李群之间存在指数运算关系。
对于欧式群,指数运算中旋转部分和欧式群相同,平移部分则加了一个雅可比矩阵。
四、李代数求导和扰动模型
slam中估计相机的旋转和相机的平移。
由于李群无法进行加法,导数无从定义,没法在矩阵上加上一个小量,因此想从李代数和李群的关系上入手,李代数是一个向量,是可以进行加法的。
解决方法:
利用李代数上加法定义李群元素的导数?
使用指数映射和对数映射完成变换关系?
在李代数中做加法不等于在李群上做乘法。
对SO(3)而言:
根据BCH公式,当李代数A、B中任意一个为小量时,二阶以上的项可以忽略掉。
BCH具有线性近似形式,实际上二阶以上基本就是0了。
如果左乘小量,就是左雅可比。如果右乘小量,就是右雅可比。
这个左雅可比刚刚好就是SE(3)中的雅可比矩阵。
在李群上左乘小量时,李代数上的加法相差左雅可比的逆。
反之
李代数上进行小量加法时,相当于李群上左(右)乘一个带左(右)雅可比的量
对SE(3)而言,就更复杂一些。大多数时候用SO(3)。
旋转后的点关于旋转的导数,由于R不具有加法,因此无法求导,那么如何利用李代数来求导。
R需要加上一个小量的变化值,对应,可以在李代数上加上小量,求相对于小量的变化率。(导数模型)
在R的左侧左乘一个小量,对应到李代数上,求相对于小量的李代数的变化率(扰动模型)
导数模型:
扰动模型:
小量是一个李代数
实用中一般采用扰动模型。