年底决战 SLAM(1)

目标

看了这么诱人的目标,大家一定流出口水。对这就是 SLAM 用一句最近刚学的流行词真香。


年底决战 SLAM(1)_第1张图片
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

你可能感兴趣的:(年底决战 SLAM(1))