g2o论文阅读笔记
作者:互联网
纯粹方便自己理解整理的笔记,以前总是写在纸上,不知不觉都丢了。希望写在博客里,慢慢积累一些。
0、简介
SLAM/BA问题的目标:找到一组参数或状态变量,以最大限度地解释受高斯噪声影响的一组测量值。
这种问题可以被表示为一个图,图中的节点node:待优化的状态变量,图中的边edge:它所连接的两个节点的成对观察。
前人常使用标准方法(如高斯-牛顿、Levenberg-Marquardt、高斯-赛德尔或梯度下降的变体)的简单实现这种问题。
这篇论文描述了一个执行非线性最小二乘问题优化的一般框架。
图1概述了使用G2O作为优化后端可以解决的各种问题:
一个2D SLAM algorithm可以用不超过 30 行C++代码就实现了,只需要指定误差函数和参数。
1、解决SLAM/BA问题的相关工作
大多数算法都假设协方差大致是球形的,因此在优化pose graph时有困难,有些协方差具有零空间 或 特征值上具有实质性差异。
图优化可以看作是一个非线性最小二乘问题,通过在当前状态附近线性化、求解和迭代 进行求解。
求解线性系统的一种技术是预处理共轭梯度(PCG),是用于大型稀疏姿态约束系统的解算器,效率高。
g2o里面也包含了一个稀疏的PCG,使用了块状雅可比矩阵的预处理技术。
大量的工作都有很多局限性,但是g2o是通用的,适用于:2D SLAM with landmarks, 使用单目/双目相机的BA。
Sparse Bundle Adjustment是利用3D 点与相机姿态之间雅可比矩阵的稀疏性的非线性最小二乘法。
还有一些基于非线性共轭梯度的系统,不明确地形成线性系统,虽然收敛得很慢,但可以处理非常大的数据集,比如SSBA。
2、基于最小二乘法的非线性图优化
误差函数模型如下,一般会找到它的最小值:
为了简单表示,下面使用简写表示变量:
使用这种形式表示的问题 可以通过有向图表示。
图的节点i表示参数块xi,节点i和j之间的边表示两个参数块xi和xj之间的有序约束。 图2显示了图形和目标函数之间的映射示例:
A.最小二乘优化
如果已经知道一个不错初始值x_,则公式(2)的数值解可以使用GN.LM方法,主要思想就是在当前初始值x_附近进行tylor一阶展开:
然后,在方程(1)的误差项Fij中代入方程(5)
标签:非线性,BA,论文,笔记,SLAM,g2o,优化,节点 来源: https://www.cnblogs.com/wongyi/p/11190415.html