一、问题描述
编译报错如下:
/home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp: In function ‘void SetMinimizerOptions(std::shared_ptr<g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> > >&, const BundleParams&, g2o::SparseOptimizer*)’:
/home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp:136:74: error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >*)’
solver = new g2o::OptimizationAlgorithmLevenberg(solver_ptr.get());
^
In file included from /home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp:18:0:
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: candidate: g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::unique_ptr<g2o::Solver>)
explicit OptimizationAlgorithmLevenberg(std::unique_ptr<Solver> solver);
^
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: no known conversion for argument 1 from ‘g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >*’ to ‘std::unique_ptr<g2o::Solver>’
/home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp:139:71: error: no matching function for call to ‘g2o::OptimizationAlgorithmDogleg::OptimizationAlgorithmDogleg(g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >*)’
solver = new g2o::OptimizationAlgorithmDogleg(solver_ptr.get());
^
In file included from /home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp:19:0:
/usr/local/include/g2o/core/optimization_algorithm_dogleg.h:56:16: note: candidate: g2o::OptimizationAlgorithmDogleg::OptimizationAlgorithmDogleg(std::unique_ptr<g2o::BlockSolverBase>)
explicit OptimizationAlgorithmDogleg(std::unique_ptr<BlockSolverBase> sol
^
/usr/local/include/g2o/core/optimization_algorithm_dogleg.h:56:16: note: no known conversion for argument 1 from ‘g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >*’ to ‘std::unique_ptr<g2o::BlockSolverBase>’
/home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp: In function ‘void SetSolverOptionsFromFlags(BALProblem*, const BundleParams&, g2o::SparseOptimizer*)’:
/home/xxx/slambook/ch10/g2o_custombundle/g2o_bundle.cpp:186:49: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >::BlockSolver(g2o::LinearSolver<Eigen::Matrix<double, 9, 9, 0, 9, 9> >*&)’
solver_ptr = new BalBlockSolver(linearSolver

博客介绍了在使用g2o库进行SLAM研究时遇到的编译错误,原因是新旧版本的不兼容。作者提供了解决方案,通过更新代码以适配新版本g2o,包括修改创建优化算法和线性求解器的方式,以避免类型转换错误。此外,还展示了如何根据参数设置优化器和线性求解器。
最低0.47元/天 解锁文章
1345

被折叠的 条评论
为什么被折叠?



