本节开始讲解,预积分的边用于优化,看看优化过程咋使用预积分,再求解前,继续给出SO2一些基础知识,在SLAM(Simultaneous Localization and Mapping)中,SO(2) 的李代数(Lie algebra)表示二维旋转群的切空间,通常用于描述二维旋转的局部扰动或增量。以下是关于 SO(2) 李代数的对数映射(logarithm)的详细说明:
1. SO(2) 的定义
SO(2) 是二维旋转矩阵的群,定义为:
SO(2)={R∈R2×2 ∣ R⊤R=I, det(R)=1}
每个旋转矩阵可以表示为:
R=[cosθ −sinθ
sinθ cosθ]
其中 θ是旋转角度。
2. SO(2) 的李代数
SO(2) 的李代数 so(2) 是其切空间,由所有反对称矩阵组成:
so(2)={w∈R∣
w = [0 −w
w 0]
}
实际上,so(2)是一维的,可以用标量 w 表示(因为反对称矩阵的自由度为 1)
3. 指数映射(exp:so(2)→SO(2))
李代数到李群的映射通过指数映射实现:
exp(w) = R = [cosw −sinw
sinw cosw]
这里 w直接对应旋转角度 θθ。
4. 对数映射(log:SO(2)→so(2)
对数映射是指数映射的逆运算,从旋转矩阵 R 中提取李代数元素 w:
log(R) = w = atan2(R21, R11)
其中:
-
R11 = cosθ 是旋转矩阵的第一行第一列元素,
-
R21=sinθ 是第二行第一列元素,
-
atan2 是四象限反正切函数,返回角度 θ∈(−π,π]。
标量 w 即为旋转角度 θ,对应的李代数为:
w = [0 −θ
θ 0]
5. 在 SLAM 中的应用
在 SLAM 中,SO(2) 的对数映射通常用于:
-
优化问题:将旋转矩阵转换为李代数空间,便于在切线空间中计算雅可比矩阵或梯度。
-
扰动模型:对旋转施加局部扰动 Δθ,形式为 R←R⋅exp(Δθ)
-
插值:在李代数空间中线性插值旋转(如 w=t⋅θ)。
6. 反对称性质
一. 预积分残差
在 IMU 相关的应用中,通常把每个时刻的状态建模为包含旋转、平移、线速度、IMU 零偏的
变量,构成状态变量集合 X :
xk = [R, p, v, ba , bg ] k ∈ X
其中,残差项表示为deltaR, deltaP, deltaV, 参考《视觉融合里程计SLAM算法SE2Lam解析-论文篇》以及预积分(2-1),(2-2),(2-3)三式
(30)
(31)
(32)
其中
通常我们会把 r 统一写成一个 5 维的残差变量。它表面上关联两个时刻的旋转、平移、线速度,但
由于预积分观测内部含有 IMU 零偏,所以实际也和 i 时刻两个零偏有关。在优化过程中,如果对 i
时刻的零偏进行更新,那么预积分观测量也应该线性地发生改变,从而影响残差项的取值。所以,
尽管在这个残差项里似乎不含有 bai , bwi ,它们显然是和残差相关的。
二. 预积分的雅可比矩阵
最后我们来讨论预积分相对状态变量的雅可比矩阵。由于预积分测量已经归纳了 IMU 在短时
间内的读数,残差相对于状态变量的雅可比推导显得十分简单,下面我们来推导它们。如下图所示,图模型如下:
2.1 首先考虑旋转矩阵,式(30)
旋转与 Ri , Rj 和 bwi 有关。由(30)式我们来推导它:
对 ϕi和ϕj的直接观测,因此的导数为:
(33)
(34)
这些推导和位姿图的非常相似。而对于零偏量要稍微麻烦一些。注意在优化过程中,零偏量应该不断地更新,而每次更新时我们会利用(13)式来修正预积分的观测量。由于这个过程是不断进行的,我们总会有一个初始的观测量和当前修正后的观测量,在推导时必须考虑到这一点。旋转与p, v, ba无关,因此对其导数都是0,但是陀螺仪偏置不能忽略,delta_phi与陀螺仪偏置相关。
2.2 其次考虑速度项,式(31)
速度残差与vi , vj 呈线性关系,因此求导后就剩个旋转矩阵相关量;
(36)
(37)
对旋转求导,j时刻不相关,雅可比为0,只需求i时刻,这里要用到扰动模型,为了简化,用右扰动,重新定义残差
其中 delta_phi为小量,利用泰勒展开分解其相关的项可得
将转置展开
继续展开,并利用反对称性质
因此导数为
(38)
两个偏置项只与delta_vij有关,因此只需对(21)(22)式添加负号即可;
2.3 最后考虑速度项,式(32)
(39)
(40)
(41)
相对旋转的导数
(42)
两个偏置项,只需在上一讲(23)(24)式,添加负号即可;至此预积分相关的所有公式推导完毕。
三、总结:
在一个关键帧组成的系统中,我们可以从任意一个时刻的关键帧出发开始预积分,并且在任 一时刻停止预积分过程。之后,我们可以把预积分的观测量、噪声以及各种累计雅可比取出来,用 于约束两个关键帧的状态。按照先前的讨论,在开始预积分之后,当一个新的 IMU 数据到来时, 我们的程序应该完成以下任务:
1. 在上一个数据基础上,利用式(2-1),(2-1),(2-3),计算三个预积分观测量;
2. 计算三个噪声量的协方差矩阵,作为后续图优化的信息矩阵;
3. 预积分观测量相对于零偏的雅可比矩阵,共五个;
在结束预积分计算时,可以把这些结果取出并在优化过程中应用即可。下一讲开始预计积分融合其它边的过程