介绍:
- 有时候我们想快速验证一些和视觉slam相关的性能,比如:
- 场景的特征点是否足够
- 场景的稳定性是否足够
- 相机的分辨率,曝光时间以及其他参数是否能用,或者怎样的相机效果更好
- 相机的标定参数是否足够准确
- 最终的系统可能会集成其他的东西,比如IMU,GPS,Lidar,但是想把视觉独立出来,只看视觉部分是否有问题。
- 可以用ORB-SLAM来验证这些东西,ORB-SLAM只依赖于视觉。本程序将ORB-SLAM的系统状态序列化(地图),然后可以用其他时间采集的图像来和之前生成的地图匹配。
方法:
- 对于单次采集,如果ORB-SLAM能够很好运行,并成功回环检测,说明场景的特征点是足够的,相机是可用的,相机的参数是正确的。
- 可以通过ORB-SLAM作为里程计来比较不同相机的好坏。
- 把一份图像SLAM的结果存成文件,然后用其他时间,其他光照情况的数据来定位,如果能成功,说明场景足够稳定。
程序:
- https://github.com/rabienrose/orb_mapping_loc/tree/offline
- 编译方法见:https://github.com/raulmur/ORB_SLAM2
- 本程序把orb-slam改为单线程了,所以不用考虑线程任务的平衡对结果的影响
运行方法:
- 参数说明:
- 词袋文件的地址
- 配置文件的地址
- 图像的地址
- 图像的序号的规则img_xx.jpg
- xx是图片的序号,左侧不用用0对齐
- 输出或者输入的地图的文件名
- 起始帧号
- 一共处理多少帧
- 是否存储地图,建图的时候需要设置为true
- 是否使用历史存储的地图,定位的时候需要设置为true
- 建图:./mono_kitti path_to_vocabulary path_to_settings path_to_sequence map_addr 0 10000 true false
- 定位:./mono_kitti path_to_vocabulary path_to_settings path_to_sequence map_addr 0 10000 false true
配置参数:
- Camera.fx:这几个相机的内参就不多说了
- ORBextractor.nFeatures::有时候初始化不成功可以尝试把这个设置高一些