前言
本文是最近安装和使用orb-slam2的一些笔记,走了一些弯路,因此记录一下。环境:vmware+ubuntu16.04且已安装了ROS kinect。
安装注意事项
安装方法具体参见github, 本文主要记录一些官方没有的注意事项:
- 尽管Kinect自带有opencv3.3.0,但为了跑ros-slam2还需要在ROS空间外额外安装一个opencv(不安装无法读取摄像头设置文件),且最好选择opencv3.2。
- ORB-SLAM2源码中就有Eigen3和DBoW2和g2o了,不需要再单独安装。
- ORB-SLAM2是不完全依赖ROS的,它有两个编译选项,对应两个脚本文件build.sh和build_ros.sh。编译前者你只能跑一些数据集,后者使用ROS能用自己的摄像头,但是就算你只想用ROS版本,你也不能只运行build_ros.sh脚本(会编译失败),而需要在运行build.sh后再运行build_ros_sh脚本。
- 使用脚本build_ros.sh编译时也会出现错误,参见网址,需要注意的是该方法不完全,要记得还要把libboost_system.so.1.58.0和libboost_filesystem.so.1.58.0也复制到对应文件夹才行。
运行注意事项
-
使用TUM数据集时需要注意,官方所带的摄像头参数文件 TUM1.yaml 是针对所有 freiburg1 的测试数据的。同理 TUM2.yaml 是针对 freiburg2 测试数据。因此我们最好下载freiburg1_desk 数据集,将这个数据集放在 ORB_SLAM2 下的 Data 文件夹下面并解压缩。
运行如下指令就能跑数据集:./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml Data/rgbd_dataset_freiburg1_desk
-
ROS版本编译完还需要更新一下工作空间
source Examples/ROS/ORB_SLAM2/build/devel/setup.bash
-
使用ROS跑自己的单目摄像头时,要先自己写一个节点,发布摄像头数据,主题为
camera/image_raw
可以参考wiki, 我的节点名是usb_cam_node,因此可以用以下代码来运行。rosrun usb_cam usb_cam_node rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml