一文彻底搞懂SLAM技术

一文彻底搞懂SLAM技术什么是 SLAM SLAM simultaneous 也称为 CML ConcurrentMa 即时定位与地图构建 或并发建图与定位 问题可以描述为 将一个机器人放入未知环境中的未知位置 是否有办法让机器人一边逐步描绘出此环境完全的地图 同时一边决定机器人应该往哪个方向行进 例如扫地机器人就是一个很典型的 SLAM 问题 所谓完全的地图 aconsistentm 是指不受障碍行进到房间可进入

什么是SLAM?

SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。

问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边逐步描绘出此环境完全的地图,同时一边决定机器人应该往哪个方向行进。

例如扫地机器人就是一个很典型的SLAM问题,所谓完全的地图(a consistent map)是指不受障碍行进到房间可进入的每个角落。

SLAM最早由Smith、Self和Cheeseman于1988年提出。

由于其重要的理论与应用价值,被很多学者认为是实现真正全自主移动机器人的关键。

当你来到一个陌生的环境时,为了迅速熟悉环境并完成自己的任务(比如找饭馆,找旅馆),你应当做以下事情:

  • a.用眼睛观察周围地标如建筑、大树、花坛等,并记住他们的特征(特征提取)
  • b.在自己的脑海中,根据双目获得的信息,把特征地标在三维地图中重建出来(三维重建)
  • c.当自己在行走时,不断获取新的特征地标,并且校正自己头脑中的地图模型(bundle adjustment or EKF
  • d.根据自己前一段时间行走获得的特征地标,确定自己的位置trajectory
  • e.当无意中走了很长一段路的时候,和脑海中的以往地标进行匹配,看一看是否走回了原路(loop-closure detection)。实际这一步可有可无。

以上五步是同时进行的,因此是simultaneous localization and mapping

图片

离不开这两类传感器

目前用在SLAM上的Sensor主要分两大类,激光雷达摄像头

图片

这里面列举了一些常见的雷达和各种深度摄像头。激光雷达有单线多线之分,角分辨率及精度也各有千秋。

SICK、velodyne、Hokuyo以及国内的北醒光学、Slamtech是比较有名的激光雷达厂商。他们可以作为SLAM的一种输入形式。

这里展示的就是一种简单的2D SLAM。

图片

这个小视频是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的SLAM。

图片

而VSLAM则主要用摄像头来实现,摄像头品种繁多,主要分为单目双目单目结构光双目结构光ToF几大类。

他们的核心都是获取RGB和depth map(深度信息)。

简单的单目和双目(Zed、leapmotion)我这里不多做解释,我主要解释一下结构光和ToF。

最近流行的结构光和TOF

结构光原理的深度摄像机通常具有激光投射器、光学衍射元件(DOE)、红外摄像头三大核心器件。

图片

这个图(下图)摘自primesense的专利。

图片

可以看到primesense的doe是由两部分组成的,一个是扩散片,一个是衍射片。

先通过扩散成一个区域的随机散斑,然后复制成九份,投射到了被摄物体上。根据红外摄像头捕捉到的红外散斑,PS1080这个芯片就可以快速解算出各个点的深度信息。

这儿还有两款结构光原理的摄像头。

图片

图片

第一页它是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。但据说DOE成本也比较高。

还有一种比较独特的方案(最后一幅图),它采用mems微镜的方式,类似DLP投影仪,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。(产自ST,ST经常做出一些比较炫的黑科技)。

ToFtime of flight)也是一种很有前景的深度获取方法。

传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。

类似于雷达,或者想象一下蝙蝠,softkineticDS325采用的就是ToF方案(TI设计的)。

但是它的接收器微观结构比较特殊,有2个或者更多快门,测ps级别的时间差,但它的单位像素尺寸通常在100um的尺寸,所以目前分辨率不高。

在有了深度图之后呢,SLAM算法就开始工作了,由于Sensor和需求的不同,SLAM的呈现形式略有差异。

大致可以分为激光SLAM(也分2D和3D)和视觉SLAM(也分SparsesemiDenseDense)两类,但其主要思路大同小异。

图片

这个是Sparse(稀疏)的

图片

这个偏Dense(密集)的

图片

SLAM算法实现的4要素

SLAM算法在实现的时候主要要考虑以下4个方面吧:

  1. 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择
  2. 信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大
  3. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
  4. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化

其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。

640-3

这个是一个比较有名的SLAM算法,这个回环检测就很漂亮。但这个调用了cuda,gpu对运算能力要求挺高,效果看起来比较炫。

以VSLAM举个栗子

图片

我大概讲一种比较流行的VSLAM方法框架。

整个SLAM大概可以分为前端和后端

前端

前端相当于VO(视觉里程计),研究帧与帧之间变换关系。

首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行匹配,得到一个pose信息(位置和姿态),同时可以利用IMU(Inertial measurement unit惯性测量单元)提供的姿态信息进行滤波融合后端则主要是对前端出结果进行优化,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。

后端

后端这边难点比较多,涉及到的数学知识也比较多,总的来说大家已经慢慢抛弃传统的滤波理论走向图优化去了。

因为基于滤波的理论,滤波器稳度增长太快,这对于需要频繁求逆的EKF(扩展卡尔曼滤波器),PF压力很大。

而基于图的SLAM,通常以keyframe(关键帧)为基础,建立多个节点和节点之间的相对变换关系,比如仿射变换矩阵,并不断地进行关键节点的维护,保证图的容量,在保证精度的同时,降低了计算量。

列举几个目前比较有名的SLAM算法:PTAM,MonoSLAMORB-SLAM,RGBD-SLAM,RTAB-SLAM,LSD-SLAM

