安装DSO
此步非常简单,安装也很快,不详述,【参考博客】或【GitHub源网页】
写在前面
数据集中的camera.txt文件是可以更改的,且需要改成对应的相机参数
图片的大小可以不用更改为一般的1280x1024,就保持KITTI数据集的图片尺寸就行
图片的扩展名不用更改
times.txt文件也可以不自己做(取巧的办法,甚至可以不需要)
可以不用压缩包直接解压选择图片文件夹就行
需要注意的问题
首先可以下载一个最小的dso用的数据集对比里面的文件,其中times.txt文件留下KITTI对应的帧数就行,
camera.txt文件需要根据KITTI不同序列的相机内参进行修改,可以参考ORB-SLAM2中的KITTIxx.yaml文件。参考博客/测试选择crop,即可以写成以下形式:
707.0912 707.0912 601.8873 183.1104 0.0
1226 376
crop
1216 368
参考LDSO(有回环的DSO)内支持KITTI数据集
最终执行:
./build/bin/dso_dataset files=/home/zjb/dso/sequence_07/image calib=/home/zjb/dso/sequence_07/camera.txt preset=0 mode=2
1
其中sequence_07就是KITTI_07序列中的image_0的图片(其实是哪个图片根本不影响)
mode=2是指使用自己合成的数据集,preset=0并不强制实时性。speed=x可以调整速度,这里没有使用。具体其他参数查看【GitHub源网页】,所以说自己的数据集文件里需要两个东西就行了,一个是camera.txt文件,另一个是image图片文件夹。
目前跑的效果还行,现在需要保存其轨迹。
保存轨迹文件
其关键帧位姿文件是result.txt,我们可以看下他是怎么得到的
首先,在dso/src/IOWrapper/OutputWrapper目录下有一个SampleOutputWrapper.h文件,这是一个采集工程运行中各种数据的,我们值保留下来publishCamPose()这个函数,其他的函数全删掉
不管是主函数还是上一个头文件函数中,都引用了Output3DWrapper.h文件(在src/IOWrapper文件夹下),他里面详细讲了每个回调函数的描述
工程的主文件在dso/src/FullSystem下的FullSystem.cpp,其中就有一个函数FullSystem::printResult(std::string file),file就是文件名,用来保存打印出来的信息,其实保存的就是TUM数据集的轨迹格式,每行8个数据(time, t x , t y , t z , q x , q y , q z , q w )
myfile << s->timestamp <<
" " << s->camToWorld.translation().transpose()<<
" " << s->camToWorld.so3().unit_quaternion().x()<<
" " << s->camToWorld.so3().unit_quaternion().y()<<
" " << s->camToWorld.so3().unit_quaternion().z()<<
" " << s->camToWorld.so3().unit_quaternion().w() << "\n";
src/下的main_dso_pangolin.cpp文件中调用了上一个函数,就是将位姿保存在result.txt文件中。
fullSystem->printResult("result.txt");
但是当使用evo进行评估时,出现:
[ERROR] TUM trajectory files must have 8 entries per row and no trailing delimiter at the end of the rows (space)
这个错误的主要原因我猜测是result.txt文件内写的太乱,有的数据之间空了好几个空格,所以使用以下命令给他规整好:
cat result.txt | tr -s [:space:] > ./out.txt
也就是删除多余空格,各个数据之间就保留一个空格就行,参考将内容保存在out.txt文件中
然后就可以执行以下命令保存成kitti格式:
evo_traj tum out.txt --save_as_kitti
DSO跑出来的关键帧和ORB-SLAM抛出的关键帧数目不一样,虽然轨迹可以对比,但是精度盖怎么对比?
未完待续。。。。
————————————————。
原文链接:https://blog.csdn.net/weixin_43166819/article/details/103133570