ORB_SLAM2 + Ubuntu 16.04 + ROS 配置+usb摄像头使用

目前网络上大部分的配置都是先完成ORB_SLAM2所需要的依赖库的配置,再进行ORB_SLAM2的配置。但是这种方法在实际操作中非常不科学,因为一旦依赖库之前自己有安装过但是忘记了,再按照网络教程安装一遍就极容易出现同一个库多版本冲突的问题,非常难以解决。因此本博客用相反的顺序配置ORB_SLAM2,这种做法将会大大减少配置中所遇到的问题。

首先进行摄像头驱动的配置

(本文采用博世的usb摄像头驱动,再下一篇博文中,将写一下怎么自己编写摄像头驱动并以ROS节点的形式发布图像)

建立一个独立的工作空间

mkdir -p ~/camera_ws/src 

cd ~/camera_ws/src

catkin_init_workspace

cd ~/camera_ws/

catkin_make

sudo gedit ~/.bashrc

#在末尾加入 source ~/camera_ws/devel/setup.bash
#查看是否成功:echo $ROS_PACKAGE_PATH

cd camera_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ../
catkin_make

编译ROS相机标定包

rosdep install camera_calibration
rosmake camera_calibration
sudo apt-get install ros-kinect-usb-cam optional  #可选

标定相机


roslaunch usb_cam usb-cam-test.launch

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 image:=/usb_cam/image_raw camera:=/usb_cam

标定界面出现后,按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,直到x,y,size,skew的进度条都变成绿色位置.

此时可以按下CALIBRATE按钮,等一段时间就可以完成标定,按SAVE保存。

标定结果保存在/home/leo/.ros/camera_info/head_camera.yaml中。

 

进行ORB_SLAM2配置

git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB-SLAM2
./build.sh

此阶段几乎一定会报错,根据报错信息中提示的缺少的库的信息,到本博客下面找对应库的安装方法。

 

此时假设读者已经完成了所有需要库的安装,并且没有报错。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/leo/ORB_SLAM2/Examples/ROS
./build_ros.sh

此阶段如果报错,同样到本博客下找对应库的安装方法。

如果报错信息为undefined reference to symbol '_ZN5boost6system15system_categoryEv'类型问题,本博文结尾同样给出了解决方法。

 

之后为了配合上文安装的摄像头驱动,将ROS目录下的ros_mono.cc文件中/camera/image_raw改为/usb_cam/image_raw

再在终端中 ./build_ros.sh 编译即可。

 

假设读者已经完成了以上所有的步骤并且没有报错。那么ORB_SLAM2的配置就已经完成。

 

usb摄像头运行ORB_SLAM2

将之前完成标定的head_camera.yaml文件移动到ORB_SLAM2/Examples/ROS/ORB_SLAM2/head_camera.yaml,按照Asus.yaml的格式进行修改,成功运行ORB_SLAM2.

roslaunch usb_cam usb_cam-test.launch
rosrun ORB_SLAM2 Mono /home/leo/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/leo/ORB_SLAM2/Examples/ROS/ORB_SLAM2/head_camera.yaml

注:rosrun或者roslaunch如果报错,则在终端中cd到对应的文件夹下,再source ~/xxxx(文件夹名字)/devel/setup.bash

如:  source ~/camera_ws/devel/setup.bash

 

各种依赖的安装方法

Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j

Opencv

参考官网进行安装,本文不再赘述

Eigen

sudo apt-get install libeigen3-dev

 

遇到undefined reference to symbol '_ZN5boost6system15system_categoryEv'报错的解决方法

打开终端

locate boost_system //查找到目录找到文件的路劲,然后将他加到cmakelist的文件路径中。 
/usr/lib/x86_64-linux-gnu/libboost_system.a 
/usr/lib/x86_64-linux-gnu/libboost_system.so 
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 

locate boost_filesystem //查找到目录 
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a 
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so 
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0

sudo cp /usr/lib/x86_64-linux-gnu/libboost_system.so /home/leo/ORB_SLAM2/lib
sudo cp /usr/lib/x86_64-linux-gnu/libboost_filesystem.so /home/leo/ORB_SLAM2/lib

然后在/home/leo/ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt中添加

set(LIBS 
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so
)

问题即可解决。

 

你可能感兴趣的:(ORB_SLAM2 + Ubuntu 16.04 + ROS 配置+usb摄像头使用)