2D激光雷达和视觉相结合的同步定位与建图概述

文章目录

  • 2D激光雷达和视觉相结合的同步定位与建图概述
    • 1. 2D激光SLAM
    • 2. 视觉SLAM
    • 3. 多传感器融合
    • 4. 总结
    • 5. 参考文献

1. 2D激光SLAM

由于激光雷达精度高、范围广,早期的 SLAM 研究往往以激光 雷达为主要的传感器。另外,早期的 SLAM采用扩展卡尔曼滤波方法估计机器人的位姿,但效果不好,对于某些强非线性系统,该方法会带来更多的截断误差,从而导致无法精准地实现定位与建图。而后基于粒子滤波的 SLAM 逐渐成 为主流,粒子采样方法可有效避免非线性问题, 但同样引出了随着粒子数增多,计算量增大的问题。
        2007年,Grisetti 等提出了基于改进粒子滤波的 SLAM 方法(Gmapping),该方法通过改进的建议分布及自适应重采样技术有效地 提高了定位精度并降低了计算量,是激光 SLAM 的一个里程碑。

Konolige 等在 2010 年提出了 Karto SLAM,该方法采用图优化代替粒子滤波, 并采用稀疏点调整来解决非线性优化中矩阵直接 求解难的问题。Kohlbrecher 等在 2011年提出了 Hector SLAM,该方法不需要里程计信息,通过利用高斯牛顿方法来解决扫描匹配问题,但对传感器要求较高,需要高精度的激光雷达才能运行。

谷歌于 2016 年提出的 Cartographer。该方法将获得的每 一帧激光数据,利用扫描匹配在最佳估计位置处插入子图(Submap)中,且扫描匹配只与当前 图有关。在生成一个子图后,会进行一次局部的 回环(Loop Close),而在所有子图完成后,利用 分支定位和预先计算的网格进行全局的回环。相比于 Gmapping 和 Hector,该方案具有累积误差较低,且不需要高成本设备的优点。

2. 视觉SLAM

视觉 SLAM 由于传感器成本低、图像信息 丰富逐渐成为了 SLAM 的研究热点。
        Davison 等在 2007 年首次提出的 MonoSLAM 被认为是众多视觉 SLAM 的“发源地”。该方法以扩展卡尔曼滤波为后端,追踪前端稀疏的特征点;利用概率密度函数来表示不确定性,从观测模型和递归的计算,最终获得后验概率分布的均值和方差。
         Sim 等利用粒子滤波实现了视觉 SLAM, 该方法避开了线性化的问题并且精度高,但需要使用大量的粒子,从而导致计算复杂度的提高。
         为了减少计算复杂度,提取关键帧变得极为重要,其中最具代表性的是 2007 年 Klein 和 Murray 提出的 PTAM。该方法提出了简单有效地提取关键帧的技术,并且该方法最为关键的 两点是:(1)实现了跟踪与建图的并行化,虽然跟踪部分需要实时响应图像数据,但后端优化却不需要实时计算。即后端优化可在后台慢慢运行,在需要的时候将两个线程同步即可。这也是 首次提出了区分前后端的概念,引领了之后众多SLAM方法的架构设计。(2)第一次使用非线性优化,而不是传统的滤波器。从 PTAM 提出后, 视觉 SLAM 研究逐渐转向了以非线性优化为主导的后端。
        2016 年 Mur-Artal 和 Tardos提出的ORB-SLAM2不仅支持单目、双目、深度摄像头三 种模式,并且将定位、地图创建、闭环分为三个 线程,且都使用 ORB 特征,采用了词袋模型,有效地防止了累积误差,并且能在丢失之后迅速找 回。但 ORB-SLAM2 的缺点也十分明显,图像特征提取与匹配以及后端的优化都需要计算资源, 在嵌入式平台上实现实时运行存在一定的困难, 并且构建的稀疏特征点地图虽然可以很好地满足定位,但无法提供导航、避障等功能。

