当前位置:   article > 正文

激光SLAM从理论到实践学习——第一节(激光SLAM的发展与应用)_所有激光slam发展历程

所有激光slam发展历程

激光SLAM的发展和应用

2D激光SLAM

gmapping是一种尺度地图,hector也是

静态地图还分混合地图和拓扑地图。

一、尺度地图的实现方式主要分为两种有

  • 1.基于贝叶斯的,也就是基于滤波器的

    • 与图优化不同的是,基于滤波器的SLAM算法只估计机器人当前时刻的位置,所以他计算量小,但他的缺点也是这个,因为当前面上一时刻一旦产生了误差,这个误差就无法进行修复。Gmapping用的就是这个算法,环境如果很大,就根本无法建出地图,因为他只估计机器人的当前位姿。
    • 基于滤波器的SLAM建图算法其实是贝叶斯估计的过程,和贝叶斯估计的过程是一模一样的。如下图的五个步骤,这其实也是典型的卡尔曼滤波的过程,因为卡尔曼滤波也是特殊的的贝叶斯在线性高斯下的特殊情况。
      在这里插入图片描述
      • 状态预测:其实就是里程计的预测,就是告知图现在里程计大概在什么位置
    • 这五步就是激光SLAM的过程,每来一次激光数据就执行这五步。
  • 2.基于图优化的(图表示机器人SLAM的过程,而优化是指机器人在建图过程中会积累的误差,然后我们通过非线性最小二乘法的方式来优化建图过程中累计的误差,最终得到一个地图)典型算法:cartographer

在这里插入图片描述

  • 图优化的过程

    • 分为两部分:1.前端:构图的过程

      • 图优化过程中Node表示机器人的位姿,Edge边表示节点之间的空间约束关系。
      • 假如有两个节点X1和X2,他们之间的相对位置关系,就是X1的逆乘以X2,也就是两个节点之间的空间约束关系
      • 但我们在机器人建图过程中,会运动得到很多位姿,也就是很多节点,从开头的节点到最后的节点一系列过程中会形成一个相对位置关系,而第一个节点和最后一个节点也会形成一个相对位置关系(回环检测),假设这一系列过程中的相对位置关系是T1,回环那部分也就是第一个节点到最后一个节点的相对位置关系是T2,那么理想情况,也就是从节点开头到一系列节点位姿之后,一直不存在误差,那么T1的逆乘以T2就是一个定值I,但这个运动过程不可能是理想的,总会有误差,所以说T1的逆*T2肯定不是I,在一系列运动节点运动下来我们可以看做是里程计,不可能不存在误差,所以产生了一个误差项,然后我们就可以用后端优化来做了。
    • 2.后端:优化的过程

      • 而后端优化其实是死的,也就是求解整个运动的过程,想办法让每个节点所产生的误差项趋于0,我们进行优化的时候,我们发现累计的误差就会被消除掉。(建图中的误差是由里程计提供的,在图上看的话就是激光雷达与地图的匹配程度)
    • 看图

在这里插入图片描述

- 网上搜集图优化:

  - 在SLAM里,图优化一般分解为两个任务:

    1、构建图。机器人位姿作为顶点,位姿间关系作为边。

    2、优化图。调整机器人的位姿(顶点)来尽量满足边的约束,使得误差最小。

    下面就是一个直观的例子。我们根据机器人位姿来作为图的顶点,这个位姿可以来自机器人的编码器,也可以是ICP匹配得到的,图的边就是位姿之间的关系。由于误差的存在,实际上机器人建立的地图是不准的,如下图左。我们通过设置边的约束,使得图优化向着满足边约束的方向优化,最后得到了一个优化后的地图(如下图中所示),它和真正的地图(下图右)非常接近。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

在这里插入图片描述

