一、g2o的安裝
//安裝依賴項
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6
//去git hub下載源碼后編譯安裝
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install
二变勇、P124頁程序
注意構(gòu)建圖優(yōu)化晃危,設(shè)定g2o時江咳,g2o版本與原作者不同可能導(dǎo)致報錯宗弯,原因在于:
Block* solver_ptr = new Block ( linearSolver );
這里的構(gòu)造函數(shù)BloclSolver更改了嘿棘,下述博客中給出了較為詳細的解釋:
https://blog.csdn.net/robinhjwy/article/details/78084210
——————————————分割線————————————————
在第六章的實驗中汤求,只需要把初始化部分函數(shù)更改為一下代碼即可:
typedef g2o::BlockSolver< g2o::BlockSolverTraits<3,1> > Block; // pose 維度為 6, landmark 維度為 3
//Block::LinearSolverType* linearSolver = new g2o::LinearSolverDense<Block::PoseMatrixType>(); // 線性方程求解器
std::unique_ptr<Block::LinearSolverType> linearSolver ( new g2o::LinearSolverDense<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))); // 矩陣塊求解器
//g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( solver_ptr);
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( std::move(solver_ptr));
g2o::SparseOptimizer optimizer;
optimizer.setAlgorithm ( solver );