ORB-SLAM2路人皆知,下面只记录自己的笔记:
0.安装ORB-SLAM2,并生成库
这篇github不错,可以根据提示先配置好依赖,编译ORB-SLAM2包,并生成目标库文件
https://github.com/Vincentqyw/ORB-SLAM2-CHINESE
1.运行离线数据集
离线数据集分为单目、双目和深度,分别测试了一个数据集查看效果:
a.单目数据集测试
下载TUM Dataset数据集,http://vision.in.tum.de/data/datasets/rgbd-dataset/download
选择下载fr1/xyz,(也可以下载另外两个,但KITTI Dataset数据集过大几十个G,不再进行测试),执行命令
cd ~/ORB-SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
对于freiburg1、freiburg2和freiburg3序列,分别将TUMX.yaml更改为TUM1.yaml、TUM2.yaml或TUM3.yaml。将PATH_TO_SEQUENCE_folder更改为未压缩序列文件夹。
由于测试的是fr1/xyz,所以我的执行命令是:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/chen/ORB-SLAM2/rgbd_dataset_freiburg1_xyz/
测试结果:
b. 双目立体声(Stereo)示例,KITTI Dataset数据集太大(几十个G),所以选用EuRoC Dataset数据集。
(1)下载EuRoC Dataset数据集,下载一个序列 (ASL format格式),http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
我下载了一个最简单的第一个:
Machine Hall 01 | link | link | Dataset machine hall “easy” |
---|
(2)运行
对V1和V2序列执行以下第一个命令,或对MH序列执行第二个命令。并根据要运行的序列更PATH_TO_SEQUENCE_FOLDER and SEQUENCE。
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data PATH_TO_SEQUENCE/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data PATH_TO_SEQUENCE/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
由于我下载的是MH序列,所以使用第二条命令:
chen@chen:~/ORB_SLAM2$ ./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/chen/ORB_SLAM2/data_test/mav0/cam0/data /home/chen/ORB_SLAM2/data_test/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt
(3)运行结果
c. RGB-D示例,数据集测试,TUM Dataset数据集测试
(1)下载数据集,http://vision.in.tum.de/data/datasets/rgbd-dataset/download 与单目使用的相同,选择下载fr1/xyz
使用python脚本Associate.py关联RGB图像和深度图像。我们已经为Examples/RGB-D/associations/中的一些序列提供了关联。您可以生成自己的关联文件执行:
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt
(2)下载RGB-D基准测试的有用工具,一组工具,可用于预处理数据集和评估SLAM/跟踪结果。一个Python脚本association.py,https://vision.in.tum.de/data/datasets/rgbd-dataset/tools
为什么要这么做???
关联颜色和深度图像。Kinect以非同步的方式提供颜色和深度图像。这意味着彩色图像的时间戳集与深度图像的时间戳集不相交。因此,我们需要一些方法将彩色图像与深度图像相关联。为此,可以使用“associate.py”脚本。它从rgb.txt文件和depth.txt文件中读取时间戳,并通过找到最佳匹配来连接它们。
(3)运行
执行以下命令。对于freiburg1、freiburg2和freiburg3序列,分别将TUMX.yaml更改为TUM1.yaml、TUM2.yaml或TUM3.yaml。将PATH_TO_SEQUENCE_folder更改为未压缩序列文件夹。将关联文件更改为相应关联文件的路径。
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
上一步骤中我把下载的associate.py脚本放在~/ORB_SLAM2/Examples/RGB-D/associations/目录下,执行以下命令生成associations.txt,也位于该目录下。
chen@chen:~/ORB_SLAM2/Examples/RGB-D/associations$ python associate.py /home/chen/ORB_SLAM2/rgbd_dataset_freiburg1_xyz/rgb.txt /home/chen/ORB_SLAM2/rgbd_dataset_freiburg1_xyz/depth.txt > associations.txt
接下来执行(也就是第二行命令在~/ORB_SLAM2/目录下执行):
cd /../../../
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/chen/ORB_SLAM2/rgbd_dataset_freiburg1_xyz/ /home/chen/ORB_SLAM2/Examples/RGB-D/associations/associations.txt
(4)运行结果
2. ROS示例
a. 为mono、monoAR、stereore和RGB-D构建节点
(1) 将包含Examples/ROS/ORB_SLAM2的path添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加以下行。用克隆ORB SLAM2的文件夹替换PATH:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
。。。待续,报错
3.实时测试
(1)笔记本ubuntu16.04+单目测试
a.插入摄像头检查驱动
$: ls -la /dev/vid*
crw-rw----+ 1 root video 81, 0 11月 11 11:23 /dev/video0
crw-rw----+ 1 root video 81, 1 11月 12 09:30 /dev/video1
一般video0是笔记本自带,video1是usb外接摄像头。
。。。。未完,待续
打算明天再开始研究读取摄像头实时数据,下篇博客见。