目前,在视觉SLAM所有算法中,ORB_SLAM2是一个极其优秀值得深究的算法,其包含了单目,双目和深度摄像头三种接口。本本记叙了本次Ubuntu 14.04+Ros indigo+ORB_SLAM2 的平台搭建,和遇到的几个问题,以便以后重装和其他使用者参考。
首先是安装ubuntu,我选择的是Ubuntu 14.04。然后是安装ROS,选择的是对应的indigo版本,其具体安装步骤参考官网。
这些步骤都装好后,首先需要安装Pangolin,用于可视化。目前所能搜索到的网络上的安装步骤中,都安装不成功,这其实是源码问题,使用旧版本的Pangolin即可。
git clone https://github.com/zzx2GH/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install
最后千万别忘记 sudo make install,如果在后面执行orb算法的时候出现了如下问题:
terminate called after throwing an instance of 'std::runtime_error'
what(): Pangolin X11: Unable to retrieve framebuffer options
请把源码目录Pangolin\src\display\device下的display_x11.cpp文件做如下修改:
staticint visual_attribs[] = {
GLX_X_RENDERABLE , True,
GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
GLX_RENDER_TYPE , GLX_RGBA_BIT,
GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
GLX_RED_SIZE , 8,
GLX_GREEN_SIZE, 8,
GLX_BLUE_SIZE, 8,
GLX_ALPHA_SIZE, 8,
GLX_DEPTH_SIZE, 24,
GLX_STENCIL_SIZE, 8,
GLX_DOUBLEBUFFER , glx_doublebuffer ? True : False,
//注释这一行GLX_SAMPLE_BUFFERS , glx_sample_buffers,
//注释这一行 GLX_SAMPLES , glx_sample_buffers > 0 ? glx_samples : 0,
None
};
之后重新编译Pangolin即可。
完成Pangolin安装后,建立工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
之后下载usb_cam并编译:
cd catkin_ws/src/usb_cam
mkdir build
cd build
cmake ..
make
最后下载并编译ORB_SLAM2,同样,该包需要下载到工作空间中:
cd catkin_ws
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
./build_ros.sh
请注意:在下载好ORB_SLAM2包后,不要着急build,首先添加ORB_SLAM2的路径:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/usrname/catkin_ws/src/ORB_SLAM2/Examples/ROS
我尝试使用 source /home/usrname/catkin_ws/src/ORB_SLAM2/Examples/ROS 添加到~/.bashrc中,但是不能正常工作,使用以上命令则可以识别。如果不添加该路径,在./build_ros.sh编译的时候会出现错误。
最后为了测试安装是否成功,打开usb_cam-test.launch文件:
cd /home/pan/catkin_ws/src/usb_cam/launch
gedit usb_cam-test.launch
修改其中的内容为:
<launch>
<node name="camera" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="camera" />
<param name="io_method" value="mmap"/>
<remap from="/usb_cam/image_raw" to="/camera/image_raw" />
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/camera/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
以上准备工作完成后,即可测试是否安装成功了,分别打开三个终端分别输入以下命令,即可看到结果。
roscore
roslaunch usb_cam usb_cam-test.launch
rosrun ORB_SLAM2 Mono /home/usrname/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/usrname/catkin_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml