ORB-SLAM的GitHub主页:https://github.com/raulmur/ORB_SLAM
虽然整体上已经说得很清楚了,但是有些细节不够详细,运行的时候不注意很容易出错,因此对整个编译与运行过程进行详细的介绍:
安装环境:Ubuntu14.04+ROS indigo
准备工作:
1.源代码下载:
可以在GitHub主页下载到本地;或者执行命令:git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
2.测试数据集下载并解压:
http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz
依赖库安装:
1.Boost
使用Boost库来管理多线程,执行命令:
sudo apt-get install libboost-all-dev
2.ROS
使用ROS主要来获取输入图像序列(来自相机或数据集rosbag)以及可视化(rviz,image_view),ROS的安装与配置详见 http://wiki.ros.org/
3.OpenCV
使用OpenCV来处理图像和特征,需要注意的是这里需要使用OpenCV2.4版本(OpenCV3.0以上版本差别较大,编译无法成功)。具体编译与安装过程见下面的多版本OpenCV管理。
编译之前需要安装依赖项:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
4.g2o
~/ORB-SLAM/Thirdparty里自带g2o库,用来进行优化操作,需要安装以下依赖项:
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libeigen3-dev
再进行编译,进入~/ORB-SLAM/Thirdparty/g2o目录下,执行命令:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
5.DBoW2
~/ORB-SLAM/Thirdparty里自带DBoW2库,用来进行位置识别和特征匹配,无需安装其他依赖项,直接编译即可:
进入~/ORB-SLAM/Thirdparty/DBoW2目录下,执行命令:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
ORB-SLAM编译:
1.将ORB-SLAM的绝对路径添加到ROS的工作空间中,执行以下命令: export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM
将PATH_TO_PARENT_OF_ORB_SLAM替换成ORB-SLAM所在的绝对路径。
注意:若ORB-SLAM直接放在ROS工作空间的路径下,则无需上述步骤。查看当前ROS的工作空间的路径命令为:echo $ROS_PACKAGE_PATH
2.进入ORB_SLAM当前目录,执行命令:
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make
注意:如果使用的是ROS indigo版本,则需要将ORB_SLAM文件夹的manifest.xml文件中的opencv2依赖一行命令删除。
ORB-SLAM运行:
1.打开终端,执行启动ROS服务:roscore
2.打开终端,运行ORB_SLAM:rosrun ORB_SLAM ORB_SLAM Data/ORBvoc.txt Data/Settings.yaml (运行前先将~/ORB_SLAM/Data目录下的ORBvoc.txt.tar.gz文件解压)
3.打开终端,执行一些可视化命令:
rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true(启动图片查看程序,到时可以看到特征点跟踪情况)
rosrun rviz rviz -d Data/rviz.rviz(启动地图视图窗口,显示轨迹及特征点地图)
或者直接在ORB_SLAM目录下执行(等价于上述两命令):roslaunch ExampleGroovyOrNewer.launch
或者直接执行(等价于上述两命令且对目录无要求):roslaunch ORB_SLAM ExampleGroovyOrNewer.launch
4.打开终端,进入Example.bag(测试数据集rosbag)的父目录,执行命令:rosbag play --pause Example.bag(执行图片发布程序,执行后,按s单步运行,按space停止)
多版本OpenCV管理:OpenCV2.4.9+OpenCV3.1.0
查看当前工作环境的OpenCV版本:pkg-config --modversion opencv
下面介绍默认安装了OpenCV3.1.0的情况下,再去安装OpenCV2.4.9
默认安装的OpenCV位置在 /usr/local/include 目录下,再安装OpenCV2.4.9时自定义安装在 /usr/local/open2.4.9 目录下。
1.官网下载并解压OpenCV2.4.9 http://opencv.org/
2.进入OpenCV目录(属于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/opencv2.4.9 ..
make
sudo make install
3.修改配置文件,使系统默认OpenCV版本从3.1.0切换至2.4.9(修改.bashrc文件来设置PKG_ CONFIG_PATH与LD_LIBRARY_PATH)
sudo gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/opencv2.4.9/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv2.4.9/lib
source ~/.bashrc (或者直接使用gedit的保存)
4.最后在工程中用的OpenCV2.4.9时,需要在CMakeList.txt文件指定opencv的目录,执行命令:
set (OpenCV_DIR /usr/local/opencv2.4.9/share/OpenCV)
注意:该命令的位置需要在project(name)之前。
5.若想切换回OpenCV3.1.0,则需要把第3步中的配置命令换成相应的OpenCV目录:
sudo gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib
source ~/.bashrc (或者直接使用gedit的保存)
关于ROS的一些便捷操作:
在每次打开终端时都需要先运行这条命令后才能运行ROS相关的命令:source /opt/ros/indigo/setup.bash
在每次打开终端时都需要添加工作空间到ROS路径:source ~/indigo_workspace/setup.bash (indigo_workspace为自己创建的ROS工作空间)
或者为了方便,可在.bashrc文件最后添加上述两条命令。
(.bashrc是主文件夹下的隐藏文件,打开命令:sudo gedit ~/.bashrc)