图优化(Graph-based)
Kong Liangqian Lv6

Pose Graph的构建

图构建好,就需要进行优化

  • 用一个图来表示SLAM问题
  • 每一个节点都是位姿(x,y,theta)
  • 两个节点之间的边,表示两个节点之间的空间约束
    • 帧间边:表示时间连续的两个点
    • 回环边:两个时间是不连续的两个点
  • 一旦出现了回环边,就需要进行优化这个图。进行误差消除
    • 里程积分的相对位姿视为预测值
    • 回环计算的相对位姿视为观测值
  • 调整回环的误差,即观测和预测之间的误差最小!非线性最小二乘优化

图的构建— 帧间边

  • 里程计测量从$x_i$到$x_{i+1}$的关系
  • 相邻节点之间的位姿关系可以有里程计、IMU、帧间匹配计算得到

回环检测:

  • 节点i和节点j在空间上相邻,但是时间上不相邻
  • 用帧间匹配算法算一个相对位姿

一个简单的回环检测方法

  • 把节点分为active和inactive的两部分,时间比较进的是active,有点源的是inactive
  • 找到当前节点周围一定范围内所有inactive的节点,作为回环候选帧
  • 当前节点和回环候选镇进行匹配,根据得分判断是否形成回环

一旦回环检测成功,图就已经建立完成了,接下来就需要对图进行优化

图优化-非线性最小二乘的问题

此过程就是一个非线性最小二乘的问题

要解决的问题

给定一个系统,其状态方程为:$f(x)=z$

  • x表示系统的状态向量-即需要估计的值
  • z表示系统的观测值,可以通过传感器进行直接观测
  • $f(x)$表示一个非线性的映射函数,状态向量x可以通过非线性函数$f(x)$映射得到z

给定该系统的n个混有噪声的观测值$(z_1,…,z_n)$,估计状态向量x,使得其经过$f(x)$映射之后的预测值和观测值的误差最小。

和下行二乘基本相同,只是状态方程$f(x)$是一个非线性函数

目标最小话预测和观测的差 ,因此误差即为预测和观测的差:

假设误差服从高斯分布$e_i(x)$~$N(0,\Omega_i)$,$\Omega_i$位对应的信息矩阵。

非线性最小二乘的目标函数为

也是一个加权的最小二乘法

如果此时$F(x)$是一个凸函数,可以直接求导等于0,求解方程

但是对于非凸函数来说,通常采用基于梯度的优化方法,需要把非线性函数进行线性化-泰勒展开

把$e_i(x)$泰勒展开带入式子(2),构建线性系统,求解线性系统

更新解,并且不断迭代直到收敛

向g2o、ceres等等库整体的主干流程都是符合上面的。

在图优化SLAM 中的应用

误差函数

  • 观测值为匹配计算得到节点i和节点j的相对位姿,$Z_{ij}^\prime$
  • 预测值为里程积分得到的当前节点i和节点j的相对位姿,$Z_{ij}$
  • 求两个位姿之间的相对位姿$e_{ij}(x)=T2V(Z_{ij}^{-1}Z^\prime_{ij})$

预测值

已知$X_i$和$X_j$为两个位置的位姿。那么预测值应该是(也是先表示$X_i$先做反变换,然后变换到$X_j$上去)

若$X_i=\begin{bmatrix}R_i&t_i\\0&1\end{bmatrix}$,则$Z_{ij}=\begin{bmatrix}R_i^TR_j&R_i^T(t_j-t_i)\\0 &1\end{bmatrix}$。

那么如果求向量则为$z_{ij}=T2V(Z_{ij})=\left( R_i^T(t_j-t_i),\theta_j-\theta_i \right)^T$

现在去求它和观测值的一个相对位姿。因此结果为

这也就是求从预测值和观测值的一个位姿变换,也可以求相应的jacobian矩阵

接下来对误差函数进行线性化,求导的时候,注意 ,他只有和$x_i$和$x_j$项求导有值,其他的都是0

因为b,H求导的时候,这些都是非常稀疏的,因此用稀疏矩阵去求才可以实时

图之间都是两两之间的相对位置约束,即使移动了整个图,也没有关系,因此解是不唯一的,满足相对位姿约束的解有无穷多组。因此,我们只需要固定一个位姿。一般选择第一个位姿,

关于信息矩阵
信息矩阵用来代表边的不确定度,信息矩阵越大代表这条边在优化的过程中越重要。

 Comments