Ubuntu 14.04/16.04搭建ORB_SLAM2
一、安装ROS打开USB摄像头的驱动文件
1.建立工作空间
mkdir -p ~/catkin_usb/src
2.下载驱动文件
cd ~/catkin_usb/src
git clone https://github.com/bosch-ros-pkg/usb_cam
3.编译
注:编译前先进入~/catkin_usb/src/usb_cam/launch目录,将usb_cam-test.launch文件的pixel_format的value值改为mjpeg;将video_device的value改为对应的摄像头序列号(使用ls /dev | grep video查看对应的摄像头序列号)。
cd ~/catkin_usb
catkin_make
source devel/setup.bash
4.运行USB摄像头
(1).打开终端,启动roscore (注:这一步可以省略,使用roslaunch命令会启动roscore)
(2).打开另一个终端,运行
cd ~/orbslam_usb
source devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
二、安装ORB-SLAM2
1.建立ORB-SLAM2的工作空间
mkdir -p ~/orbslam_ws/src
2.安装g2o
(1).安装g2o之前要先安装以下库依赖:
sudo apt-get install libboost-all-dev
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libeigen3-dev
(2).下载、编译、安装g2o
注:编译前先升级Cmake版本为3.1及以上(Ubuntu 14.04的需要升级,Ubuntu 16.04不需要升级)。(使用cmake -version查看版本)
cd ~/orbslam_ws/src
git clone https://github.com/RainerKuemmerle/g2o
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install
3.安装Pangolin
(1).首先安装所需的依赖
sudo apt-get install libglew-dev #安装Glew
sudo apt-get install cmake #安装CMake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev #安装Boost
sudo apt-get install libpython2.7-dev #安装Python2'Python3
(2).下载、编译、安装Pangolin:
注意:最新的Pangolin文件在Ubuntu14.04好像会出现编译错误,以前的文件可以编译通过(链接:https://pan.baidu.com/s/18u3VcyPCKfWh7ZxiMYkRdA
提取码:6aqp
),最新的文件在Ubuntu16.04上可以通过编译。
cd ~/orbslam_ws/src
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make
sudo make install
4.下载ORB_SLAM2
cd ~/orbslam_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
5.编译ORB-SLAM2
注意:在Ubuntu14.04编译时,这里会出现ORB_SLAM2/Thirdparty/g2o下缺少一个config.h文件,将Pangolin/build/src/include/pangolin下的config.h文件拷贝到ORB_SLAM2/Thirdparty/g2o文件夹下
cd ~/orbslam_ws/src/ORB_SLAM2
chmod +x build.sh
./build.sh
注:如果编译时如果出现c++: internal compiler error: killed(program cc1plus)的错误,可使用以下方法进行编译:
cd ~/orbslam_ws/src/ORB_SLAM2
rm -r build
mkdir build
cd build
cmake ..
make
注:在Ubuntu14.04编译时,如果出现No rule to make target …/Thirdparty/DBoW2/lib/libDBoW2.so’, needed by …/lib/libORB_SLAM2.so. Stop.的错误,则进入orbslam_ws/src/ORB_SLAM2/Thirdparty/DBoW2目录,进行以下操作解决:
mkdir build
cd build
cmake ..
make
6.编译ORB-SLAM2中的ROS包
(1).首先在~/.bashrc中添加以下路径,并在终端输入这条命令:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
source ~/.bashrc
注:PATH为home目录到ORB-SLAM2的路径
(2).将ORB-SLAM2/Example/ROS/ORB_SLAM2/src下的ros_stereo.cc和ros_mono.cc文件中的/camera/left 话题改为/usb_cam/left
(3).编译ROS包
cd ~/orbslam_ws/src/ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh
注:如果无法通过编译,使用以下方法进行编译:
cd ~/orbslam_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2
rm -r build
mkdir build
cd build
cmake ..
make
7.运行ORB-SLAM2
(1).首先运行如下命令启动USB摄像头
roslaunch usb_cam usb_cam-test.launch
(2).运行ORB_SLAM2(运行单目)
rosrun ORB_SLAM2 Mono /home/(user)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user)/catkin_ws/src/ORB_SLAM2/Examples/Monocular/***.yaml true