Direct-stereo-slam开源算法记录
Fast Direct Stereo Visual SLAM
明尼苏达大学,快速准确立体视觉SLAM,不依赖于特征探测与匹配。作者从单目DSO扩展到双目系统,通过3D点最小光度误差优化双目配置尺度。
- 论文地址:https://arxiv.org/pdf/2112.01890.pdf
- 源码地址:https://github.com/IRVLab/direct_stereo_slam
- 相关工作:Direct Sparse Odometry,A Photometrically Calibrated Benchmark For Monocular Visual Odometry,https://github.com/JakobEngel/dso
1.安装DSO
使用作者给的库来安装 https://github.com/JakobEngel/dso
1 | sudo apt install libsuitesparse-dev libeigen3-dev libboost-all-dev libopencv-dev |
安装完成后可以使用DSO来测试数据集,如图
1 | Run on a dataset from https://vision.in.tum.de/mono-dataset using |
还需要配置DSO_PATH,在cmakelists.txt中修改默认DSO路径即可
2.kitti.launch配置
1.首先下载kitti vo数据集,拆分后使用该链接的python文件将image转成rosbag
https://github.com/JotellyBarros/image2rosbag_KITTIodometry
2.使用rosbageditor修改rosbag info
链接 https://github.com/facontidavide/rosbag_editor
3.在kitti.launch中修改bag路径
使用roslaunch direct_stereo_slam kitti.launch 测试kitti数据集
如果出现以下错误,还需要修改对应的camera0和camera1.txt中图像的大小
3.修改源码使输出的真值格式为tum格式
tum格式为:timestamp,tx,ty,tz,qx,qy,qz,qw
在代码的src/loop_closure的LoopHandler.cpp中将dslam_file的输出结构改为
1 | // lf->tfm_w_c是g2o::SE3Quat 使用tovector输出tx,ty,tz,qx,qy,qz,qw |
incoming_id对应真值时间戳的序号
使用python修改下dslam.txt即可
1 | import os,sys |
4.使用evo工具测评
下载:pip install evo –upgrade –no-binary evo
1.显示轨迹
evo_traj tum id2times_result.txt –ref=kitti_00_gt_tum.txt -p –plot_mode=xz -a
2.绝对位姿误差
1 | evo_ape tum id2times_result.txt kitti_00_gt_tum.txt -r full -va -p |
5.使用ORB_SLAM2测试数据集