1、创建一个线性求解器LinearSolver
2、创建BlockSolver。并用上面定义的线性求解器初始化。
BlockSolver 内部包含 LinearSolver,用上面我们定义的线性求解器LinearSolver来初始化。它的定义在如下文件夹内:
g2o/g2o/core/block_solver.h
你点进去会发现 BlockSolver有两种定义方式
一种是指定的固定变量的solver,我们来看一下定义
其中p代表pose的维度(注意一定是流形manifold下的最小表示),l表示landmark的维度
另一种是可变尺寸的solver,定义如
block_solver.h的最后,预定义了比较常用的几种类型
3、创建总求解器solver。并从GN, LM, DogLeg 中选一个,再用上述块求解器BlockSolver初始化
4、创建终极大boss 稀疏优化器(SparseOptimizer),并用已定义求解器作为求解方法。
创建稀疏优化器
用前面定义好的求解器作为求解方法:
其中setVerbose是设置优化过程输出信息用的
5、定义图的顶点和边。并添加到SparseOptimizer中。
这部分比较复杂,我们下一次再介绍。
6、设置优化参数,开始执行优化。
设置SparseOptimizer的初始化、迭代次数、保存结果等。
初始化
设置迭代次数,然后就开始执行图优化了。