由于最近组里又有新人想要学习SLAM,为了让他们少走点坑,这里简单总结一下SLAM环境搭建的相关内容,包括一些常见的库。 也自己重新搭好了一个虚拟机环境,可以直接给他们用了。 本文介绍的SLAM系统环境是Ubuntu 16.04。
1.依赖环境简介
(1)Ubuntu
Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的。 由于其美观的可视化界面,是初学者入门Linux的首选系统。
(2)Eigen
Eigen是一个高层次的开源线性代数库(C++实现),有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。 官网是这个。 许多上层的软件如g2o、Sophus等也使用Eigen进行矩阵运算。 在SLAM中几乎无处不在,只要涉及到跟矩阵运算有关的内容几乎都用到了Eigen。
(3)Sophus
Sophus是一个由Starsdat维护的李代数库,可以用于进行各种李代数运算。它是直接在Eigen上开发的。 它的Github项目主页是这里。 在SLAM中,相机的位姿、运动等都是用李代数表示的,利用这个库进行相关运算。
(4)OpenCV
OpenCV应该就不用过多介绍了,不管之前是Python还是C++,都用过很多了。 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 官网是这里。 在SLAM中几乎也是无处不在,只要涉及到跟图像有关的都使用了OpenCV,如图像的读写、特征点提取等等。
(5)Ceres
Ceres是一个面向通用最小二乘问题求解的库。官网是这个,Github项目主页是这个。 作为用户,我们只需要定义优化问题,然后设置一些选项,输入进Ceres进行求解即可。 一般用于后端优化。
(6)G2O
G2O是一个通用图优化库,图优化目前广泛用在SLAM中。它的主页和和Github项目主页分别是这个和这个。 和Ceres库代表了后端优化的两个大方向,G2O是图优化。
(7)DBoW3
DBoW3是一个专门用于生成字典的库,在SLAM中主要用于回环检测。Github项目主页是这个。 用于提取、生成词袋模型,以便于进行回环检测。
(8)OctoMap
OctoMap库主要用于生成地图,应用于SLAM中的建图过程。Github项目主页是这里。
(9)PCL
著名的点云可视化和处理库,在SLAM中主要用于进行RGB-D中激光点和地图的显示。官网是这里。
2.环境安装
(1)Ubuntu
详细的安装步骤见之前写的这篇博客。注意在虚拟机中安装和实机安装过程是大同小异的,只是实机安装的话需要把iso镜像利用UlstraISO等软件刻录到U盘中,然后电脑以U盘方式重启即可进入安装步骤了。
(2)Eigen
Eigen库相对比较独立,依赖的库比较少,所以安装也简单些。输入如下命令即可安装。
apt-get install libeigen3-dev
(3)Sophus
安装流程见这篇博客。
(4)OpenCV
OpenCV的安装流程见这篇博客。如果需要编译Contrib版的OpenCV,可以参考这篇博客。这里指的是C++版本的OpenCV的安装,不是Python的。Python的之前也提到过,直接用pip就可以装了。
(5)Ceres
Ceres安装流程见这里。
(6)G2O
G2O安装流程见这里。
(7)DBoW3
DBoW3库只依赖于OpenCV,因此装好OpenCV后从Github上下载源码,直接利用cmake进行安装即可。这里认为代码已经下载到本地了,且进入到了代码目录中。
mkdir build
cd build
cmake ..
make
make install
不出意外这样便可以安装完成了。
(8)OctoMap
OctoMap与DBoW3库类似,首先需要从Github下载源码,然后切换到代码目录下。
mkdir build
cd build
cmake ..
make
make install
这样安装便完成了。
(9)PCL
安装可参考这篇博客,介绍的比较全面。
本文作者原创,未经许可不得转载,谢谢配合