ubuntu16.04 g2o更新出現的問題解決
阿新 • • 發佈:2018-12-12
1.解除安裝並安裝g2o
1)解除安裝
sudo rm -rf /usr/local/include/g2o
sudo rm -rf /usr/local/lib/libg2o*
rm -rf build
rm -rf bin
2)安裝
sudo apt-get install - libeigen3-dev - libsuitesparse-dev - libqt4-dev - qt4-qmake - libqglviewer-qt4-dev sudo apt-get install libqglviewer-dev git clone https://github.com/RainerKuemmerle/g2o/ git log |grep 8ba8a* git checkout 8ba8a03f7863e1011e3270bb73c8ed9383ccc2a2 sudo apt-get install libqt4-dev sudo apt-get install qt4-qmake sudo apt-get install libqglviewer-dev mkdir build cd build cmake ../ make sudo make install
2)解決更新安裝g2o後問題
/* //BlockSolverX::LinearSolverType * linearSolver = new LinearSolverCSparse<BlockSolverX::PoseMatrixType>(); // create the block solver on the top of the linear solver BlockSolverX* blockSolver = new BlockSolverX(linearSolver); //create the algorithm to carry out the optimization OptimizationAlgorithmLevenberg* optimizationAlgorithm = new OptimizationAlgorithmLevenberg(blockSolver); */ // 初始化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 ( linearSolver ); //std::unique_ptr<Block> solver_ptr ( new Block ( linearSolver)); std::unique_ptr<Block> solver_ptr ( new Block ( std::move(linearSolver))); // 矩陣塊求解器 // 梯度下降方法,從GN, LM, DogLeg 中選 g2o::OptimizationAlgorithmLevenberg* optimizationAlgorithm = new g2o::OptimizationAlgorithmLevenberg ( std::move(solver_ptr));
參考