图片

RGBD-SLAM

图片

MonoSLAM

图片

LSD-SLAM

图片

所以大家如果想学习SLAM的话,各个高校提高的素材是很多的,比如宾大、MIT、ETH、香港科技大学、帝国理工等等都有比较好的代表作品,还有一个比较有前景的就是三维的机器视觉,普林斯顿大学的肖剑雄教授结合SLAM和Deep Learning做一些三维物体的分类和识别,实现一个对场景深度理解的机器人感知引擎。

图片

http://robots.princeton.edu/talks/2016_MIT/RobotPerception.pdf

SLAM技术从最早的军事用途(核潜艇海底定位就有了SLAM的雏形)到今天,已经逐步走入人们的视野,扫地机器人的盛行更是让它名声大噪。

同时基于三维视觉的VSLAM越来越显主流。在地面/空中机器人VR/AR/MR汽车/AGV自动驾驶等领域,都会得到深入的发展,同时也会出现越来越多的细分市场等待挖掘。

图片

SLAM技术的应用领域

1)室内机器人 扫地机要算机器人里最早用到SLAM技术这一批了。

国内的科沃斯、塔米扫地机通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机可以高效绘制室内地图智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。

不过有意思的是,科沃斯引领时尚还没多久,一大帮懂Slam算法的扫地机厂商就开始陆陆续续地推出自己的智能导航,直到昨天雷锋网还看到一款智能扫地机新鲜出炉,而这追逐背后的核心,大家都知道就是SLAM技术的应用。

图片

而另一个跟SLAM息息相关的室内移动机器人,因为目前市场定位和需求并不明确,我们目前只能在商场导购室内机器人和Buddy那样的demo视频里才能看到,国内Watchhhh SlamSlam Tech两家公司都是做这方面方案提供的,以现实的观点看,现在室内移动机器人市场定位和需求没落地的时候,由方案商公司推动,商用室内移动机器人先行,这反而是一种曲线救国的发展方式。

2)AR 目前基于SLAM技术开发的代表性产品有微软的Hololens,谷歌的Project Tango以及同样有名的Magic Leap,后者4月20号公布它的新一代水母版demo后,国内的AR公司更加看到了这个趋势。

比如进化动力近期就公布了他们的SLAM demo, 用一个小摄像头实现VR头显空间定位,而易瞳去年10月雷锋网去试用新品的时候,就发现已经整合SLAM技术了,国内其他公司虽然没有正式公布,但我们可以肯定,他们都在暗暗研发这项技术,只等一个成熟的时机就会展现给大家。

图片

进化动力CTO聂崇岭向雷锋网表示,如果用一个准确的说法

很多VR应用需要用到SLAM技术,定位只是一个feature,路径记录、3D重构、地图构建都可以是SLAM技术的输出。

3)无人机 国外的话,原来做 Google X Project Wing 无人机的创始人 MIT 机器人大牛 Nicholas Roy 的学生 Adam Bry 创办的 Skydio,挖来了 Georgia Tech 的 Slam 大牛教授 Frank Dellaert 做他们的首席科学家。

国内大家非常熟悉的大疆精灵四避障用的双目视觉+超声波,一位大疆工程师徐枭涵在百度百家的撰文里坦率承认“P4里面呈现的主动避障功能就是一种非常非常典型的Slam的弱应用,无人机只需要知道障碍物在哪,就可以进行 Planning,并且绕开障碍物

当然Slam能做的事情远远不止这些,包括灾区救援,包括探洞,包括人机配合甚至集群,所有的关于无人机的梦想都建立在Slam之上,这是无人机能飞(具有定位,姿态确定以后)的时代以后,无人机最核心的技术。”

图片

而近期另一个号称刷爆美国朋友圈的hover camera无人机,因为其创始人的的计算机视觉背景,正式把SLAM技术应用进来了,在介绍他们无人机的主要产品技术时,提到了

●SLAM(即时定位与地图构建):通过感知自身周围环境来构建3D增量式地图,从而实现自主定位和导航。

4)无人驾驶 因为Google无人驾驶车的科普,很多人都知道了基于激光雷达技术的Lidar Slam。

Lidar Slam是指利用激光雷达作为外部传感器,获取地图数据,使机器人实现同步定位与地图构建

虽然成本高昂,但目前为止是最稳定、最可靠、高性能的SLAM方式。

图片

另外,2011 年,牛津大学Mobile Robotics Group 首次向公众展示他们的第一辆无人驾驶汽车野猫(Wildcat),这是一辆由 Bowler Wildcat 4X4 改装而成的车。汽车头顶的相机和激光能够搜集信息然后即时分析导航,已经成功通过了测试。

2014 年,他们改装的一辆 Nissan 的 Leaf 也成功路测。

Mobile Robotics Group主要研究领域是大规模的导航和对自然场景理解。

据称,团队所拥有的技术非常牛逼,其复杂和先进性远远超过一般的同步定位与地图构建(SLAM)算法。

可圈可点的是,对于无人驾驶技术,他们并没有使用 GPS 或者是嵌入式的基础设施(信标之类的),而是使用算法来导航,包括机器学习和概率推理来建立周围的地图等。

—— The End ——

推荐好文  点击蓝色字体即可跳转

 没想到靠股市,我差点成功逆袭

☞ 分享一下嵌入式 HarmonyOS 的学习思路 

☞ 推荐一款我私藏已久的串口示波神器

☞ 一位老电子工程师的十年职场感悟

☞ 优雅地用宏实现环形缓冲区

欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!

图片

长按识别二维码关注我

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199950.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:51
下一篇 2026年3月20日 上午11:51


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号