摘要

Snake-SLAM 是一种可在低功率航空设备上稳定运行的VI SLAM 自主导航系统。跟踪前端具有地图复用、闭环、重定位功能,并支持单目、立体和 RGBD 输入。该系统通过图论算法来减少关键帧并提出一种“延时地图”的方法来确保生成准确的全局地图,优化后端将 IMU 状态估计与从视觉光束法平差中进行解耦,将有约束的优化问题拆分为两个子问题,大大降低的计算复杂度,并使得Snake-SLAM 相比于现有的SLAM系统可以使用更大滑窗。我们的系统实现了一种先进的多模式VI 初始化方案,该方案使用陀螺仪数据检测视觉异常值并恢复速度、重力和尺度。我们在 EuRoC 数据集上评估 Snake-SLAM ,结果表明它在效率方面优于所有其他方法,并且实现最先进的跟踪精度。

主要工作

1.解耦优化

为了减少非线性优化的复杂度。将状态估计分为两个子问题,首先将IMU估计出来的的速度、偏差、重力方向、尺度用来构建连续帧i和i+1的误差方程,如下:

然后使用IMU估计的参数去计算i到i+1帧的变换关系,并将这个变换关系添加到视觉BA中,如下:

  1. 鲁棒性初始化

一个好的初始化对于camera tracking 和准确的尺度恢复起到至关重要的作用,目前一些方案通过将imu静止15妙来进行初始化,但是这种操作是没有必要的,重力偏差可以通过一些关键帧计算得到,无非是尺度和重力方向初始化花费一些时间而已。在 Snake-SLAM 中,跟踪以仅视觉模式开始,当一旦有8个关键帧已插入到地图,陀螺仪偏置初始化启动。为了计算全局偏差,本系统构建旋转最小化误差,如下:

  1. 地图简化

为了减少冗余计算,将关键帧作为图的节点,图的边为关键帧之间的匹配内点个数;这样就构建了历史关键帧和候选关键帧的图,一旦有新的关键帧插入,取图的最大生成树的最小边作为地图的质量,如果质量大于一定的阈值,丢弃该关键帧,如下图:

4.延时地图(deferred mapper)

利用了colmap post-triangulation 的思想,local ba 结束后再次三角化,增加地图愁密度,提高稳定性,同时避免gba 漂移。在Snake-SLAM local mapper中,延时10帧,即是当ki插入的时候,ki-10被处理

高效率和低功耗的特点使得Snake-SLAM 可以在各种移动设备,例如无人机、机器人、手机或头戴式AR设备上运行

代码运行效果

源代码地址:https://github.com/darglein/Snake-SLAM

作者上传的代码存在很多bug(不知道他是不是故意的),且Snake-SLAM 的环境及其及其难配置。自己折腾了很久才将环境和代码的bug解决掉(目前可视化还没解决,只能看到最终结果),但是不可否认的是,作者的代码和colmap有异曲同工之处,都具备很好的阅读性,是一款非常推荐的VIO-SLAM系统。同时Snake-SLAM的后端优化和可视化平台与是其作者自己开发的saiga平台(一款轻量级的渲染框架),代码地址:https://github.com/darglein/saiga ,saiga可视化平台可视化效果如下:

本来是打算在运行Snake-SLAM的时候,看看saiga可视化slam 地图和轨迹的效果有多惊艳,遗憾的是这个bug自己还没解决(如果哪位想和我一起研究可以联系我,我可以将现在已经debug完后的代码共享于你)。

Snake-SLAM 运行效果如下:

机器配置:i5-9300H CPU ,24G

数据集:euroc / MH_05_difficult

图像分辨率:752*480

利用evo 评估轨迹如下:

