SLAM的发展以及分类

一.SLAM的发展

1.传统的定位和建图问题

机器人定位问题和机器人建图问题是被看成两个独立的问题来研究。

机器人定位问题,是在已知全局地图的条件下,通过机器人传感器测量环境,利用测量信息与地图之间存在的关系求解机器人在地图中的位姿。定位问题的关键是必须事先给定环境地图。比如分拣仓库中地面粘贴的二维码路标,就是认为提供给机器人的环境地图路标信息,机器人只需识别二维码并进行简单推算就能求解出当前所处的位姿。

机器人建图问题,是在已知机器人全局位姿的条件下,通过机器人传感器测量环境,利用测量地图路标时的机器人位姿和测量距离及方位信息,求解出观测到的地图路标点坐标值。建图问题的关键是必须事先给定机器人观测时刻的全局位姿。比如装载了GPS定位的测绘飞机,飞机由GPS提供全局定位信息,测量设备基于GPS定位信息完成对地形的测绘。但这种建立在环境先验基础之上的定位和建图具有很大的局限性。将机器人放在未知环境(例如火星探测车、地下岩洞作业等场景),前面这种上帝视角般的先验信息将不复存在。

根据以上的描述,机器人就陷入的一种进退两难的局面,即所谓的“先有鸡还是先有蛋”的问题,如果没有全局地图信息,机器人位姿将无法求解;没有机器人位姿,地图又将如何求解呢?

另外,传统的定位和建图问题,通常是基于模型的。以定位为例,只要构建出机器人运动的数学模型,利用运动信息就可以推测出机器人将来任意时刻的位姿,引入少量的观测反馈对模型误差进行修正即可。这种基于模型的机器人,很显然乜有考虑是机器人问题中存在的的众多不确定性因素,比如传感器测量噪声、电机控制偏差、计算机软件计算精度近似等。所以,机器人中的不确定性问题也需要被特别关注。

Smith和Cheeseman将机器人定位问题和机器人建图问题放在基于概率论理论框架之下进行统一研究。有两个开创的点:1.采用了基于概率论理论框架对机器人的不确定性进行讨论;2.将定位和建图中的机器人位姿量与地图路标点作为统一的估计量进行整体状态估计。这是SLAM问题研究的起源。

2.古典SLAM

将机器人定位和建图问题转换成状态估计问题后,在概率框架之中展开研究,利用扩展卡尔曼滤波(EKE)、粒子滤波(PF)等滤波方法来求解,Rao-Blackwellized粒子滤波算法将SLAM问题中的机器人路径规划和环境路标点估计进行分开处理,分别用粒子滤波和扩展卡尔曼滤波对二者进行状态估计,所对应的SLAM算法命名为Fast-SLAM算法。基于该算法研究构建栅格地图的SLAM算法,就是Gmapping算法。

在贝叶斯网路中采用滤波的方法求解SLAM的方法,需要实时获取每一刻的信息,并把信息分解到贝叶斯网络的概率分布中去,可以看出滤波方法是一种**在线SLAM系统。**计算代价非常大,鉴于滤波方法计算法代价昂贵这一前提,机器人只能采用基于激光等观测数据量不大的测距仪,并且只能构建小规模的地图,这是古典SLAM鲜明的特征。

3.现代SLAM

为了能够进行大规模建图,在因子图中采用优化方法求解SLAM的方法被提出,优化方法的思路与滤波方法恰恰相反,它只是简单地积累获取到的信息,然后利用之前所有时刻积累到的全局性信息离线计算机器人的轨迹和路标点,即优化方法是一种完全SLAM系统。

由于优化方法糟糕的实时性,最开始没有引起重视,随着优化方法在稀疏性和增量求解方面的突破,以及闭环检测方面的研究,它体现出巨大的价值。

得益于计算机视觉研究的日益成熟和计算机性能的大幅提升,基于视觉传感器的优化方法,成为现代SLAM研究的主流方向。

二.SLAM的类别

SLAM是一个状态估计问题,按照求解方法的不同,已经形成了两大类别,即滤波方法和优化方法。Gmapping算法就是“滤波方法+激光+占据栅格地图”,ORB-SLAM算法就是“优化方法+视觉+路标特征地图”

1.滤波方法

SLAM的发展以及分类_第1张图片

滤波方法可以看成一种增量算法,机器人需要实时获取每一时刻的信息,并把信息分解到贝叶斯网络的概率分布中去,状态估计只针对当前时刻。

计算信息都储存在平均状态矢量以及对应的协方差矩阵中,而协方差矩阵的规模随着地图路标数量的二次方增长。

滤波方法在每一次观测后,都要对该协方差矩阵执行更新计算,当地图规模很大时,计算将无法进行下去。

2.优化方法

优化方法简单地积累获取到的知识,然后利用之前所有时刻累计到的全局性信息离线机器人的轨迹和路标点,这样就可以处理大规模地图了。优化方法的计算信息储存在各个待估计量之间的约束中,利用这些约束条件构建目标函数并进行优化求解。这其实是一个最小二乘问题,实际中往往是非线性最小二乘问题。

求解该非线性最小二乘问题大致有两种方法:一种方法是先对该非线性进行线性化近似处理,然后直接求解线性方程的待估计量;另一种方法并不直接求解,而是通过迭代策,让目标函数快速下降到最小值,对应的估计量也就求出来了。

3.两者区别

滤波方法和优化方法其实就是最大似然和最小二乘的区别。

滤波方法是增量式方法,能实时在线更新机器人位姿和地图路标点。

而优化方法是非增量式的算法,要计算机器人位姿和地图路标点,每次都要在历史信息中推算一遍,因此不能做到实时。

相比于滤波方法中计算复杂度的困境,优化方法的困境在于储存,由于优化方法在每次计算时都是考虑所有历史累积信息,这些信息全部载入内存中,对内存容量提出了巨大的要求。

的困境在于储存,由于优化方法在每次计算时都是考虑所有历史累积信息,这些信息全部载入内存中,对内存容量提出了巨大的要求。

研究优化方法中约束结构的稀疏性,能大大降低储存压力并提供计算实时性。利用位姿图简化优化过程的结构,能大大提高计算实时性,将增量计算引入优化过程,也是提高计算实时性的一个方向。闭环能有效降低机器人位姿的累计误差。

你可能感兴趣的:(slam,滤波,优化,机器人,人工智能,自动驾驶)