g2o初始化一些


今天看了一下智能指針的東西,發現更簡單的思路:
就是Block和solver構造時,需要傳遞unique_ptr,那我們將普通指針轉換成unique_ptr不就可以了么:

// 初始化g2o //第一步: typedef g2o::BlockSolver< g2o::BlockSolverTraits<6,3> > Block; // pose 維度為 6, landmark 維度為 3 //第二步: Block::LinearSolverType* linearSolver = new g2o::LinearSolverCSparse<Block::PoseMatrixType>(); // 線性方程求解器 //std::unique_ptr<Block::LinearSolverType> linearSolver ( new g2o::LinearSolverCSparse<Block::PoseMatrixType>()); //第三步 Block* solver_ptr = new Block ( std::unique_ptr<Block::LinearSolverType>(linearSolver) ); //std::unique_ptr<Block> solver_ptr ( new Block ( linearSolver)); //std::unique_ptr<Block> solver_ptr ( new Block ( std::move(linearSolver))); // 矩陣塊求解器 //第四步: g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( std::unique_ptr<Block>(solver_ptr)); //g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( std::move(solver_ptr)); //第五步: g2o::SparseOptimizer optimizer; //第六步: optimizer.setAlgorithm ( solver );

變化在第三步和第四步的new構造參數里,運行沒毛病。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM