基于SLAM的规划算法仿真复现|SLAM|智能规划

前言
那么这里博主先安利一些干货满满的专栏了!
首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。
高质量博客汇总
https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482
项目代码
摘要
本实验报告旨在介绍一个基于认知科学原理的实验项目,该项目结合了视语言、语音识别、机器人平台以及开源仿 真环境,复现了一个单/多智能体的认知导航、认知规划和认知控制的仿真算例。本报告涵盖了对 ekfslam、FastSLAM1 和 FastSLAM2 等三种 SLAM 算法的复现实验,以及利用 Python 绘制图表和对实验结果进行分析的过程。在本实验中,智能 体的智能表现体现在多个方面。首先,通过应用 SLAM 算法,智能体能够自主定位和构建环境地图,展示了其对环境的感 知能力。其次,结合视语言和语音识别技术,智能体可以感知和理解视觉和语义信息,实现了跨模态的感知与交互能力。 最后,通过机器人平台的应用,智能体可以控制自身的行动,包括导航、路径规划和避障等。同时,本实验还突出了认知 科学的重要性。通过 SLAM 算法的应用,我们实现了智能体的自主定位和地图构建,为智能体的认知环境提供了基础。在 认知规划方面,我利用 SLAM 算法提供的地图信息,结合智能体的感知能力,进行路径规划和决策,实现了认知导航。此 外,我们还利用 SLAM 算法的结果进行认知控制,实现了智能体对环境的自主感知和行动。
关键词:
视语言、语音识别、机器人平台、开源仿真环境、认知导航、认知规划、认知控制、SLAM 算法、ekfslam、 FastSLAM1、FastSLAM2、智能体、认知科学

概述
本实验报告旨在介绍一个基于认知科学原理的项目,通 过结合视语言、语音识别、机器人平台和开源仿真环境,构 建了一个单/多智能体的认知导航、认知规划和认知控制的 仿真算例。在该项目中,我们复现了 ekfslam、FastSLAM1 和 FastSLAM2 等三种 SLAM 算法,并通过实验结果的分析 和可视化展示,对这些算法的性能和表现进行评估。 在现代科技的快速发展中,智能导航和机器人系统的研 究已成为热点领域。在这个背景下,认知科学提供了一种理 论和方法框架,以增强智能体在环境中的感知、决策和行动 能力。视语言和语音识别技术为智能体提供了对环境的视觉 和语义信息的感知能力,机器人平台则为智能体的控制和执行提供了实现手段。
SLAM 算法作为一种基础技术,在智能导航和机器人系 统中起着重要的作用。它允许智能体在未知环境中进行自主 定位和地图构建,为导航、规划和控制提供了必要的环境信 息。本实验报告将着重研究和评估 ekfslam、FastSLAM1 和 FastSLAM2三种SLAM算法在认知导航、规划和控制方面 的性能,从而探索其在认知科学中的应用潜力。如图1所示。
通过实验结果的分析和对比,我们将深入探讨每个算法 的优势和局限性,从而为智能导航和机器人系统的发展提供 有价值的见解。此外,我们还将重点讨论本实验中的视语言、 语音识别和机器人平台的应用,以及其对认知导航、规划和控制的贡献。
SLAM的优势
定位问题:“我需要有地图,才能定位”
建图问题:“我需要有定位,才能建图”
SLAM:“定位和图我都不需要,我可以边建图边定位”
实验原理
本实验主要包含以下三种 SLAM 算法:
- EKF-SLAM
- FastSLAM 1.0
- FastSLAM 2.0
EKF-SLAM
EKF-SLAM(Extended Kalman Filter SLAM)是一种基 于扩展卡尔曼滤波器的SLAM算法。它通过使用非线性动 力学模型和非线性观测模型来估计机器人的位置和地图。EKF-SLAM 的核心思想是将机器人的状态表示为一个高斯 分布,通过递归地更新和估计机器人的位置和地图。EKF-SLAM 的算法步骤如图2所示。

卡尔曼滤波器
卡尔曼滤波器是一种用于估计系统状态的滤波器,其原理简单描述如下:
预测(Prediction)
- 状态预测:
- 先验协方差预测:
更新(Update)
- 卡尔曼增益:
- 状态更新:
- 协方差更新:
其中,xˆk 是状态估计值,Pk 是状态协方差矩阵,Fk 是 状态转移矩阵,Bk 是控制输入矩阵,uk 是控制输入,Qk 是过程噪声协方差矩阵,zk 是测量值,Hk 是测量模型矩阵, Rk 是测量噪声协方差矩阵,I 是单位矩阵。 卡尔曼滤波器通过预测和更新步骤,利用系统模型和测 量数据递归地估计系统的状态。
FastSLAM 1.0
FastSLAM 1.0 是一种基于粒子滤波器的 SLAM 算法。 它通过使用粒子滤波器来估计机器人的位置和地图。Fast- SLAM 1.0 使用了称为” 分解” 的方法,将机器人的状态估计 分解为对每个粒子进行独立估计的任务,从而提高了算法的 效率和精度。
算法流程如图 3 所示。

FastSLAM 2.0
FastSLAM 2.0 是 FastSLAM 系列算法的改进版本,也是一种基于粒子滤波器的 SLAM 算法。与 FastSLAM 1.0 相比,FastSLAM 2.0 引入了称为” 无向图” 的数据结构来表示地图, 从而进一步提高了算法的效率和精度。

