目标
看了这么诱人的目标,大家一定流出口水。对这就是 SLAM 用一句最近刚学的流行词真香。
slam_cover.jpeg
- 3D 室内漫游 demo
- 无人驾驶的 demo
心态
还是上面海鲜大杂烩,虽然看起来好吃,不过首先得确定我们吃得下,然后再确定一下消化得了。学习 SLAM 是一个比较困难的事,是因为 SLAM 不但有深度而且有广度。不过有付出就会有回报,这年头凭自己真本事吃猪肉也是值得自豪的事。
什么是SLAM
SLAM(Simultaneous Localization And Mapping)
机器处于未知环境通过传感器和摄像头设备进行定位,然后将自己所处环境进行环境建模。同时定位与建图、同时定位与地图构建。那么我们可能会有疑问就是 SLAM 做了两件之间相互依赖的事,就是定位和构建地图,通常是在地图中进行定位,或是根据定位来构建地图。那么 SLAM 是先定位然后构建环境还是先构建环境再进行定位呢。
SLAM 回答机器人
- 我在哪里 localization
- 我所处环境 mapping
- 到达指定地点 Route Planning
SLAM 应用
- 机器人,我们熟知的扫地机器人,一直想买一个,2DLiDAR SLAM
- 无人驾驶,这个大家可能没想到会用 SLAM
- 军事上应用,反恐设备,SLAM 技术最早就是源于军事应用
- 物流仓库(AGV),亚马逊无人
- 室内全景漫游和虚拟装修,贝壳
- 模型重建
- VR 游戏
- 估计特斯拉无人工厂也会用到 SLAM 技术
- 视频特效
SLAM VS GPS
有些场景是 GPS 不是办不到就是办到了也不是我们想要的
- GPS 精度不够,民用都是 m 级别,我们在无人驾驶需要 cm 级别的定位
- GPS 在室内是没有信号,例如我们水下和隧道作业中是无法通过 GPS 进行定位
- SLAM 可以进行复杂定位,不但定位而且包含姿态信息
为什么我们选择学习 SLAM
- 学习成本不高,只要我们有一部手机和摄像机
- 他是一个面向未来的技术,现在能写出 SLAM
概述
通过传感器获取作为信息,我们做的是通过传感器获取信息进行加工来获取有用信息。mapping,这里建图,并不是我们平时熟悉地图,而是通过传感器信息来尝试重新构建周围环境,也就是我们许多 demo 中看见 3D 重建。
术语
- State Estimation(状态评估)
评估当前机器姿态和位置,评估传感器数据来去除噪声,评估周围环境的land market - Localization
定位包括机器位置和姿态,这里姿态也就是机器朝向,他正在朝哪个方向运动 - Mapping
也就通过传感器数据对环境进行建模 - SLAM
- Navigation
导航,也就是有目标的运动,导航并不是我们SLAM 需要了解内容,但是导航特别是室内导航基本都会用到 SLAM - Motion Planning
路径导航
SLAM 技术框架
- 传感器数据(可以摄像头,也可以激光雷达)
- 激光传感器 精度高就是价格贵,信息有限
- 视觉,单目相机、双目相机和RGB-D相机,全景相机,便宜,体积小,信息丰富
- 视觉里程计(前端)
可以记录里程计也就是轨迹,这里主要使用特征点提取,边角的点,- 特征点提取
- 特征点匹配
- 优化位姿(后端)
- 优化走过轨迹
- 建图,有了位置和特征点就可以进行建图
- 回环检测
- 去过以前去过的地方
如何学习SLAM
SLAM 就是一个大杂烩,需要我们知识要比较全面,那么我们应该如何学习SLAM 呢? 需要随着学习复习一下线性代数和高等数学,因为学多推导公式我们都需要这些知识。开发环境最后 linux 不要选择 window 作为开发环境,这样可以避免我们耗费精力解决一些无用的问题。会用到相机几何的知识,少不了用到 c++,掌握openCV 也是必须的。
- 线性代数
- 梯度下降
- 编程环境(linux),了解ubuntu 系统
- cmake
- openCV /g2o 等库
- 传感器类型
- 相机模型
- 特征点 ,SHIF
网友评论