文章目录
前言
主要介绍SLAM后端优化的方法。
g2o简介
g2o是基于图优化的库,支持各种不同的solver, csparse, eigen可扩展性好,有很多slam常用的edge/vertex type。
官方文档
https://github.com/RainerKuemmerle/g2o
安装依赖
libqt4-dev
qt4-qmake
libqglviewer-dev
libsuitesparse-dev
libcxsparse3.1.4
libcholmod3.0.6
编译安装
cd g2o
mkdir build
cd build
cmake ..
make -j4
sudo make install
gtsam简介
gtsam是基于因子图优化的后端SLAM库,gtsam 4.0 加了个新的expression,号称比ceres的AD快,而且可以compose,目前看来处理slam问题gtsam是最好的选择。
官方文档
https://bitbucket.org/gtborg/gtsam/downloads/
http://borg.cc.gatech.edu/download.html#quickstart
安装依赖
sudo apt install libtbb-dev
编译安装
cd gstam
mkdir build
cd build
cmake ..
make -j4
sudo make install
ceres
ceres google用在Production code里,质量没得说,现在加入了一点点对slam的支持,tutorial里面有2d和3d slam的例子。
ceres官方文档
https://github.com/ceres-solver/ceres-solver/releases
http://ceres-solver.org/installation.html#linux
安装依赖
sudo apt-get install cmake
google-glog + gflags
sudo apt-get install libgoogle-glog-dev
BLAS & LAPACK
sudo apt-get install libatlas-base-dev
Eigen3
sudo apt-get install libeigen3-dev
SuiteSparse
sudo apt-get install libsuitesparse-dev
可能需要的依赖
liblapack-dev
libcxsparse3.1.4
libgflags-dev
libgtest-dev
ceres的编译命令
cd ceres-solver
mkdir build
cd build
cmake ..
make -j4
sudo make install
ceres的安装位置
头文件: /usr/local/include/ceres/
编译相关: /usr/local/lib/cmake/Ceres/
静态库文件:/usr/local/lib/libceres.a
AprilSAM
三个库ceres,g2o,gtsam都非常棒,然而都不是我要的。
太依赖各种库了,比如boost和eigen。
漫长的删boost和拆模板的过程。
参见AprilSAM。gtsam编译完百M级别的编译后大小,他是百k。
Sophus
Sophus库是一个较好的李群李代数库,此处安装的是非模板类的Sophus库。
官方文档
https://github.com/strasdat/Sophus
编译
cd sophus
mkdir build
cd build
cmake ..
make -j4
sudo make install