最近跟着高博的博客《一起做RGB-D SLAM系列》将整个过程实现了一遍,下面是学习总结:
博客:https://www.cnblogs.com/gaoxiang12/p/4633316.html
作者源码:https://github.com/gaoxiang12/rgbd-slam-tutorial-gx
自己代码:https://pan.baidu.com/s/1O8w2TR2XOZ_G63x_dfNeFA
编程环境
ubuntu14.04
必要软件的安装:
1、OpenCV2
Step1: 下载opencv源码:http://opencv.org/downloads.html
在下载过程中,可以先安装依赖项:
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
Step2: 解压并进入opencv目录,用cmake安装:
mkdir build
cd build
cmake ..
make
sudo make install
这里要特别说明一下,因为我已经安装了OpenCV3,所以在安装OpenCV2的时候要实现两个版本共存。因为在OpenCV3时使用的是上述默认安装的方式,所以在安装OpenCV2时要指定安装的目录:
首先查看已安装的版本:
pkg-config --modversion opencv
下载OpenCV2后同样进入目录使用cmake安装:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2413 ..
make
sudo make install
在这里,我将OpenCV2.4.13安装在了/usr/local/opencv2413的目录下。
紧接着需要配置下文件,通过修改bashrc文件来设置:
sudo gedit ~/.bashrc
在文件末尾加上:
export PKG_CONFIG_PATH=/usr/local/opencv2413/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/opencv2413/lib
保存之后,在使用命令:
source ~/.bashrc
在查看版本,就变成opencv2.4.13了。
今后在使用时通过在CMakeLists.txt里设置源代码路径即可使用opencv2.4.13(最后一句MESSAGE打印出当前使用的版本):
SET(OpenCV_DIR "/home/lzy/opencv-2.4.13.6/build")
FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#MESSAGE(STATUS "version:${OpenCV_VERSION}")
返回opencv3,直接使用:
FIND_PACKAGE(OpenCV REQUIRED)
安装方法来自:https://blog.csdn.net/hansry/article/details/75309906
2、PCL
PCL就是Point Cloud Library,处理点云的必备工具。
在Ubuntu 1404或更低版本,你需要通过私有源来安装PCL库。
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
3、g2o
用于图优化。
github源码:https://github.com/RainerKuemmerle/g2o
依赖项:
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2 libcholmod-dev
接下来就是熟悉的cmake安装。
4、Eigen
c++线性代数库,它提供了快速的有关矩阵的线性代数运算。
输入以下命令安装:
sudo apt-get install libeigen3-dev
值得一提的是,Eigen是一个纯用头文件搭建起来的库。在使用时,只需引入头文件即可,不需要链接库文件。
目录结构:
bin 用来放编译好的可执行二进制文件。
src 用来放源代码。
lib 用来放编译好的库文件。
include 用来放头文件。
我们要把目录结构告诉cmake。所以我们在代码根目录下写一个CMakeLists.txt。cmake在生成代码时,会读这个文件,并按照它来编译你的代码。写入:
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定版本
PROJECT( slam ) #设定工程名
SET( CMAKE_CXX_COMPILER "g++") #设定编译器
SET( CMAKE_BUILD_TYPE Release )
SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")
#设定可执行二进制文件的目录
SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#设定存放编译出来的库文件的目录
SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#并且把该目录设为连接目录
LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib)
#设定头文件目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)
#增加子文件夹,也就是进入源代码文件夹继续构建
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
不过在实际做的过程中并没有将库文件拿过来,所以也就没有使用到lib文件夹,不过问题不大。。。
通过上述操作,基本的目录结构和使用的库也就搭好了。接下来就开始一步步实现RGB-D SLAM吧~