图优化理论
- 图优化,就是把优化问题表现成图(Graph)的一种方式,一个图由若干顶点(Vertex)以及连接这些顶点的边(Edge)构成。
- 用顶点表示优化变量,用边表示误差项。
- 对任意一个上述形式的非线性最小二乘问题,我们可以构建与之对应的一个图。
- g2o默认使用四元数和平移向量表达位姿。
g2o代码解析(来自slamEnd.cpp)
// 选择优化方法
typedef g2o::BlockSolver<g2o::BlockSolverTraits<6,3> > SlamBlockSolver;
// 选择一个线性方程求解器LinearSolver:这里选择的是CSparse,每个误差项优化变量维度为6,误差值维度为3;即6为pose的维度,3表示landmark的维度
typedef g2o::LinearSolverCSparse< SlamBlockSolver::PoseMatrixType > SlamLinearSolver;
// 初始化求解器
std::unique_ptr linearSolver ( new SlamLinearSolver());
linearSolver->setBlockOrdering( false );
//选择一个块求解器blockSolver:块求解器是包含线性求解器的存在,之所以是包含,是因为块求解器会构建好线性求解器所需要的矩阵块(也就是H和b)
s