0%

+ ☁️ 我的关键词云图

+ 👦 两句话

“无尽的远方,无数的人们,都与我有关。” ----鲁迅

“灿烂的生命中一个忙碌的时辰,抵得上一世纪的默默无闻。”----欧·亨利

+ 📀 BILI BILI

我的主页: Vlog大合集

+ 💾 GitHub

我的主页: 什么都没有的一个仓库

+ 🍏 DouBan

我的主页: 日常观影记录

+ 📕 XiaoHongShu

我的主页: 精神状态分享与照片合集

+ 🎥 Favorite Film

+ 🎶 Favorite Music

再见!

基本概念

Fast-SLAM:一种基于Rao-Blackwillised Particle Filter的SLAM后端算法,包括Fast-SLAM1.0和Fast-SLAM2.0两个版本。
Fast-SLAM 1.0:该算法利用粒子滤波器跟踪移动机器人位姿参数,并且每一粒子单独维护一幅环境特征地图、每一个环境路标利用EKF算法来维护。
Fast-SLAM 2.0:在1.0版本的基础上,较好地解决了粒子退化的问题,使用较少的粒子就可以得到满意的SLAM结果。
受Fast-SLAM启发的算法:栅格地图Fast-SLAM、立体视觉Fast-SLAM、UFast-SLAM、CFast-SLAM等。
与EKF算法的区别:Fast-SLAM算法计算代价小、计算速度快、更适用于大尺度环境、数据关联鲁棒性更好。

Fast-SLAM基本框架

若机器人路径已知,则各个地标点的位置估计是相互独立的,SLAM问题目标概率方程分解为:

前项为路径后验概率、后项为地表估计。FastSLAM由粒子滤波和多个单独的EKF构成,粒子滤波器估计移动机器人的路径、EKF根据式中参数完成对单个路标的估计。
FastSLAM中的粒子包含粒子的历史路径和对每个路标的估计,可以表示为:

FastSLAM分为预测,更新和重要性采样三个步骤。预测和更新步骤根据观测信息和控制信息形成临时粒子集,将临时粒子集对路径的估计称为建议分布。由于建议分布与目标分布不符,因此在重采样步骤对粒子赋予权重,权重大小为:

FastSLAM算法存在粒子退化的问题,即权重大的粒子数量少,粒子滤波器对路径的估计出现偏差。因此,FastSLAM算法需要对粒子进行重新采样。执行重采样步骤的判断方法为对有效粒子数设置阈值,当小于阈值N-neff时进行重采样。有效粒子数的计算方式为:

重采样问题:重采样步骤会导致粒子集中在权重较大的粒子附近,在降低粒子多样性的同时,若权重较大的粒子为局部最优解,则包含局部最优解信息的粒子数量过多,进而导致对下一时刻的粒子路径估计错误,导致粒子偏离正确轨迹。

Fast-SLAM(Rao-Blackwillised PF)实际应用流程

  1. 机器人状态预测
  2. 数据关联
  3. 重要性采样(权值计算)
  4. 地图更新
  5. 重采样

基本概念

卡尔曼滤波KF:Kalman Filter,是贝叶斯滤波的具体化,系统满足线性化和高斯分布假设,运动方程和观测方程都是线性。

扩展卡尔曼滤波EKF:Extended-Kalman Filter,考虑到SLAM系统模型为非线性,故将非线性函数泰勒展开并取前两项,即近似为线性函数,从而满足KF条件,再使用kalman Filter。
SLAM问题两大目标方程:

线性化处理后方程:

SLAM实际应用中的数学模型

机器人实际模型
考虑二维机器人运动过程中时间的离散性:
1. 运动方程

2. 观测方程

SLAM过程参数矩阵(均值、方差)

EKF滤波原理
卡尔曼滤波前,landmarks位置由于噪声存在和累加,具有不确定性,观测呈椭圆范围。

卡尔曼滤波后,通过重复观测优化系统状态量,本质是通过计算卡尔曼增益来衡量模型的估计值和观测模型的结果。

EKF实际应用流程

  1. 状态预测
    用机器人模型对机器人当前时刻的状态进行预测,即对均值和方差进行更新。需要更新的部分为图中绿色填充项。
  2. 状态更新
    综合机器人的测量信息对机器人当前时刻的状态预测值进行修正,即对均值和方差进行修正。
  3. 数据关联
    将观测的landmark和状态向量中的landmark相匹配,通常通过设定马氏距离阈值来判定。

编程实现

关于EKF_SLAM的仿真,基于MATLAB代码,结果如图所示,机器人轨迹的真实值(黑色虚线),运动模型预测的机器人轨迹(蓝色虚线),EKF滤波后的机器人轨迹(红色虚线)。

总结

EKF_SLAM适用的场景为特征地图,稀疏;需要里程计信息反馈(输入机器人位姿量)

基本概念

SLAM:Simultaneous Localization and Mapping,指的是机器人在未知环境中同时进行自主定位和地图创建工作,其主要思想是:
1. 依靠已创建的地图信息进行自定位;
2. 根据定位结果对地图进行更新。

SLAM本质上是一个状态估计问题,当前,其求解方法可大致分为两大类:
1. 是基于滤波器的方法;
2. 是基于平滑的方法。

基本分类

1. 激光SLAM
准确、快速、开发成熟,但相对笨重、成本较高。
2. 视觉SLAM
便宜、轻量、信息量大,但消耗较大算力、所有结果都是概率估计。
相机分类:

  1. 单目相机
    二维形式记录三维世界,移动下才能得到深度信息。
  2. 双目相机
    通过左右眼图像差异可以估计深度。
  3. 深度相机(RGB-D相机)
    通过红外结构光或ToF(Time of Flight)原理直接测量物体距离。

基本框架

  1. 前端
    视觉里程计VO,用于估算相邻图像间相机的运动,以及局部地图的样子。不可避免有漂移!
    方法:特征点法、直接法。
  2. 后端
    Optimization,从带有噪声的数据中优化轨迹和地图,状态估计原理为最大后验概率估计MAP。
    方法:EKF扩展卡尔曼滤波、图优化。
  3. 回环检测
    Loop Closing,用于消除偏差。
    方法:词袋模型。
  4. 建图
    Mapping:用于导航、规划、通信、交互等
    度量地图vs拓扑地图
    稀疏地图vs稠密地图

基本描述

SLAM求解过程是一个状态估计过程。

  1. 运动方程
  2. 观测方程

参考文献

[1]梁明杰,闵华清,罗荣华. 基于图优化的同时定位与地图创建综述_梁明杰[J]. 机器人, 2013, 35(4): 500-512.
[2]Durrant-whyte H.,Bailey T.. Simultaneous_localization_and_mapping_part_I[J].:
[3]高翔. 视觉SLAM十四讲[M]