粒子滤波器
粒子滤波器是一种基于蒙特卡洛方法的滤波器,用于对系统状态进行估计。它通过使用一组粒子来表示可能的系统状态,并根据观测数据对这些粒子进行加权更新,以得到对系统状态的估计。
三种 SLAM 算法的对比
EKF-SLAM、FastSLAM 1.0 和 FastSLAM 2.0 是三种不同的SLAM算法。EKF-SLAM使用卡尔曼滤波器来处理机器 人状态和地图的估计,而 FastSLAM 1.0 和 FastSLAM 2.0 使 用粒子滤波器来对机器人路径和地图进行估计。FastSLAM 2.0 在 FastSLAM 1.0 的基础上引入了 Rao-Blackwellized 粒子 滤波器,提高了定位和地图构建的精度。
传感器模型:传递函数如公式所示。
实验过程和结果分析
对于三种算法:
- EKF-SLAM
- FastSLAM 1.0
- FastSLAM 2.0
我都对结果进行了仿真的复现。
EKF-SLAM
这是一个基于扩展卡尔曼滤波(EKF) 的 SLAM 示例。 蓝线代表真实轨迹,黑线代表航位推算轨迹,红线代表使用 EKF SLAM 估计的轨迹。绿色的十字表示估计的地标点。仿 真结果如图 5 所示。
FastSLAM 1.0
FastSLAM 算法的实现基于粒子滤波器,属于概率 SLAM方法的一种。它可用于基于特征的地图或占据栅格地图,如 图6所示。如图 6 所示,粒子滤波器通过一组粒子表示机器人的估 计。每个单独的粒子具有独立的置信度,它包含姿态 (x, y, θ) 和一组地标位置 [(x1 , y1 ), (x2 , y2 ), ...(xn , yn )](n 个地标)。
蓝线是真实轨迹;红线是估计轨迹;红点表示粒子的分布;黑线表示航位推算轨迹;蓝叉表示观测和估计的地标;黑叉表示真实地标;换句话说,每个粒子维护一个确定性的 姿态和n个地标的扩展卡尔曼滤波器,并在每次测量时更新它们。
FastSLAM 2.0
仿真结果如图 7 所示。
基于 SLAM 的仿真规划实例
实验结果
我在代码中构建OccupancyGridMapping,一个用于处 理里程计和激光数据,并使用占据栅格图绘制结果的 Python 应用程序。该应用程序从config.yaml文件中读取输入数据集,处 理数据,并绘制一个占据栅格地图。如下图8所示。gif动画文件可见附件。
主要原理是基于占据栅格地图建图算法中的逆传感器模型(inversesensormodel),根据机器人的姿态和激光扫描结 果来更新地图的占据概率。逆传感器模型通过计算每个单元 格被占据的对数概率来表示单元格的占据状态,然后将计算得到的对数概率加到对应单元格的当前对数概率上,实现对 单元格占据概率的贝叶斯更新。通过对激光扫描结果进行处 理和转换,确定被占据的单元格和自由单元格,并更新地图 的对数概率。
这种占据栅格地图的建图方法常用于移动机器人的环境 感知和自主导航中,通过激光传感器获取环境信息,将其映 射到栅格地图上,用于机器人的路径规划和避障等任务。
主要包括了以下几个部分:
数据处理: 该算法能够处理来自机器人激光传感器的数 据,并将其转换为占据栅格地图的形式。通过对传感器数据 进行解析、处理和映射,提取环境信息并生成地图。
自主决策: 算法通过逆传感器模型将机器人的姿态和激 光扫描结果转化为地图上的占据概率,实现对地图的贝叶斯更新。机器人可以根据更新后的地图,进行路径规划、避障 和导航等决策,以实现自主移动和环境感知。
移动机器人导航: 占据栅格地图算法为移动机器人提供 了环境感知和导航的能力。机器人可以利用生成的地图进行 路径规划,避免障碍物,达到目标位置。
环境建模和监测: 占据栅格地图算法可以用于环境建模 和监测任务,如室内定位、三维地图重建等。机器人可以通 过扫描环境,生成地图并实时更新,从而对环境进行建模和 监测。
自主避障: 利用占据栅格地图,机器人可以识别和避免 障碍物。通过实时更新地图,机器人可以检测到新出现的障 碍物并规避,保证机器人的安全和导航效果。
占据栅格地图算法在机器人感知和决策中具有广泛的应用价值,为机器人提供了环境感知、路径规划和决策等功能,使机器人能够在复杂和未知的环境中自主地进行移动和任务 执行。它在自动驾驶、室内导航、环境监测和机器人控制等 领域有着重要的应用。
三种算法的性能分析
这三种算法的复杂度包括环境条件、传感器质量、算法实现和参数设置等。此外,不同的算法可能在不同的场景和 任务上表现更好。
然而,就整体而言,FastSLAM 2.0 通常被认为是比 EKF- SLAM和FastSLAM1.0更准确的算法,尤其是在具有大量 特征点(地标)的复杂环境中。这是因为 FastSLAM 2.0 使用 了一种粒子滤波器的变种,它能够更好地处理非线性和非高 斯的系统和测量模型。
相比之下,EKF-SLAM和FastSLAM1.0都使用了扩展 卡尔曼滤波器(EKF),该滤波器对非线性和非高斯的模型的 逼近可能会引入估计误差。尤其是在高度非线性的情况下, 如机器人在大幅度旋转或存在非线性传感器失真的情况下, EKF-SLAM 和 FastSLAM 1.0 可能会产生较大的估计误差。
然而,值得强调的是,算法的准确性还受到实际应用中 其他因素的影响。例如,传感器噪声、地标检测和数据关联的准确性、初始化质量以及算法参数的选择都会对准确性产生影响。因此,在具体的应用中,对于特定的问题和环境,综合考虑各种因素,选择适合的SLAM算法是必要的。
SLAM 在认知科学领域的发展前景和改进
经过一个学期的课堂学习和资料的查阅,我对 SLAM 这个算法,总结了一些可以改进的方面。
SLAM 算法在认知科学领域有着广阔的发展前景。随着传感器技术和计算能力的不断提高,SLAM算法可以在实 时、高精度的环境感知和自主导航中发挥越来越重要的作 用。以下是 SLAM 算法在认知科学领域的发展前景和一些 改进的替代方法:
1. 多传感器融合:将多种传感器数据(如激光雷达、摄 像头、惯性测量单元)融合在一起,可以提高SLAM算法的 鲁棒性和准确性。例如,将视觉 SLAM 与激光 SLAM 相结 合,可以在不同的环境条件下实现更好的感知和建图。
2. 深度学习与 SLAM 的结合:深度学习技术在图像处 理和感知任务中取得了重大突破,将其与 SLAM 算法结合 可以提高环境感知和地图构建的准确性。例如,通过深度学 习方法实现语义分割、目标检测和姿态估计,可以提供更丰 富的地图信息和语义理解。
3. 视觉惯性 SLAM(Visual-Inertial SLAM):结合视觉
和惯性传感器的信息可以提供更准确和鲁棒的位置和姿态估 计。视觉惯性 SLAM 在自主导航、增强现实和虚拟现实等领 域具有潜在的应用价值。
4. 非线性优化方法:改进 SLAM 算法的非线性优化方 法可以提高估计的准确性。例如,基于图优化的方法,如 因子图优化(Factor Graph Optimization)和非线性优化技术
(如 GTSAM),可以更好地处理大规模的 SLAM 问题,提高 估计的稳定性和精度。
5. 实时性和效率:随着实时应用需求的增加,改进 SLAM 算法的实时性和效率是一个重要的方向。例如,基于 快速搜索和并行计算的方法可以提高算法的运行速度,以适 应实时应用的要求。
附件
‘2D-slam-example/‘ 目录:slam 可视化仿真实例
‘SLAM/‘目录:slam 算法源代码
‘figs/‘目录:报告中图片原图
‘requirements/‘目录:代码执行环境配置
基于SLAM的规划算法仿真复现|SLAM|智能规划的更多相关文章
- 第二篇:基于K-近邻分类算法的约会对象智能匹配系统
前言 假如你想到某个在线约会网站寻找约会对象,那么你很可能将该约会网站的所有用户归为三类: 1. 不喜欢的 2. 有点魅力的 3. 很有魅力的 你如何决定某个用户属于上述的哪一类呢?想必你会分析用户的 ...
- SLAM学习笔记(2)SLAM算法
SLAM算法分为三类:Kalman滤波.概率滤波.图优化 Kalman滤波方法包括EKF.EIF:概率滤波包括RBPF,FastSLAM是RBPF滤波器最为成功的实例, 也是应用最为广泛的SLAM方法 ...
- 基于Modelsim的直方图统计算法仿真
一.前言 本篇主要针对牟新刚编著<基于FPGA的数字图像处理及应用>第六章第五节中直方图统计相关类容进行总结,包括代码实现及 基于Modelsim的仿真.书读百遍,其意自现. 2020-0 ...
- 《SLAM for Dummies》中文版《SLAM初学者教程》
SLAM for Dummies SLAM初学者教程A Tutorial Approach to Simultaneous Localization and Mapping 一本关于实时定位及绘图 ...
- 关于Lattice Planner规划算法的若干问答
Apollo问答 | 关于Lattice Planner规划算法的若干问答 上周,我们在Apollo开发者交流群内做了关于Lattice Planner的分享.这里,我们将社群分享里开发者提出的问 ...
- 基于FPGA的Cordic算法实现
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...
- RRT路径规划算法
传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...
- PRM路径规划算法
路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法:如人工势场法.单元分解法.随机路标图(PRM)法.快速搜索树(RRT)法等.传统的人工势场.单元分解法需要对空间中的 ...
- 路径规划: PRM 路径规划算法 (Probabilistic Roadmaps 随机路标图)
随机路标图-Probabilistic Roadmaps (路径规划算法) 路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法如: 1. A* 2. Djstar 3. ...
- RRT路径规划算法(matlab实现)
基于快速扩展随机树(RRT / rapidly exploring random tree)的路径规划算法,通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模,能够有效地解决高维空间和复杂约束的 ...
随机推荐
- 浅谈 Java 中的 AutoCloseable 接口
本文对 try-with-resources 语法进行了较为深入的剖析,验证了其为一种语法糖,同时给出了其实际的实现方式的反编译结果,相信你在看完本文后,关于 AutoCloseable 的使用你会有 ...
- 十六、企业级私有仓库harbor
系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...
- Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc. 此方法安装的是最新版的,但是此方法需要FQ,否则99%会失败,这就是为 ...
- ECharts大屏数据可视化展板项目 适配rem
1.在utils文件夹里新建一个rem.js 2.main.js中引入rem.js 3.vscode中下载cssrem插件,配置Root Font Size大小,为1920/20 = 96. 重启vs ...
- element-ui 实现行合并-亲测有效!
目标样式: 首先先来看下我们拿到的返回数据: scheduleList: [ { date: '第一天', journey: '报道', lecturer: '', }, { date: '第二天', ...
- 全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型
前言 我现在在准备做一个全流程的机器视觉的工程,之前做了很多理论相关的工作.大概理解了机器视觉的原理,然后大概了解了一下,我发现现在的库其实已经很发展了,完全不需要用到非常多的理论,只需要知道开发过程 ...
- 机器学习-概率图模型系列-隐含马尔科夫-维特比算法解码隐藏序列-HMM模型参数估计-36
目录 待补充 参考资料 刘建平博客 pinard
- 每天学五分钟 Liunx 100 | 存储篇:磁盘分区
这一节主要介绍 Liunx 是怎么用磁盘的. 磁盘分区 在 Liunx 中一切皆文件,磁盘在 Liunx 中也是文件,包括 /dev/hd[a-d](以 IDE 为接口) 和 /dev/sd[a-p] ...
- 使用docker compose 编排微服务发布
本文为博主原创,未经允许不得转载: 目录: 1. compose 简介 2. compose 安装 3. 编写 docker-compose.yml 实现微服务发布 4. docker-compose ...
- 14-Verilog for Verification
Verilog for Verification 1.引言 Testbench也是一个模块(module...endmodule) Testbench没有输入和输出,因为它是一个闭环,自己产生激励,灌 ...