SLAM算法(一)即同步定位与地图构建了解

文章目录

  • 一、SLAM 简介
  • 二、SLAM 技术简介
  • 三、slam算法实现的几个要点
  • 有趣的事,Python永远不会缺席
  • 培训说明

一、SLAM 简介

  SLAM(Simultaneous Localization and Mapping同步定位与地图构建) 是业界公认视觉领域空间定位技术的前沿方向,它主要的作用是让机器人在未知的环境中,完成定位(Localization),建图(Mapping)和路径规划(Navigation)。
  目前科技发展速度飞快,想让用户在 AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM 就是其中之一。实际上,有人就曾打比方,若是手机离开了 WIFI 和数据网络,就像无人车和机器人,离开了 SLAM 一样。
  SLAM 算法最早出现在 SmithSelf 和 Cheeseman 的论文中,他 们 运用扩展卡尔曼滤波对状态空间中的机器人位姿和特征 ( 路标 ) 位置进行同 时 估 计 。 计 算 复 杂 度 高 一 直 是 SLAM 的 难 题 之 一 ,在 基 于 特 征 的SLAM 算法中,标准 EKF SLAM 方法的计算复杂度与环境特征个 数 呈二次方关系,这使得它只能在一般不超过上百个特征的较小范围内应用。 因此,研究一种计算量可随地图大小进行缩放的 SLAM 算法成为一个公共难题。由于 SLAM 问题针对未知且不确定的环境,一般使用概率方法来描述该问题。 SLAM 的常用概率解法有两类, EKF 算法 和 粒 子 滤 波 算法。 对于非线性系统的 SLAM 问题 EKF 算法和快速 SLAM(FastSLAM)算法是比较典型的两种算法 。 粒子滤波方法对模型进行直接近似,它不要 求 控 制 向 量 和 观 测 值 满 足 高 斯 分 布 假 设 将 粒 子 滤 波 方 法 应 用 到高维 SLAM 问题,计算量非常大, FastSLAM 算法 把 联 合SLAM状 态 分成运动部分和条件地图部分以缩小采样空间 ,机器人的位姿用不同权值的粒子 表 示 ,地 图 由 独 立 的 高 斯 分 布 解 析 表 示 ,机 器 人 位 姿 状 态 的递归估计采用粒子滤波方法,地图状态的递归估计采用 EKF 方法。

二、SLAM 技术简介

  主流的slam技术应用有两种,分别是激光slam(基于激光雷达lidar 来建图导航)和视觉slam(vslam,基于单/双目摄像头视觉建图导航),在此主要先介绍激光slam,它有分为基于滤波的 filter-based 的SLAM,和基于图优化Graph-based的SLAM

基于滤波框架slam:

  • 卡尔曼滤波 : EKF UKF EIF 等
  • 粒子滤波: PF RBPF FASTSAM 1.0 2.0 MCL

基于图优化框架slam:

  • Graph-slam 工具: g20

(1)基于Graph-based的代表是cartographer,karto_slam,可以修复 t 时刻之前的误差分为两部分Front-end ,和Back-end。

(2)基于(粒子滤波)PF的代表gmapping,只能估计X(t)当前时刻的位姿,不能修复之前时刻产生的误差。在大面积的情况下,就无法建图了。

三、slam算法实现的几个要点

  1. 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择

  (A)覆盖珊格地图 和点云地图

  1. 信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大

    (A)主要使用传感器惯性测量单元——陀螺仪(Imu)测角度,轮子编码器测里程计odom,及激光雷达

  2. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理

  3. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化

  4. 回环检测问题

  (A)分支定界Branch and Bound&lazy Decison(延迟决策) ,代表:cartographer

  (B)Scan-to-Map

  1. 探索问题(exploration)

  2. 绑架问题(kidnapping)

  3. 帧间匹配算法

    (A)PI-ICP

    (B)CSM(Correlation Scan Match)

    (C)梯度优化的方法:Hector—SLAM

    (D)CSM+梯度优化:cartographer

有趣的事,Python永远不会缺席

欢迎关注小婷儿的博客

    文章内容来源于小婷儿的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

    如需转发,请注明出处:小婷儿的博客python    https://www.cnblogs.com/xxtalhr/

博客园 https://www.cnblogs.com/xxtalhr/

CSDN https://blog.csdn.net/u010986753

有问题请在博客下留言或加作者:
     微信:tinghai87605025 联系我加微信群
     QQ :87605025
     python QQ交流群:py_data 483766429

好难 后期再深入学习

培训说明

OCP培训说明连接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

     小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。

你可能感兴趣的:(SLAM)