相比于提取图像中的特征点,根据图像像素灰度信息来计 算相机运动的直接法从另一个方向实现了定位和建图。
        Engel 等提出了 LSD-SLAM 算法,其核心是将直接法应用到半稠密的单目 SLAM 中。
        Forster 等于 2014 年提出了半直接法单目视觉里程计(Semi-direct Monocular Visual Odometry,SVO),一种被称为“稀疏直接法”的方法,该方法将特征点与直接法混合使 用,跟踪了一些关键点(如角点等),然后按照直 接法根据关键点周围的信息估计相机运动及位 置。相比于其他方案,SVO 既不用消耗大量资 源去计算描述子,也不必处理过多的像素信息, 因此该方法可广泛用于无人机、手持增强现实 (Augmented Reality,AR)等设备。

Newcombe 等提出了 Kinect 融合的方法KinectFusion,该方法通过 Kinect 获取的深度图像对每帧图像中的每个像素进行最小化距离测量而获得相机位姿,且融合所有深度图像,从而获得全局地图信息。
        Gokhool 等使用图像像素点的光度信息和几何信息来构造误差函数,通过最小化误差函数而获得相机位姿, 且地图问题被处理为位姿图表示。
        Kerl 等提出了较好的直接RGB-D SLAM方法,该方法结合像素点的强度误差与深度误差作为误差函数,通过最小化代价函数,从而求出最优相机位姿,该过程由 g2o 实现,并提出了基于熵的关键帧提取及闭环检测方法,从而大大降低了路径的误差。

3. 多传感器融合

在多传感器融合方面,目前有视觉传感器、 激光雷达、惯性测量单元(Inertial Measurement Unit,IMU)及超声波传感器等多种传感器。目前,主要融合方向为激光雷达结合视觉传感器及 IMU结合视觉传感器。
         Houben 等[1]采用三维激光数 据用于微型无人机定位,针对结构相似的环境激 光定位会出现模糊的问题,提出在环境中加入视 觉标记,提高定位精度,同时可用于微型无人机 的重定位。
         王消为等[2]提出了一种双目视觉信息和激光雷达数据融合的 SLAM方法,该方法基于改进的粒子滤波算法实现了在计算建议分布 时观测数据,其中同时包含视觉信息和激光雷达数据。相对于里程计运动模型作为建议分布,该方法有效地提高了定位和建图的精度。
        张杰和周军[3]提出了一种激光雷达与视觉结合的 SLAM 方法,其中激光地图用于导航,视觉地图用于复原目标场景;并提出一种改进的迭代最近点法 (Iterative Closest Point,ICP)用于实现更快的点云拼接,同时采用图优化的方法降低了累积误 差,保证地图精度。

Shi 等[4]在小型无人机上, 利用视觉里程计为二维激光的 ICP 提供初值,在 实时性和精确度方面都达到了较好的效果。

4. 总结

相对而言,激光 SLAM 的效果仍然要优于视觉 SLAM,但激光 SLAM 由于其本身激光数据的 特性导致其无法有效地进行大范围的闭环检测。 对于低价格的激光雷达,由于激光点不够密集, 构建的地图常常会出现回到原来的位置地图,由 此造成定位不准确而出现偏差的情况,这是由累 积误差所导致的。同时在激光 SLAM 中,闭环检测一直是一大难点:由于获取的激光数据是二维点云数据,无明显特征且相互之间十分相似,所 以基于激光数据的闭环检测往往效果不好。由于图像中包含了丰富的信息,故视觉 SLAM 在闭环检测方面存在着天然优势。ORB-SLAM2 中提出的词袋模型,采用了ORB特征配合词袋的方法,具有很高的准确率和速度,是当前应用最广的闭环检测手段。

针对低成本2D激光 SLAM 噪声大、精度低、难以闭环的问题,可以思考激光结合视觉的方法来提高定位建图精度。

5. 参考文献

[1] Houben S, Droeschel D, Behnke S. Joint 3D laser and visual fiducial marker based SLAM for a micro aerial vehicle [C] // IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems, 2017.

[2] 王消为, 贺利乐, 赵涛. 基于激光雷达与双目视 觉的移动机器人 SLAM 研究 [J]. 传感技术学报, 2018(3): 394-399.

[3] 张杰, 周军. 一种改进 ICP 算法的移动机器人激 光与视觉建图方法研究 [J]. 机电工程, 2017(12): 1480-1484.

