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

图片来自百度百科

前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

高质量博客汇总https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482


项目代码

Simulation-and-Reproduction-of-Planning-Algorithm-Based-on-SLAMhttps://github.com/Yufccode/Simulation-and-Reproduction-of-Planning-Algorithm-Based-on-SLAM

摘要

本实验报告旨在介绍一个基于认知科学原理的实验项目,该项目结合了视语言、语音识别、机器人平台以及开源仿 真环境,复现了一个单/多智能体的认知导航、认知规划和认知控制的仿真算例。本报告涵盖了对 ekfslam、FastSLAM1 和 FastSLAM2 等三种 SLAM 算法的复现实验,以及利用 Python 绘制图表和对实验结果进行分析的过程。在本实验中,智能 体的智能表现体现在多个方面。首先,通过应用 SLAM 算法,智能体能够自主定位和构建环境地图,展示了其对环境的感 知能力。其次,结合视语言和语音识别技术,智能体可以感知和理解视觉和语义信息,实现了跨模态的感知与交互能力。 最后,通过机器人平台的应用,智能体可以控制自身的行动,包括导航、路径规划和避障等。同时,本实验还突出了认知 科学的重要性。通过 SLAM 算法的应用,我们实现了智能体的自主定位和地图构建,为智能体的认知环境提供了基础。在 认知规划方面,我利用 SLAM 算法提供的地图信息,结合智能体的感知能力,进行路径规划和决策,实现了认知导航。此 外,我们还利用 SLAM 算法的结果进行认知控制,实现了智能体对环境的自主感知和行动。

关键词:

视语言、语音识别、机器人平台、开源仿真环境、认知导航、认知规划、认知控制、SLAM 算法、ekfslam、 FastSLAM1、FastSLAM2、智能体、认知科学 

Fig.1 SLAM定位建图示意图

概述

本实验报告旨在介绍一个基于认知科学原理的项目,通 过结合视语言、语音识别、机器人平台和开源仿真环境,构 建了一个单/多智能体的认知导航、认知规划和认知控制的 仿真算例。在该项目中,我们复现了 ekfslam、FastSLAM1 和 FastSLAM2 等三种 SLAM 算法,并通过实验结果的分析 和可视化展示,对这些算法的性能和表现进行评估。 在现代科技的快速发展中,智能导航和机器人系统的研 究已成为热点领域。在这个背景下,认知科学提供了一种理 论和方法框架,以增强智能体在环境中的感知、决策和行动 能力。视语言和语音识别技术为智能体提供了对环境的视觉 和语义信息的感知能力,机器人平台则为智能体的控制和执行提供了实现手段。

SLAM 算法作为一种基础技术,在智能导航和机器人系 统中起着重要的作用。它允许智能体在未知环境中进行自主 定位和地图构建,为导航、规划和控制提供了必要的环境信 息。本实验报告将着重研究和评估 ekfslam、FastSLAM1 和 FastSLAM2三种SLAM算法在认知导航、规划和控制方面 的性能,从而探索其在认知科学中的应用潜力。如图1所示。

通过实验结果的分析和对比,我们将深入探讨每个算法 的优势和局限性,从而为智能导航和机器人系统的发展提供 有价值的见解。此外,我们还将重点讨论本实验中的视语言、 语音识别和机器人平台的应用,以及其对认知导航、规划和控制的贡献。

SLAM的优势

定位问题:“我需要有地图,才能定位”

建图问题:“我需要有定位,才能建图”

SLAM:“定位和图我都不需要,我可以边建图边定位”

实验原理

本实验主要包含以下三种 SLAM 算法:

  1. EKF-SLAM
  2. FastSLAM 1.0
  3. FastSLAM 2.0

EKF-SLAM

EKF-SLAM(Extended Kalman Filter SLAM)是一种基 于扩展卡尔曼滤波器的SLAM算法。它通过使用非线性动 力学模型和非线性观测模型来估计机器人的位置和地图。EKF-SLAM 的核心思想是将机器人的状态表示为一个高斯 分布,通过递归地更新和估计机器人的位置和地图。EKF-SLAM 的算法步骤如图2所示。

Fig.2 EKF-SLAM 算法流程

卡尔曼滤波器

