当前位置: 首页 > news >正文

基于ROS先验地图的机器人自主定位与导航SLAM

2021年学习,当时参加科大讯飞的智能车大赛,
【语音交互启动-teb算法路径规划+A*算法自动避障+路径最短优化+yolo5目标检测+视觉结果判断分类+终点指定点位自动泊车+语音播报。】
【讯飞学院】http://www.iflyros.com/home/

一、全局路径规划中的地图

  1. 栅格地图(Grid Map)

    • 栅格地图是将环境离散化为一系列的方格或像素,每个栅格表示空间的一个单元。
    • 每个栅格具有一个二进制值(占用/空闲)或概率值来表达其被障碍物占用的可能性。
    • 优点:简单直观,适合处理复杂的室内环境。
    • 缺点:在大尺度环境中,存储和计算成本较高。
  2. 概率图(Cost Map)

    • 成本地图扩展了栅格地图的概念,除了标识障碍物外,还考虑了其他因素如接近障碍物的距离等。
    • 每个栅格不仅有占用状态,还有成本值,用以指导路径规划算法选择最优路径。
  3. 特征地图(Feature Map)

    • 特征地图利用特定的几何或视觉特征(如直线、角点、平面)来描述环境。
    • 这种地图形式有助于减少数据量并提高地图的解析度,适用于高精度需求的场景。
  4. 拓扑地图(Topological Map)

    • 拓扑地图关注的是节点之间的连接关系而非精确的空间位置。
    • 节点可以代表房间、走廊或其他重要地点,边则表示节点间的可达性。
二、全局路径规划算法
  1. Dijkstra 算法

    • 经典最短路径算法,适用于加权图中寻找两点间最短路径。
  2. 广度优先搜索算法(BFS)

    • 非加权图中寻找最短路径的有效方法,但不适用于带权重的地图。
  3. A * 搜索算法

    • 结合启发式信息的搜索算法,用于寻找从起点到终点的最短路径。
    • 变体包括:
      • 双向 A * 搜索算法:从起点和终点同时搜索以加快查找速度。
      • 重复 A * 搜索算法:当环境发生变化时重新规划路径。
      • Anytime Repairing A (ARA) 搜索算法**:在时间有限的情况下找到满意解,并随着更多时间可用不断改进解。
      • 实时学习 A * 搜索(LRTA)算法*:适应动态变化环境的在线版本。
      • 实时适应性 A * 搜索(RTAA)算法*:结合了ARA和LRTA的优点。
  4. 动态 A * 搜索(D)算法*

    • 适用于存在动态障碍物的情况,能够在未知或部分已知环境下工作。
  5. 终身规划 A * 搜索算法

    • 一种增量式搜索算法,能够高效更新路径。
  6. Anytime D * 搜索算法

    • 分为两种情况,变动较小和变动较大,分别针对不同的环境变化程度优化路径。
  7. 快速随机搜索树(RRT)算法

    • 通过随机采样探索空间,适用于高维空间和复杂环境。
  8. 目标偏好 RRT 算法

    • 增强版RRT,增加了向目标方向生长的趋势。
  9. 双向快速扩展随机树(RRT_CONNECT)算法

    • 使用两个RRT,一个从起始点开始,另一个从目标点开始,直到它们相连。
  10. Extended_RRT 算法

    • 改进的RRT,提高了在狭窄通道中的性能。
  11. 动态 RRT 算法

    • 针对动态障碍物设计的RRT变种。
  12. 快速行进树(FMT)算法*

    • 一种基于采样的渐近最优路径规划算法。
  13. Batch Informed 树(BIT)算法*

    • 在保持渐近最优的同时,减少了样本数量。