[4] Shi J, He B, Zhang L, et al. Vision-based real-time 3D mapping for UAV with laser sensor [C] // IEEE/ RSJ International Conference on Intelligent Robots and Systems, 2016: 4524-4529.

[5] 低成本激光和视觉相结合的同步定位与建图研究 尹磊,欧勇盛,江国来,彭建盛

2D激光雷达和视觉相结合的SLAM概述相关推荐

  1. SLAM综述:激光雷达与视觉SLAM

    第一节概述. 第二节讲述激光SLAM:激光传感器,开源系统,深度学习的应用. 第三节讲述视觉SLAM:相机传感器,开源系统,视觉惯性里程计,深度学习的应用. 第四节讲述激光雷达与视觉的融合. 最后展望 ...

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

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

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

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

  4. 基于 2D 激光雷达和实时回环优化的 SLAM 算法

    基于 2D 激光雷达和实时回环优化的 SLAM 算法 原文: https://www.ixueshu.com/document/771d692c7d3c0c40318947a18e7f9386.htm ...

  5. 八种常用激光雷达和视觉SLAM算法的评估与比较

    文章:Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms 作者:Bharath Garigipati ...

  6. R3LIVE:一个实时鲁棒、带有RGB颜色信息的激光雷达-惯性-视觉紧耦合系统(香港大学)

    目录 基本情况 摘要 I 引言 II 系统框架 III. 数学符号 A.state B. Maps representation IV. 激光-惯性里程计子系统 V.视觉-惯性里程计子系统 A. Fr ...

  7. 基于激光雷达和单目视觉融合的SLAM和三维语义重建

    文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision 作者:Lu Lou, ...

  8. 低成本激光和视觉相结合的同步定位与建图研究

    低成本激光和视觉相结合的同步定位与建图研究 作者 尹磊,欧勇盛,江国来,彭建盛 文章目录 低成本激光和视觉相结合的同步定位与建图研究 1. 引言 2. 主要工作 3. 基于图优化的同步定位与地图构建框 ...

  9. 激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨自动驾驶之心 点击进入->3D视觉工坊学习交流群 后台回复[相机标定]获取超 ...

最新文章

  1. 优秀开发者必备技能包:Python调试器
  2. 基于深度连续融合的多传感器三维目标检测
  3. es6 数组找最大值_自学Java笔记_day04_第四章 数组
  4. Selenium之定位元素常用的8种方法整理(第一篇)
  5. java进阶之注解篇
  6. java xms512m_安装版的tomcat设置JAVA_OPTS=-Xms128M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=512M...
  7. 爬虫-请求头处理模块
  8. python把dict转成json_Python dict(或对象)与json之间的互相转化
  9. 触发日期spring3整合quartz实现任务调度功能
  10. post and get
  11. 【Oracle】DG三种保护模式及切换方式
  12. 数字电路 逻辑函数的化简之 公式化简法
  13. android 电容触摸屏,剖析触摸屏上的电容按键
  14. 小波变换复习 (Review on Wavelet Transform)
  15. win10 office提示‘VBE6EXT.OLB不能被加载‘怎么办
  16. [2018雅礼集训1-4]字符串 AC自动机+状压DP
  17. CyberArk被评为Gartner特权访问管理魔力象限的领导者
  18. 高级驾驶辅助系统ADAS技术介绍
  19. Cortex-M3单片机的IAP在线升级上位机和下位机
  20. 二分区间的左右边界-Leetcode 33题

热门文章

  1. 【关于QT QMediaPlayer 打包后不能播放声音(plugins文件问题引起)】
  2. app运营业绩统计管理框架模板
  3. 时间序列:移动窗口函数(rolling,expanding)
  4. SyntaxError: invalid syntax(遇到问题)(已解决)
  5. Unity3d Ugui 23图集Sprite Atlas
  6. BackTrack5 学习笔记5 扫描 Nmap
  7. 机器学习—模型估计与优化—线性模型—最小二乘估计
  8. WRF案例运行-Single Domain Case
  9. 人工智能与OCR识别
  10. Excel VBA:设置单元格边框