一种解耦非线性优化的高效VI-SLAM系统-Snake-SLAM相关推荐

  1. 一种视觉惯性+激光传感器的SLAM系统

    一种视觉惯性+激光传感器的SLAM系统 这篇博客 论文摘要 一些假设和标注 系统总览 VI 里程计 扫描匹配(scan matching)优化 提高系统鲁棒性的措施 闭环检测和临近检测 全局位姿图优化 ...

  2. 【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统

    文章:Inertial-Only Optimization for Visual-Inertial Initialization 作者:Carlos Campos, Jose M.M. Montiel ...

  3. 论文简述 | CamVox: 一种低成本、高精度的激光雷达辅助视觉SLAM系统

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 摘要 将激光雷达与基于相机的同步定位和建图(SLAM)相结合是提高整体精度的有效方法,尤其是在大规模室 ...

  4. VDO-SLAM :一种动态目标感知的视觉SLAM系统

    VDO-SLAM :一种动态目标感知的视觉SLAM系统 (VDO-SLAM :A Visual Dynamic Object-aware SLAM System) 论文地址:https://arxiv ...

  5. 翻译 | ORB-SLAM: a Versatile and Accurate Monocular SLAM System(ORB-SLAM:一种通用的(全能的)精确的单目SLAM系统)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ORB-SLAM:一种通用的(全能 ...

  6. CamVox:一种低成本、高精度的激光雷达辅助视觉SLAM系统

    标题:VCamVox: A Low-cost and Accurate Lidar-assisted Visual SLAM System 作者:Yuewen Zhu, Chunran Zheng, ...

  7. 网格自适应_网格自适应的 2 种方法——实现更高效的计算

    网格自适应的目标是修正网格以更有效地解决问题. 通常,我们希望使用尽可能少的单元来获得精确的解:并希望在不太重要的区域使用较粗糙的网格,而在感兴趣的区域使用较精细的网格.有时,我们甚至可能会考虑各向异 ...

  8. 视觉SLAM总结——视觉SLAM十四讲笔记整理

    视觉SLAM总结--视觉SLAM十四讲笔记整理 说明 基础知识点 1. 特征提取.特征匹配 (1)Harris (2)SIFT (3)SUFT (4)ORB (5)特征匹配 2. 2D-2D:对极约束 ...

  9. 3D Vision、SLAM求职宝典 | SLAM知识篇(D1,重点 )

    今日得空,开始愉快的解答!各位看官请指教. 第一部分,先来完成该专题最重要的内容,即笔试面试中所考察的SLAM专业知识. SLAM知识篇所准备的这些问题不一定全面,但是问题都是基于三位求职者的总结回忆 ...

  10. 经典激光雷达SLAM系统:LOAM-Livox

    作者 | 密斯特李  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/515732721 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨 ...

最新文章

  1. 在GitHub上管理项目
  2. Spring Boot开始
  3. of type std::bad_cast: std::bad_cast
  4. stm32之TIM-高级定时器应用实例二(测量频率和占空比)
  5. C语言中static用法大全
  6. figma设计_Figma与Adobe XD:我们如何选择下一个设计工具
  7. python代码控制机械臂_选用什么样的系统或平台开发机器人/机器臂?
  8. 使用JAVA爬取网页图片
  9. linux 安装启动ssh服务
  10. Qt调用jrtplib实现单播、多播和广播
  11. 关于php的梗儿_抖音上的梗,你知道哪些?
  12. PS笔刷素材套装:81种自定义树叶水彩/水粉画
  13. 什么是磁盘列阵技术?
  14. 论文写作 之 Related work
  15. 视频教程-Scratch趣味编程课堂-L1-其他
  16. 智能感知与学习(六):识别系统
  17. uint与int区别
  18. 厂工数据结构Anyview(C语言版)第二章答案
  19. Go : 与切片类型处理相关的代码(附完整源码)
  20. 给我讲解一下傅里叶变换与衍射的关系

热门文章

  1. 合同能源管理服务认证要求有哪些?
  2. 巨人网络总裁史玉柱简介
  3. MySQL——行格式介绍
  4. 一种改进的条形码定位方案,基于openCV实现,附完整源代码
  5. md5 结合 crypt =无敌密码
  6. python神秘的魔法函数_Python神秘的魔法函数
  7. win10树莓派改ip_如何为你的树莓派安装一个WIN10系统?(非iot)
  8. css 根据屏幕宽度控制样式
  9. 编程判断俩个链表是否相交
  10. Python不重复批量随机抽样 random.sample() 和 numpy.random.choice() 的优缺点