卡尔曼滤波器是一种用于估计系统状态的滤波器,其原理简单描述如下:

预测(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 所示。

Fig.3
Fig.3 FastSLAM 1.0 算法流程

FastSLAM 2.0

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

Fig.4 FastSLAM2.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 粒子 滤波器,提高了定位和地图构建的精度。

传感器模型:传递函数如公式所示。

实验过程和结果分析

对于三种算法:

  1. EKF-SLAM
  2. FastSLAM 1.0
  3. 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/‘目录:代码执行环境配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/62319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给大家推荐9个Linux高效运维命令技巧!

文章目录 前言一、实用的 xargs 命令二、命令或脚本后台运行三、找出当前系统内存使用量较高的进程四、找出当前系统CPU使用量较高的进程五、同时查看多个日志或数据文件六、持续ping并将结果记录到日志七、查看tcp连接状态八、查找80端口请求数最高的前20个IP九、ssh实现端口转…

STM32F429IGT6使用CubeMX配置GPIO点亮LED灯

1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、生成工程配置 5、部分代码 6、实验现象

【LeetCode每日一题】——575.分糖果

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 575.分糖果 四【题目描述】 Alice 有 n 枚糖&…

WLRYJ-300型微流控芯片真空热压机

WLRYJ-300型微流控芯片真空热压机 关键词:微流控芯片,热压封合,LNP合成芯片 WLRYJ-300型微流控芯片真空热压机是一款应用于PMMA、PC、PP、COP、COC、BOPET、CBC、树脂(部分)、聚乙烯(部分)等硬质…

el-table那些事

el-table那些事 1、获取el-table所有勾选的行数据2、el-table自定义列标题3、el-table列可编辑,加入el-input等 用于记录工作和日常学习遇到的坑,需求。 vue3element-plusts 1、获取el-table所有勾选的行数据 1、需要先声明一个ref变量,并赋…

01 - 工作区、暂存区、版本库、远程仓库 - 以一次连贯的提交操作为例

1. 工作区、暂存区、版本库、远程仓库 以一次连贯的提交操作为例。 1.1 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹。 新建一个kongfu_person.txt文件,工作区的变化: 1.2 工作区 > 暂存区:git add 1.3 暂存区 > 版本库…

LNMP应用

目前成熟的企业网站应用模式之一,指的是一套协调工作的系统和相关软件 能够提供静态页面的服务,也可以提供动态Web服务 LNMP LNMP介绍 L :Linux系统 ,操作系统 N:Ngin提供网站服务,前端,提…

leetcode经典算法——快速幂

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 暴力方法肯定是循环循环n次, 每一次*x 显然此方法遇到大的数字会超时 那么我们要引进一个思想,快速幂算法 例如: x^97 我们可以看出&a…

小程序的api使用 以及一些weui组件实列获取头像 扫码等

今日目标 响应式单位rpx小程序的生命周期 【重点】20%小程序框架 weui 【重点】 50%内置API 【重点】30%综合练习 1. 响应式rpx 1.1 rpx单位 rpx是微信小程序提出的一个尺寸单位,将整个手机屏幕宽度分为750份,1rpx 就是 1/750,避免不同手…

vmwera中安装的centos8出现ifconfig不可用

刚刚在虚拟机中装好centos结果发现自己的ifconfig命令不可用。 看一下环境变量里有没有ifconfig命令的路径,因为ifconfig是在/sbin路径下的,root用户登录进去才可以运行,先看一下root用户的环境变量。 root用户的环境变量里是有/sbin路径的&a…

CI/CD—K8S 基本理解与部署

1 K8S 是什么 Kubernetes 是一款容器的编排调度工具,来源于 Google 开源的 Brog 系统。Kubernetes简称K8S,是用8代替8个字符 “ubernete” 而成的缩写,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化…

springboot工程集成前端编译包,用于uni-app webView工程,解决其需独立部署带来的麻烦,场景如页面->画布->图片->pdf

前端工程 访问方式 http://127.0.0.1:8080/context/frontEnd/index放行 public class SecurityConfig extends WebSecurityConfigurerAdapter { "/frontEnd/**",SysFrontEndController import lombok.extern.slf4j.Slf4j; import nl.basjes.shaded.org.springfram…