三、局部路径规划算法
  1. 人工势场法

    • 利用虚拟力的概念引导机器人避开障碍物并向目标移动。
    • 优点:概念简单,易于实现。
    • 缺点:容易陷入局部极小值,不适合复杂环境。
  2. 动态窗口法(Dynamic Window Approach, DWA)

    • 该算法考虑到机器人的动力学约束,在可行的速度范围内寻找最佳运动指令。
    • 优点:
      • 计算复杂度低,适合实时应用。
      • 实现避障功能。
      • 适用于差分驱动和全向移动平台。
    • 缺点:
      • 前瞻性不足,难以处理复杂障碍。
      • 动态避障效果一般。
      • 不保证全局最优路径。
      • 对于阿克曼转向模型车模可能不是最佳选择。

四、传感器融合与状态估计
  • 多传感器数据融合
    • 传感器选择(激光雷达、摄像头、超声波传感器等)
    • 融合方法(加权平均、贝叶斯滤波、粒子滤波等)
  • 卡尔曼滤波器及其变种(EKF, UKF)
    • 状态预测与更新
    • 参数调整与调优
  • SLAM(Simultaneous Localization and Mapping)
    • 视觉SLAM(vSLAM)
    • 激光SLAM(LiDAR SLAM)
    • 融合SLAM(多传感器)
五、实践案例与项目
  • 开源工具链介绍
    • ROS中的navigation stack详解
    • Gazebo仿真环境使用指南
  • 实际应用场景示例
    • 室内服务机器人导航
    • 工业自动化巡检机器人
    • 自动驾驶车辆的城市道路导航
  • 项目实施步骤指南
    • 从零开始搭建一个SLAM系统
    • 数据集采集与标注
    • 性能评估与结果分析
六、高级主题
  • 深度学习在机器人导航中的应用
    • 使用卷积神经网络(CNNs)进行特征提取
    • 强化学习算法用于决策制定
  • 强化学习与自主决策
    • Q-learning, DQN, PPO等算法的应用
    • 在未知环境中探索与学习
  • 新兴技术和未来趋势
    • 边缘计算与云计算结合
    • 5G通信对机器人导航的影响
    • 量子计算潜在的应用可能性
七、特定技术集成与应用
  • 语音交互启动
    • 集成语音识别API(如Google Speech-to-Text, Amazon Alexa Voice Service)
    • 自然语言处理(NLP)以解析命令
    • 语音合成技术实现反馈播报
  • TEB算法路径规划 + A*算法自动避障
    • TEB Local Planner (Trajectory Rollout & Elastic Band) 的原理与ROS实现
    • A*搜索算法的改进与应用
    • 实时避障策略与动态障碍物处理
  • YOLOv5目标检测
    • YOLOv5训练与部署流程
    • 目标分类与跟踪
    • 结合ROS进行实时物体识别
  • 视觉结果判断分类
    • 物体检测后的语义分割
    • 基于深度学习的场景理解
  • 终点指定点位自动泊车
    • 泊车路径规划算法
    • 控制策略设计(PID控制、模型预测控制MPC)
    • 安全性与可靠性保障措施
  • 语音播报
    • 文本到语音转换(TTS)技术
    • 实现人性化的用户交互体验

相关文章:

基于ROS先验地图的机器人自主定位与导航SLAM

2021年学习,当时参加科大讯飞的智能车大赛, 【语音交互启动-teb算法路径规划A*算法自动避障路径最短优化yolo5目标检测视觉结果判断分类终点指定点位自动泊车语音播报。】 【讯飞学院】http://www.iflyros.com/home/ 一、全局路径规划中的地图 栅格地图&…...

计算机网络与服务器

目录 架构体系及相关知识 三层架构: 四层架构: 常见的应用的模式: OSI模型 分层 数据链路层 TCP/IP模型 TCP和UDP都是传输层的协议 TCP三次握手、四次次分手 URL&HTTP协议详解 网址URL 结构化 报文行 报文头 空行 报文体…...

IP查询于访问控制保护你我安全

IP地址查询 查询方法: 命令行工具: ①在Windows系统中,我们可以使用命令提示符(WINR)查询IP地址,在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息; ②在Linux系统中&…...

