0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GSLAM:一套通用的SLAM框架与基准

nlfO_thejiangme 来源:lp 2019-03-07 09:42 次阅读

同步定位和地图构建(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/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48129

    浏览量

    740182
  • SLAM
    +关注

    关注

    22

    文章

    390

    浏览量

    31592
  • 数据集
    +关注

    关注

    4

    文章

    1179

    浏览量

    24356

原文标题:GSLAM:一套通用的SLAM框架与基准

文章出处:【微信号:thejiangmen,微信公众号:将门创投】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于多模态语义SLAM框架

    本文提出了一个鲁棒且快速的多模态语义 SLAM 框架,旨在解决复杂和动态环境中的 SLAM 问题。具体来说,将仅几何聚类和视觉语义信息相结合,以减少由于小尺度对象、遮挡和运动模糊导致的分割误差的影响。
    的头像 发表于 08-31 09:39 1353次阅读

    单位已有的一套软件?

    单位安装了一套检测软件,可是给安装的那家公司没留 任何原安装程序。现在要对程序进行些改动,该怎么办?
    发表于 07-17 22:06

    开源一套电子怀表

    具体信息可看下这个链接开源一套电子怀表https://bbs.elecfans.com/forum.php?mod=viewthread&tid=269417&fromuid=89414
    发表于 08-21 21:52

    arm实例来一套

    本帖最后由 eehome 于 2013-1-5 10:11 编辑 求助啊arm 实例来一套
    发表于 12-13 20:21

    一套DAQ设备大概需要多少钱

    我现在项目大概有一万,想买一套DAQ硬件设备,大概需要多少
    发表于 10-22 22:01

    一套智能车设计

    一套智能车设计,本人想要做智能车方面的,借鉴下。
    发表于 11-10 00:37

    一套常用的AD封装库

    一套常用的AD封装库
    发表于 01-24 15:22

    一套完整的PCB布线设计

    来源:互联网PCB 布线设计中,对于布通率的的提高有一套完整的方法,在此,我们为大家提供提高 PCB 设计布通率以及设计效率的有效技巧,不仅能为客户节省项目开发周期,还能最大限度的保证设计成品的质量。
    发表于 10-22 08:00

    如何制作一套波形发生系统?

    本设计中涉及到单片机汇编语言、VHDL语言的运用,充分地利用了二者的优点,制作了一套波形发生系统。
    发表于 04-21 06:09

    分享一套通用的开发环境搭建教程

    针对嵌入式的开发,不同的开发者使用不同的操作系统,可能是Windows 或者 Linux,随之而来所搭建的开发环境亦不同。所以在这里希望分享一套通用的开发环境搭建教程,主要是围绕VS Code以及
    发表于 11-05 06:23

    HOOFR-SLAM的系统框架及其特征提取

    Intelligent Vehicles Applications1. 介绍2. HOOFR-SLAM2.1 系统框架2.2 HOOFR特征提取2.3 映射线程2.3.1 特征匹配1. 介绍提出种HOOFR-...
    发表于 12-21 06:35

    oneOS框架基础及应用

    ,不同芯片其硬件配置不同,代码般难做到统一通用。早期功能简单,硬件方案更新周期长,因此一套SDK可以使用几年,软件框架很少变化。近期因物料短缺频繁更换芯片,对软件开发也提出了更高要求
    发表于 02-17 07:53

    怎样使用springboot整合netty来开发一套高性能的通信系统呢

    怎样使用springboot整合netty来开发一套高性能的通信系统呢?为什么要用这两个框架来实现通信服务呢?如何去实现呢?
    发表于 02-22 06:09

    在rockchip平台怎样去实现一套兼容多款wifi模块的自适应框架

    在rockchip平台怎样去实现一套兼容多款wifi模块的自适应框架呢?rk3399的wifi模组自适应支持多款wifi是什么技术原理?
    发表于 03-07 08:21

    探讨下HDMI显示的两流程框架及其配置

    Platform: RK3399OS: Android 7.1 industryKernel: v4.4.83HDMI显示有两流程框架一套是基于DRM显示标准的HDMI框架;另外
    发表于 04-25 16:58