网上DSO基本上都是在TUM数据集上跑得,教程也比较多,写论文需要,使用DSO跑了一下Euroc数据集,踩了很多坑,花了一天的时间才调通,记录一下。
本机运行环境:Ubuntu16.04 其它环境只要安装过ORB-SALM2的应该不用做额外的配置
1.安装DSO,教程很多,不做赘述,不过ziplib这个包需要注意,如果图片数据集是以zip格式存储方式进行读取的话需要安装这个包,当然直接建一个文件夹放图片也行。
2.按照教程运行DSO,运行Euroc数据集的命令为
./dso_dataset files=/home/SLAM/DSO/dso-master/EuRoc/V203/mav0/cam0/data calib=./camera.txt mode=1
注意这里files后的路径是存放Euroc数据集的路径,另外有一个重要的问题在于需要在“data”文件夹下放置“times.txt”,此文件每行包含文件名、时间戳、曝光时间(Euroc没有),这个times.txt可以用Euroc/mav0/cam0下的data.csv来生成,写一个python四行就可以搞定了。最后times.txt的格式应该像这样,每行第一个是图片的名字,但是“.png”被去掉了,时间戳注意小数点格式转换否则最后无法用evo拿来与真值评估:
(python代码)
finename = "data.csv"
filename2="times.txt"
f = open(finename,'r')
f2=open(filename2,'a')
#line = f.readline()
for line in f:
#print(line)
line=line.replace(","," ")
line=line.replace(".png"," ")
print(line)
f2.write(line)
f2.close()
f.close()
得到之后便可运行,成功读取times.txt的话在执行界面时会显示如下格式:
成功运行如下:
3.运行后会在./build/bin下生成result.txt,如果第二步没有成功读取times.txt的话时间戳会全是0。
典型的TUM格式,但是生成的多了空格,需要处理一下才能用evo工具评估:
cat result.txt | tr -s [:space:] > DSO.txt
4.DSO格式就是最终的轨迹文件,直接用evo工具与Euroc的真值作对比即可,网上教程颇多,不做赘述。