文章目录
- 一、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算法实现的几个要点
- 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择
(A)覆盖珊格地图 和点云地图
-
信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大
(A)主要使用传感器惯性测量单元——陀螺仪(Imu)测角度,轮子编码器测里程计odom,及激光雷达
-
数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
-
定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化
-
回环检测问题
(A)分支定界Branch and Bound&lazy Decison(延迟决策) ,代表:cartographer
(B)Scan-to-Map
-
探索问题(exploration)
-
绑架问题(kidnapping)
-
帧间匹配算法
(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正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。