- 看图可知,画红点的两个部分是重合的,但是由于激光里程计的不断累计,这两个点都已经分开了,就像呆瓜一号机器人,转弯时的误差导致雷达与地图完全不匹配,要过几秒才会匹配回来,可以理解一下这就是图优化的过程,图中的黑色阴影部分可以理解就是你运动的时候的激光位姿点所累积产生的阴影(每条黑色的边其实他就是一个回环约束,当所有约束弄到一起,一个约束代表一个误差项,将他们优化全部趋于0之后就得到右边的图),图优化之后就相当于匹配回来之后的图。可以这么理解。
  • 1

二、2D激光SLAM的输入和输出(2DSLAM在室内使用多)

在这里插入图片描述

三、2D激光SLAM的帧间匹配方法(CSM+梯度优化)和回环检测方法(分支定界的CSM和Lazy Decision)

2D激光SLAM的帧间匹配是说的一个点到线,求这个点到线的距离

在这里插入图片描述

四、2D激光SLAM的发展

  • 基于滤波器的(10年之后就没有人进行延伸了,因为2010年出了基于图优化的Karto SLAM)
    • 前两个不说
    • Gmapping是07年出的,它太依赖里程计,而且粒子在传播的过程中一旦出现噪声就无法进行修复。
    • Opyimal RBPF(最优RBpf)是10年出的,他是在Gmapping的基础之上对其进行优化,他的基本思路比如说一个粒子,它每次假设传播N次,生成N个粒子,再从中选择一个最优的出来。
  • 基于图优化的
    • Korto SLAM
    • Cartographer:基本是在Karto SLAM基础上优化的
  • 基于滤波器的SLAM算法淘汰了,实际Gmapping的计算量要比基于图优化的Karto和Cattographer计算量要大不少,因为Gmapping使用的是RBpf粒子滤波,他的每个粒子都会携带一副地图,虽然提出了选择性重采样和改进提议分布,但还是不如基于图优化的算法。

在这里插入图片描述

五、2D激光SLAM的应用

  • 数据的预处理—非常重要
    • 轮式里程计的标定
      • 标定就决定这你的里程计有多准。分两个
      • 一是离线标定:就是在机器人做好之后 ,对轮子直径,两个轮子之间的间距,电机的某项参数进行标定
      • 二是在线标定:比如说物流机器人,在没托运货物之前,是出厂默认进行标定,但如果搭载很重的货物压在机器人身上,那么很多参数都会发生变化,比如轮子直径之类的。所以需要进行在线标定,实时计算轮子直径之类的参数。
    • 激光雷达运动畸变去除
      • 激光雷达是旋转的,我们知道激光雷达转一圈是需要时间的,而不是瞬间扫描一周,所以在这个过程中会出现运动畸变,他会自己丢弃。
    • 不同系统之间的时间同步
      • 在我自己的第一个机器人里就有这样的情况,STM32上发线速度和角速度时,ROS可能第一次或中途丢失一步收不到,因为是100ms执行一次回调,但STM32是不大准的。而进行move_base时,ROS下发的线速度和角速度数据,STM32在串口接收时也可能会收不到,或接收错误。从而导致误差。
  • 实际环境中的问题
    在这里插入图片描述

六、2D激光SLAM的趋势—与视觉融合

  • 视觉提供的信息

    • 高精度的里程信息(VO、VIO视觉里程计、VWO)
    • 信息量丰富的视觉地图
  • 融合解决的问题(一定程度上可以缓解,但不能完全解决)

    在这里插入图片描述

3D激光SLAM

与2D激光雷达其实大同小异

一、3D激光SLAM的介绍

在这里插入图片描述

帧间匹配方法,他会需要三个点构成一个平面,再求点到平面的距离

在这里插入图片描述

二、3D激光SLAM的发展
在这里插入图片描述

三、3D激光SLAM的应用

在这里插入图片描述

四、激光SLAM的问题

在这里插入图片描述

博客纯属学习笔记,方便自己温习,也供大家学习,图有点乱,谅解,有不对的地方还望大家可以多多纠正。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号