在上一节,我们完成了ORB-SLAM2的编译与测试,这一节使用完整的数据集进行测试
这里的普通模式直接运行编译之后的可执行文件
首先是单目摄像头
这里我们使用TUM数据集进行离线测试
去到TUM 数据集存放的位置
https://vision.in.tum.de/data/datasets/rgbd-dataset/download
这里采用了第一个数据集 fr1/xyz,然后下载压缩包
下载完成后移动到/home/heying/ORB_SLAM2/Examples/datasets
并解压
然后进行测试
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml Examples/datasets/rgbd_dataset_freiburg1_xyz
可以看到终端显示输入传感器设置为:单目
等待一会后会出现一下的内容
并且这个图中有除终端程序呼出了两个窗口,右侧的窗口一直在显示一张一张的图片,图片中绿色方形和圆圈标注的就是该图像中提取的ORB特征点。左侧的窗口用于显示相机的位姿(也就是关键帧)和地图点(每个地图点和图像中的特征点有对应关系)。
其中绿色的为当前相机的展示,蓝色的是历史相机位姿展示。缩小一下窗口,可以看到相机走过的轨迹
使用KITTI数据集
https://www.cvlibs.net/datasets/kitti/eval_odometry.php
这里使用了Download odometry data set (grayscale, 22 GB)
这个数据集
https://www.cvlibs.net/download.php?file=data_odometry_gray.zip
但是下载要求要使用电子邮箱
当下载完成后,解压进行测试,使用KITTI 数据集,sequence 00
也就是只解压00这个文件夹,因为全部解压的话有点占空间,而且测试阶段不与要其他的,不过你可以解压其他的文件夹进行测试
那么在00文件夹中有两个存放图片的文件夹,对应着双目摄像头中分别的左右两个摄像头的数据集
解压完成后进行测试
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml Examples/datasets/KITTI/00
依然采用之前的 TUM 数据集,这次加入深度信息。
这里需要对 rgb 图和 depth 图做一下匹配,官方提供了脚本程序 associate.py
https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/associate.py
然后使用python运行associate.py,可以看到在指定的路径中生成了associations.txt文件
python associate.py Examples/datasets/rgbd_dataset_freiburg1_xyz/rgb.txt Examples/datasets/rgbd_dataset_freiburg1_xyz/depth.txt > Examples/datasets/rgbd_dataset_freiburg1_xyz/associations.txt
可以看到在指定的路径中生成了associations.txt文件,
然后进行测试
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml Examples/datasets/rgbd_dataset_freiburg1_xyz Examples/datasets/rgbd_dataset_freiburg1_xyz/associations.txt
在终端中可以看到输入传感器设置为:RGB-D
那么接下来就是测试ROS操作系统中的使用,那么就需要从rosbag中发布数据,所以要下载对应的rosbag数据包
这里继续下载刚刚测试的TUM数据集,只不过是以rosbag包的形式
https://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_xyz.bag
其中要用到的 topic 是 /camera/rgb/image_color
,而 rosnode ORB_SLAM2/Mono 接收的 topic 名字为 /camera/image_raw
。
我们可以在 play rosbag 时将 rosbag 中的/camera/rgb/image_color
转换为 /camera/image_raw
。
进行测试
roscore
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
播放bag包
rosbag play --pause Examples/datasets/rgbd_dataset_freiburg1_xyz.bag /camera/rgb/image_color:=/camera/image_raw
和以上的差不多,只需要修改ORB_SLAM2 MonoA
为ORB_SLAM2 MonoAR
roscore
rosrun ORB_SLAM2 MonoAR Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
rosbag play --pause Examples/datasets/rgbd_dataset_freiburg1_xyz.bag /camera/rgb/image_color:=/camera/image_raw
程序会跳出可视化窗口。可以点击左上角的Insert Cube
来添加立方体,可以看到这些个立方体会随着镜头的变化牢牢地定位自己地位姿
自此, ORB_SLAM2的安装与测试完成