本文主要是介绍【SVO2.0】源码编译运行和使用公开数据集EuRoc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前置安装
需要先安装ros,melodic或者neotic,搜索一下教程
安装和编译SVO2.0
按官方公开的github的教程步骤来就行https://github.com/uzh-rpg/rpg_svo_pro_open/tree/master,期间遇到连不上github的问题,搜索设置一下密钥就可以了。两种方法都要编译,不然用不了地图
运行视觉前端visual front-end
同样按照教程https://github.com/uzh-rpg/rpg_svo_pro_open/blob/master/doc/frontend/visual_frontend.md,下载airground_rig_s3_2013-03-18_21-38-48.bag然后
roslaunch svo_ros run_from_bag.launch cam_name:=svo_test_pinhole
rosbag play airground_rig_s3_2013-03-18_21-38-48.bag
使用EuRoc数据集
这是个benchmark数据集,svo有提供运行benchmark的格式,下载EuRoc数据集,我选的是ASL格式https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
按格式放置数据
按https://github.com/uzh-rpg/rpg_svo_pro_open/tree/master/svo_benchmarking/dataset_tools中的教程设置好需要的数据
<dataset_name>
├── calib.yaml --> calibration file
├── data
│ ├── groundtruth_matches.txt
│ ├── groundtruth.txt
│ ├── stamped_groundtruth.txt
│ ├── images.txt
│ ├── img --> folder containing actual images
│ └── imu.txt
└── dataset.yaml --> optional: can be used to specify dataset-specific parameters
其中必须的文件:
- groundtruth.txt:用
python/asl_to_groundtruth_to_pose.py
转换state_groundtruth_estimate0下的data.csv - images.txt:写一个类似asl_to_groundtruth_to_pose.py的程序转换cam0下的data.csv
- imu.txt:写一个类似asl_to_groundtruth_to_pose.py的程序转换imu0下的data.csv,注意时间戳的精度保留,保留到9位小数才能让img和imu的时间戳对上(不然超出精度的会生成随机数字导致对不上)
- calib.yaml:用svo提供的euroc_mono.yaml,和euroc中的sensor.yaml的参数一样,但是svo能读取的格式
- img:图像,但svo的代码中是让图和txt都放在data下,我把cpp文件中的路径改回教程中的格式(放在img)下
改一下experiments/exp_euroc_mono.yaml里dataset的设置,然后就可以开始跑了
roscore
roslaunch svo_ros euroc_global_map_mono.launch
rosrun svo_benchmarking benchmark.py exp_euroc_mono.yaml
这篇关于【SVO2.0】源码编译运行和使用公开数据集EuRoc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!