報錯一共有兩個原因:
- 初始化g2o的接口已經發生變動需要修改
解決方案:以下是最新的初始化g2o的代碼(2019年11月15日14:17:40)
// 初始化g2o
typedef g2o::BlockSolver< g2o::BlockSolverTraits<6,3> > Block; // pose維度爲 6, landmark 維度爲 3
std::unique_ptr<Block::LinearSolverType> linearSolver ( new g2o::LinearSolverEigen<Block::PoseMatrixType>());
std::unique_ptr<Block> solver_ptr ( new Block ( std::move(linearSolver)));
g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton ( std::move(solver_ptr));
g2o::SparseOptimizer optimizer;
optimizer.setAlgorithm( solver );
- globalOptimizer not in scop
解決方案:
將代碼中所有的變量名爲globalOptimizer
改爲optimizer
你的贊是我分享易懂教程的最大動力!