ORB-SLAM编译记录

系统:Ubuntu16.04+ROS-Kinetic

ROS-Kinetic的安装请参考http://www.cnblogs.com/liu-fa/p/5779206.html

新建一个ros工作空间(如果有就不用了),参考http://www.cnblogs.com/huangjianxin/p/6347416.html

在你的工作空间下,我的是~/catkin_ws/src,下载ORB-SLAM到本地,git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM,然后根据作者给的readme.md编译,这里主要说一下可能会碰到的问题吧

首先安装依赖项:Boost/g2o/DBoW2,后两个都在自带的Thirdparty里,我这里都没碰到什么问题

接着是编译ORB_SLAM,这里需要注意一点,在Indigo之后的ROS版本中都不带opencv了,所以我们需要在manifest.xml中注释掉opencv2,这在readme.md中作者提到了,但是好像很多人都没有注意,注释的方式是<!--depend package="opencv2"/-->

出现报错error: ‘YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY’ is not a member of ‘Eigen::internal::static_assertion<false>’,这里我参考http://blog.csdn.net/qq_33179208/article/details/53032687的建议安装了另一版本的Eigen3,再次编译就没问题了,使用命令rospack list检查ORB_SLAM是否已安装

最后就可以愉快地跑ros了,开启roscore,然后运行roslaunch ExampleGroovyHydro.launch就开启了ORB_SLAM,可以跑数据集*.bag,也可以用自己的相机跑,如果是用自己的相机跑,需要写如下launch文件,我用的是笔记本相机,还需要安装相机驱动,sudo apt-get install ros-kinetic-usb-cam

 <launch>
  <node name="usb_cam" 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 pkg="image_view" type="image_view" name="image_view">
    <remap from="/image" to="/ORB_SLAM/Frame" />
    <param name="autosize" value="true"/>
    </node>

    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find ORB_SLAM)/Data/rviz.rviz" output="log">
   </node>

    <node pkg="ORB_SLAM" type="ORB_SLAM" name="ORB_SLAM"  args="Data/ORBvoc.txt Data/Settings.yaml" cwd="node" output="screen">
   </node>

</launch>

posted on 2017-09-17 21:00  萝卜丶爱  阅读(272)  评论(0编辑  收藏  举报

导航