1. 程式人生 > >ubuntu16.04 g2o更新出現的問題解決

ubuntu16.04 g2o更新出現的問題解決

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));

參考