公众号/将门创投
来源:https://arxiv.org/pdf/1902.07995.pdf
编译:SimonsRoad
同步定位和地图构建(SLAM)是移动机器人环境感知和导航过程中的重要任务,一直是计算机视觉和机器人学领域中的研究热点。随着移动机器人技术和视觉技术的发展和应用,近年来涌现出了一大批优秀的研究,各式各样的SLAM系统先后被提出,主要包括单目、多目、多传感器融合等基于不同传感器类型的SLAM系统(深度相机、激光、立体视觉和融合惯性导航等方法),还包括基于不同原理的关键点法、(半)直接法、稀疏法稠密法等SLAM系统(可分为基于关键点法、直接法和半直接法)以及基于学习的SLAM系统。
SLAM可以为移动机器人导航、室内定位和室内地图的构建提供强大的技术支撑,比如机器人、无人机(UAV),自动驾驶汽车以及虚拟和增强现实。
虽然SLAM领域发展迅速,缺乏统一的结构框架来整合SLAM的各个子系统,大多数研究人员专注于他们自己的SLAM系统的理论和实现,使得这一领域的代码复用和工程实践进展较慢,很多研究人员依然受到了重复造轮子的困扰,这阻碍了SLAM技术迭代发展和工业化的实际应用。 此外,对算法的基准评估和鲁棒性分析也是研究过程中的重要内容,亟待研究人员们达成共识携手前行。
为了整合这一领域的最新研究、构建SLAM领域的通用化框架系统,本文的作者们提出了一个名为GSLAM的新型SLAM平台,它不仅能提供算法评估功能,而且还能为研究人员提供许多有用的算法快速开发工具包。其核心贡献在于提供了一个通用、跨平台和完全开源(可用于研究和商业用途)的SLAM交互程序,旨在将数据集输入、SLAM配置、可视化和应用的交互在统一框架中实现。 同时,这一框架还友好地支持了ROS风格使用机制,使得广泛的机器人研究人员可以很容易的上手进行操作。
GSLAM核心工作是提供了通用的SLAM界面和框架。为了在使用不同数据集、SLAM算法和应用的时候获得更好的体验,界面设计轻量级,用到的头文件仅依赖于C ++ 11标准库。通过这个平台,用户可以通过插件的形式直接调用一些常用函数,也可以创建自己定义的函数。此外,作者还提供了JavaScript和Python接口,来使用基于Web和基于深度学习的SLAM应用程序 。软件和界面主要处理三部分信息的交互:
a. 数据输入,包含一些传感器数据及其使用参数;
b. SLAM算法实现,基于事先定义好的通用类,研发人员可以快速调用,并修改定义自己的核心算法;
c. 可视化和结果应用,默认使用Qt可视化,用户也可以配置其它框架,以标准格式输出算法结果。
图1 GSLAM的框架图
其中,数据插件集成主流的VO、SLAM数据集,包括KITTI,TUM,EuRoC,NPUDrone,CVMono等数据集,同时你也可以构建自己的数据集插件,将自己的数据集集成到这一框架中去。
其中,SLAM算法插件提供了SLAM领域流行的优秀算法,包括DSO,ORBSLAM,SVO和TheiaSFM等,这些插件可以直接集成到自己的代码中,研究人员也可以基于这些插件进行进一步研究或者贡献自己的插件。此外Rviz也被集成到了这一框架中进行可视化交互,让用户可以复用ros中的技能和知识。
由于平移、旋转和相似性变换算法是SLAM中最为常用的基础变换,这一框架也对这些变换进行了高效的实现,表1中的对比结果证明了,对于常用的SO(3)、SE(3)和SIM(3)变换方法,基于GSLAM平台的运行时间要比流行的Sophus, TooN 和Ceres更高效。
表1 GSLAM与三大流行的库的运行时间对比
作者在GSLAM平台中实现了三个优化模块作为通用类,以方便研究人员调用实现自己的SLAM算法,包括估计器Estimator、优化器Optimizer和字典Vocabulary。
估计器Estimator,旨在提供一系列的解析求解器,覆盖通过抽样一致性算法RANSAC得到的各类情况(如表2所示,包含了2D-2D、2D-3D、3D-3D多种情况),大部分的算法基于开源线性代数库Eigen。
优化器Optimizer,旨在提供流行的SLAM非线性优化问题的统一接口,比如PnP、bundle adjustment和pose graph optimization,一般使用Ceres库就能解决,当然一些高效前沿的算法也提供到了,比如PBA和ICE-BA。
字典Vocabulary,旨在提供用于重定位的高效轻便多线程和SIMD优化的词袋模型,下表展示了GSLAM与其他BoW方法在载入、保存和训练上的效率对比。这一框架中实现的各类特征字典模型性能整体优于现有词袋模型的表现。
为了中和测定这一框架在SLAM领域的性能,研究人员针对四个方面在框架内对算法进行了性能评测,下图中展示了DSO、SVO和ORBSLAM算法运行时每一帧的内存使用、分配内存数量、CPU使用和耗时等详细信息。结果证明SVO占用了最少的内存和CPU资源,耗时最短且很稳定,这主要因为它只是一个视觉里程计,只需要维持一个很小的局部地图,无需进行全局的强计算操作。
DSO、SVO和ORBSLAM计算性能对比图
此外还测试了三种算法的运行轨迹与Groundtruth的对齐结果,SVO尽管运行速度快但是漂移较严重,ORBSLAM在绝对位姿误差APE指标上准确率最好。其他指标的结果可以在作者论文的supplementary材料中查阅,或在GSLAM中自行尝试。
图 DSO、SVO和ORBSLAM运行轨迹对比图
这个高度集成的SLAM框架已经在Github上开源,并且配合了详细的文档供大家配合使用。统一的框架有利于研究人员更加专注自己的核心研究,将最先进的算法集成模块,并便于全世界的开发者一同贡献自己的力量,促进SLAM技术的快速发展。
正所谓:
众人拾柴火焰高,前端后端共繁荣。
定位导航大发展,优化回环样样强!
更多代码请戳:https://github.com/zdzhaoyong/GSLAM
另外两位主要研究人员的主页如下,他们在三维视觉重建、机器人等方面有着深入的研究,值得学习:
https://github.com/bushuhui
https://shibiaoxu.github.io/