在 ASP.NET CORE 中上传、下载文件

创建 Web API 来提供跨客户端和服务器的文件上传和下载是常有的事。本文将介绍如何通过 ASP.NET CORE 来实现。 首先在 Visual Studio 中创建空的 Web API 项目,然后选择目标框架 .Net Core 3.1。 创建名为 FileController 的控制器,提供操作文件的接口…...

ETCD未授权测试

一、测试环境搭建 首先拉取etcd镜像 docker pull quay.io/coreos/etcd:v3.3.1 # 查看镜像 docker images创建自定义网络 docker network create --driver bridge --subnet172.16.1.0/16 --gateway172.16.1.1 mynet # 查看网络 docker network ls创建etcd节点 节点1: docke…...

ffmpeg将mp4等文件转mp3

安装ffmpeg 目录 安装ffmpeg macOS Windows 实现方法 Base Golang macOS 在macOS上,你可以使用Homebrew来安装FFmpeg,这是最简单和推荐的方法。以下是具体步骤: ‌安装Homebrew‌(如果尚未安装): 打开终端,执行以下命令来安装Homebrew: /bin/bash -c "$(c…...

python学习笔记—15—数据容器之列表

1. 数据容器 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict) 2. 列表 (1) 定义 tmp_list ["super", "carry", "doinb"] print(f"tmp_list {tmp_list}, tmp_list type is {type(tmp_list)}") tmp_list1 ["doi…...

基于MATLAB的汽车热管理模型构建

一、引言 汽车热管理系统对汽车性能、部件寿命及驾乘体验至关重要。它能确保发动机、电池等关键部件在适宜温度工作。MATLAB 功能强大,为构建高精度热管理模型提供有效途径,助力优化系统设计与控制策略。 二、汽车热管理系统构成 2.1 发动机冷却系统&…...

MySQL的主从复制

MySQL 主从复制详解 MySQL 的主从复制是一种用来实现数据同步的机制,可以将一个 MySQL 实例的数据同步到一个或多个从库(Slave)实例中。它广泛应用于数据备份、高可用架构、读写分离、负载均衡等场景。 1. 主从复制的基本概念 主库&#xff…...

playwright 录制

一、新建项目TestProject3 二、准备swagger 三、开始录制 打开PowerShell 7 (x64) cd D:\xxx\xxx\VS2022Projects\TestProject3\TestProject3\bin\Debug\net8.0 pwsh playwright.ps1 codegen --targetcsharp -b chromium localhost:5252/swagger/index.html #支持的语言 java…...

Azure主机windows2008就地升级十步

Azure上云主机的windows2008系统需要进行就地升级。 按着微软的升级路径:win2008-->win2012-->win2016-->win2022 第一步:创建快照备份,防止升级失败第二步:升级托管磁盘,在VM管理的地方将磁盘升级成托管磁盘…...

MySQL 主从复制 的原理、配置和如何实现 主从灾备

1. MySQL 主从复制原理与工作流程 MySQL 的主从复制本质上是一个 基于事件的日志传输系统。在这个系统中,所有对数据的修改(如 INSERT、UPDATE 和 DELETE)会在 主数据库 上记录到 二进制日志(binlog),然后…...

本地多卡(3090)部署通义千问Qwen-72B大模型提速实践:从龟速到够用

最近在做文本风格转化,涉及千万token级别的文本。想用大模型转写,在线的模型一来涉及数据隐私,二来又不想先垫钱再找报销。本地的7-9B小模型又感觉效果有限,正好实验室给俺配了4卡3090的机子,反正也就是做个推理&#…...

高级数据库系统 复习提纲

第一章 数据库技术的回顾与发展 简述三代数据库的发展历史及其对应特点: 新型数据库在“数据模型”上的创新: 简述数据库和什么相关技术结合,产生了什么新型数据库? 1. 数据库和并行处理技术结合,产生“并行数据库”…...

Python编程实例-特征向量与特征值编程实现

特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…...

十年后LabVIEW编程知识是否会过时?

在考虑LabVIEW编程知识在未来十年内的有效性时,我们可以从几个角度进行分析: ​ 1. 技术发展与软件更新 随着技术的快速发展,许多编程工具和平台不断更新和改进,LabVIEW也不例外。十年后,可能会有新的编程语言或平台…...

第6章——HTTP首部

第六章——HTTP首部 HTTP报文结构 ​ 都必有报文首部 HTTP请求报文 HTTP响应报文 HTTP首部字段 ###传递重要信息 首部字段结构 ​ 首部字段名:字段值(,字段值,字段值) 首部字段类型 ​ 通用首部字段 请求首部字…...

Java多线程

一、线程的简介: 1.普通方法调用和多线程: 2.程序、进程和线程: 在操作系统中运行的程序就是进程,一个进程可以有多个线程 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念; 进程则是执行程序的一次执…...

C++ 复习总结记录四

C 复习总结记录四 主要内容 1、构造函数其它要点 2、static 成员 3、友元 4、内部类 5、匿名对象 6、拷贝对象时编译器的优化 一 构造函数其它要点 1.1 构造函数体赋值 创建对象时,编译器调用构造函数,给对象中各个成员变量一个合适初始值 cl…...

Oracle Dataguard 需要配置的参数详解

Oracle Dataguard 需要配置的参数详解 目录 Oracle Dataguard 需要配置的参数详解一、数据库名:DB_NAME二、数据库唯一名:DB_UNIQUE_NAME三、LOG_ARCHIVE_CONFIG四、LOG_ARCHIVE_DEST_1五、LOG_ARCHIVE_DEST_2六、LOG_ARCHIVE_DEST_3七、LOG_ARCHIVE_DES…...

Java 内部类与异常类

目录 1.Java 内部类 2.Java 匿名类 1. 匿名类继承一个父类 2. 匿名类实现一个接口 3.Java 异常类 4.Java 异常的分类 1. Throwable类 2. Error类 3. Exception类 5.Java 常见的异常 1. NullPointerException(空指针异常) 2. ClassCastException(类转换异常) 3. In…...

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径,单位:mm h 5; % 圆盘厚度,单位:mm P 300; % 径向受压载荷大小,单位&#xff…...

补偿电阻对ota零极点的影响

本文内容主要是关于补偿电阻对零极点产生的影响。 1.极点分析 该补偿电阻并不会影响在输出端的主极点,受影响的主要是镜像极点。 这里我们可以先单看电流镜部分,这个补偿电阻的作用在于将极点推向原来的两倍,从而达到增加带宽的目的[1]。 …...

C++单例模式跨DLL调用问题梳理

问题案例: 假设有这样一个单例模式的代码 //test.h header class Test { public:static Test &instance() {static Test ins;return ins;}void foo(); };void testFoo();//test.cpp source #include "test.h"void Test::foo() {printf("%p\n&q…...

Linux高并发服务器开发 第十天(man手册 系统调用 文件打开关闭 文件创建权限)

目录 1.文件IO 1.1man 手册 1.2系统调用 1.3操作函数 1.3.1打开文件 1.3.2关闭文件 1.4文件创建权限 1.文件IO 1.1man 手册 man man 可以查看。man手册共 9 卷。 可执行程序、shell命令。系统调用函数。(内核提供的函数)库函数第 5 卷。查看特殊…...

用CRD定义未来:解锁机器学习平台的无限可能

Kubernetes CustomResourceDefinition(CRD)详解 一、CRD 概述 CRD(CustomResourceDefinition,自定义资源定义)是 Kubernetes 提供的一种机制,用于用户自定义新的资源类型。CRD 扩展了 Kubernetes API&…...

A second-price auction

第二价格密封拍卖(A second - price auction)是一种常见的拍卖形式,以下是一个用收益矩阵(Payoff Matrix)来说明第二价格密封拍卖的例子: 假设有三个竞拍者:A、B、C,他们对一件古董…...

MacBook_Xcode_Swift雨燕

Swift Swift Swift Swift是苹果公司开发的现代化编程语言, 专为Apple平台设计。其简洁语法、类型安全、Optionals处理、Playgrounds交互式环境、泛型编程、协议与扩展、闭包功能、枚举与关联值、结构体与类的高效内存管理、异步编程的async/await语法、Swift Packa…...

力扣面试题 - 08.07.无重复字符串的排列组合 C语言解法 回溯递归dfs深度优先

题目: 无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。 示例 1: 输入:S "qwe"输出:["qwe", "qew", "wqe", "…...

数值分析速成复习笔记

请确保你有10hour的有效学习时间,保你拿90 证明部分 编程部分...

1.07 标准IO

1.思维导图 2.先编写以下结构体 struct Student { char name[20]; double math; double chinese; double english; double physical; double chemical; double…...

单片机实现模式转换

[任务] 要求通过单片机实现以下功能: 1.单片机有三种工作模式(定义全局变量MM表示模式,MM1,2,3表示三种不同的模式) LED控制模式 风扇控制模式 蜂鸣器控制模式 2.可以在某一个模式下通过拓展板KEY1按键控制设备 (按…...

JVM实战—OOM的定位和解决

1.如何对系统的OOM异常进行监控和报警 (1)最佳的解决方案 最佳的OOM监控方案就是:建立一套监控平台,比如搭建Zabbix、Open-Falcon之类的监控平台。如果有监控平台,就可以接入系统异常的监控和报警,可以设置当系统出现OOM异常&…...

GolangWeb开发- net/http模块

文章目录 Golang开发-案例整理汇总一、net/http介绍二、HTTP客户端Get请求Post请求三、HTTP服务端总结Golang开发经典案例,点击下方链接 Golang开发-案例整理汇总 一、net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现。 文档链接: https://pkg.go.dev/n…...

算法:线性查找

线性查找算法是一种简单的查找算法,用于在一个数组或列表中查找一个特定的元素。它从数组的第一个元素开始,逐个检查每个元素,直到找到所需的元素或搜索完整个数组。线性查找的时间复杂度为O(n),其中n是数组中的元素数量。 实现原理 从列表的第一个元素开始,逐个检查每个…...

基于 Boost.Asio 和 Boost.Beast 的异步 HTTP 服务器(学习记录)

已完成功能: 支持 GET 和 POST 请求的路由与回调处理。 解析URL请求。 单例模式 管理核心业务逻辑。 异步 I/O 技术和 定时器 控制超时。 通过回调函数注册机制,可以灵活地为不同的 URL 路由注册处理函数。 1. 项目背景 1.1 项目简介 本项目是一个基于…...

『SQLite』常见函数的使用

摘要:主要讲解SQLite中的常见函数,有聚合函数、数字函数、字符串函数、日期函数、类型转换函数等。 主要函数 聚合函数:count()、sum()、avg()、min()、max()字符串函数:length()、upper()、lower()、substr()、trim()日期和时间…...

win下搭建elk并集成springboot

一、ELK 是什么? ELK 实际上是三个工具的集合,Elasticsearch Logstash Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。 ElasticSearch ElasticSearch 是一个基于 Lucen…...

ABAQUS柱状晶模型基于泰森多边形建模

建立柱状晶几何模型进行有限元分析有助于深入理解材料的微观结构与宏观性能之间的关系,为材料设计、制造工艺优化及失效预测提供了强有力的工具。本案例介绍采用AutoCAD基于泰森多边形算法生成柱状晶三维几何部件,并导入Abaqus有限元软件内建立包含晶粒及…...

MySQL InnoDB常用锁总结(行锁、间隙锁、临键锁、表锁)

在高并发数据库系统中,锁机制是保障数据一致性和事务隔离性的重要手段。MySQL 的 InnoDB 存储引擎提供了多种锁类型,包括行锁、间隙锁、临键锁和表锁。本文将详细介绍这些锁的原理、使用场景及其注意事项,并结合案例进行说明。 1. 表锁 概念…...

Flink系统知识讲解之:如何识别反压的源头

Flink系统知识之:如何识别反压的源头 什么是反压 Ufuk Celebi 在一篇古老但仍然准确的文章中对此做了很好的解释。如果您不熟悉这个概念,强烈推荐您阅读这篇文章。如果想更深入、更低层次地了解该主题以及 Flink 网络协议栈的工作原理,这里有…...

UE5行为树浅析

Tree 什么是树? 树是由节点或顶点和边组成的数据结构,没有任何循环。没有节点的树称为空树或空树。 非空的树由根节点和可能形成层次结构的多层附加节点组成。 树是一种数据结构树由点和有向边组成树是连通的,可达的树有执行顺序树没有环 …...

大模型测试-数飞机个数

时间是2025年1月7日,测试下各大网页端大模型的多模态识图能力。 测试题目 图片 问题 标记一下图里的飞机,并数一下飞机的个数 测试结果 千问qwen 在这张图片中,我可以看到总共12架飞机。以下是它们的位置标记:左上角跑道上有…...

Ubuntu挂载Windows 磁盘,双系统

首先我们需要在终端输入这个命令,来查看磁盘分配情况 lsblk -f 找到需要挂载的磁盘,检查其类型( 我的/dev/nvme2n1p1类型是ntfs,名字叫3500winData) 然后新建一个挂载磁盘的目录,我的是/media/zeqi/3500wi…...

快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)

1 关于Let’s Encrypt与Cerbot DNS验证 Let’s Encrypt 是一个提供 免费证书 的 认证机构。 Cerbot 是 Let’s Encrypt 提供的一个工具,用于自动化生成、验证和续订证书。 DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证,DNS …...

【项目】修改远程仓库地址、报错jdk

一、修改远程仓库地址 进入你刚刚克隆到本地的仓库目录&#xff0c;执行以下命令来修改远程仓库的 URL&#xff0c;将其指向你自己的新仓库&#xff1a; cd 原仓库名 git remote set-url origin <你自己的新仓库的 Git 地址>二、运行报错 多数jdk版本问题 三、 知识图…...

.NET体系架构

引言 .NET是由微软开发的一个广泛应用的开发平台&#xff0c;旨在帮助开发者构建各种类型的应用程序&#xff0c;包括桌面应用、Web应用、移动应用和云服务。最初&#xff0c;.NET平台的构建主要集中在Windows环境上&#xff0c;但随着.NET Core和随后.NET 5及以上版本的推出&…...

MTK平台-- 无线AP隔离功能

前言: 无线AP上大都有一个选项:启用该功能后,连接到同一AP的无线终端之间不能互相通信,但该功能并不限制无线终端和有线终端之间的通信。 Hostapd参数ap_isolate,用于控制AP隔离,但hostapd本身并不实现这一功能,只是将该参数通过nl80211传递给mac80211,由mac80211来实…...

初学stm32 --- 电源监控

目录 STM32 电源监控介绍 上电/掉电复位POR/PDR&#xff08;F1&#xff09; 可编程电压检测器(PVD)&#xff08;F1&#xff09; PVD相关寄存器介绍&#xff08;F1&#xff09; 电源控制寄存器 PWR_CR 电源控制/状态寄存器 PWR_CSR PVD相关HAL库驱动介绍 PVD的使用步骤 …...

小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式

这一节目标是实现底部推荐商品的结构和样式&#xff0c;由于这里要求横向滚动&#xff0c;所以需要使用上节介绍的 scroll-view 功能&#xff0c;并使用 scroll-x 属性支持横向滚动&#xff0c;推荐商品区域中的每一个商品是一个单独的 view&#xff0c;每个view 中需要写三个组…...