一、SLAM: Simultaneous Localization and Mapping, 同时定位与地图构建

  1. 解释

    搭建特定传感器的主体(机器人等),在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。

  2. 本质

    对运动主体自身和周围环境空间不确定性的估计

  3. 个人理解

    SLAM主要是希望机器人本体具备自主运动能力,而且不需要破坏环境,即不需要主动在环境中安装导轨、二维码等特殊标记,而只需要被动接受环境中的信息,这也意味着传感器不需要安装在环境中,而是安装在机器人本体上。主要让机器人明白两件事:

    • 定位——我在什么地方
    • 建图——周围环境是什么样?

    有了以上两点信息后,机器人就可以在已经“熟知”的环境下进行导航作业,并且可以实时知道自己此刻在哪,距离目的地还有多远等信息。

  4. 传感器的选择

    • 相机:视觉SLAM
    • 激光:激光SLAM
  5. 相关经典书籍

    • 《概率机器人》
    • 《计算机视觉中的多视图几何》
    • 《机器人学中的状态估计》

二、经典视觉SLAM框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ou4wnF7o-1636978308536)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e81d9141-8b5a-4129-8ad0-2424132a0334/Untitled.png)]

  1. 传感器信息读取。

    • 相机图像信息的读取和预处理
    • 激光
    • 码盘
    • 惯性传感器
  2. 前端视觉里程计(Visual Odometry, VO)

    • 估算相邻图像间相机的运动,以及局部地图的样子

    • VO又称为前端(Front End)

    • 个人理解

      通过传感器我们可以获得机器人运动前后信息的变化,比如相机,我们可以获得前后两帧图片,和人眼类似。但是人类可以轻易地根据图片判断运动变化,旋转还是平移了?左转还是右转?等等。但是处理器是不能明白这些变化的,需要特定的算法去估计,我们也不可能得到准确的变化值。所以,将不可避免的产生**累积漂移(Accumulating Drift),**这些误差就需要后面的步骤去消除,相当于一个闭环过程。

  3. 后端(非线性)优化(Optimization)

    • 后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。又称为后端(Back End)
    • 主要处理SLAM过程中的噪声问题
  4. 回环检测(Loop Closure Detection)

    • 回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
    • 主要解决位置估计随时间漂移的问题
    • 通过某种手段,让机器人知道“回到了原点”
    • 扫描二维码、判断图像间的相似性等等
  5. 建图(Mapping)

    • 它根据估计的轨迹,建立与任务要求对应的地图。
    • 地图
      • 度量地图(Metric Map)

        • 稀疏(Sparse)

          选择一部分具有代表意义的东西,称之为路标(Landmark),满足定位需求

        • 稠密(Dense)

          着重于建模所有看到的东西,适用于导航

      • 拓扑地图

        相比于度量地图的精确性,拓扑地图更强调地图元素之间的关系。拓扑地图是一个图(Graph),由节点和边组成,只考虑节点间的连通性。

三、SLAM问题的数学表述

  1. 运动

    • 意义:机器人在运动过程中,从k−1k-1k−1时刻到kkk时刻,其位置xxx是如何变化的。

    • 运动方程

      xk=f(xk−1,uk,wk)x_k = f(x_{k-1},u_k,w_k)xk​=f(xk−1​,uk​,wk​)

      uku_kuk​是运动传感器的读数或者输入,wkw_kwk​为该过程中加入的噪声

  2. 观测

    • 意义:机器人在xkx_kxk​位置上看到一个路标点yjy_jyj​时,产生了一个观测数据zk,jz_{k,j}zk,j​

    • 观测方程

      zk,j=h(yj,xk,vk,j)z_{k,j}=h(y_j,x_k,v_{k,j})zk,j​=h(yj​,xk​,vk,j​)

      vk,jv_{k,j}vk,j​是这次观测里的噪声

  3. SLAM问题——>状态估计问题

    如何求解定位问题(估计xxx)?如何解决建图问题(估计yyy)?

    • 滤波器:卡尔曼滤波器、粒子滤波器… …
    • 非线性优化:图优化… …
Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