高翔博士SLAM十四讲ch8g2o部分代码报错--一步解决!亲测有效

项目场景:

先来看看大佬们的解决方法
博客1
博客2

大佬们的方法都用不了。。特别是std::move改了之后还是有问题,因此有问题的朋友可以尝试一下我的方法

问题描述:

先贴一下g2o原代码:

 DirectBlock* solver_ptr = new DirectBlock (linearSolver);
 g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton( solver_ptr ); // G-N

我的报错一共有4个,但其实就是这两句话的错误


解决方案:

简单粗暴,直接在这两个指针前面加上unique,具体原因请参考上面大佬写的博客

 DirectBlock* solver_ptr = new DirectBlock (unique_ptr<DirectBlock::LinearSolverType>(linearSolver));
 g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton( unique_ptr<DirectBlock>(solver_ptr) ); // G-N

运行成功!

你可能感兴趣的:(Linux,SLAM,bug,slam,linux)