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

在任何机器人上实施 ROS 导航堆栈的指南

文章目录

  • 路径规划
  • 参考

路径规划

路径规划是导航的最终目标。这允许用户向机器人给出目标姿势,并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切(地图绘制和本地化)的汇集点。ROS 导航堆栈已经为我们完成了繁重的工作,就像我们在地图绘制和本地化中看到的那样。导航的路径规划部分是在名为 move_base 的包中实现的。在我们开始使用这个包之前,了解全局并了解关键细节非常重要。

使用的 ROS 节点:move_base

在这里插入图片描述
中间的大方框代表move_base节点,它是ROS导航堆栈的核心。它订阅了多个主题,包括映射部分中介绍的map_server 节点和本地化部分中介绍的amcl 节点。在 move_base 节点中,有很多事情需要在继续之前理解。

在 move_base 节点中,该图显示了四个主要项目。让我们一一了解它们。

  • global_planner
  • local_planner
  • global_costmap
  • local_costmap

Planner是一种算法,用于计算机器人从当前位置到用户提供的目标位置的路径。在 ROS 中,规划器依靠称为成本图的地图 来生成计划。稍后将解释成本图。让我们花一些时间来了解 move_base 节点中发挥作用的各种规划器。

move_base节点包括两种规划器——全局规划器和局部规划器。global_planner输出机器人从当前位置到目标位置的路径。ROS 中实现的几种不同的算法/规划器可以实现全局规划。常见的是 – carrot_planner 、 navfn 和 global_planner 。用户可以选择使用哪个 global_planner。此外,在使用任何这些全局规划器之前,用户需要配置一些参数。参数列表在此处给出。现在,对 global_planner 在宏观导航方案中的作用有了基本的了解,同样重要的是要提到 global_planner 依赖 global_costmap 来创建计划。在介绍成本图之前,我们还需要了解一下 local_planner。

local_planner还生成机器人在给定环境中移动的计划或路径。globa_planner 创建的计划将传递给 local_planner 执行。local_planner 依赖于 local_costmap 并生成一个本地计划,其中考虑了激光和里程计数据。有几个本地规划器可供使用。常见的是 – base_local_planner、dwa_local_planner、eband_local_planner、teb_local_planner。到目前为止,我们已经了解到 global_planner 和 local_planner 都依赖于代价图。让我们研究一下它们到底是什么。

ROS 中的成本图是2D 或 3D 占用网格矩阵/地图,其中每个网格或单元格都分配有 0 到 255 之间的值/成本。每个单元格中的值或成本用于由 globa_planner 和 local_planner 规划路径。这些值指示给定网格是空闲的、已占用的还是未知的。如果单元格是空闲的,则为其分配成本 0,如果单元格包含障碍物,则为其分配更高的值,例如 254。包含障碍物的单元格的成本基于以下因素膨胀(分散到)周围的单元格:用户指定的膨胀半径。请参阅本页有关“通货膨胀”的部分。要了解有关成本图的更多信息,请参阅 ROS wiki上的此页面以及此页面。这里还提供了一个简短的定义。此时,您可能想知道成本图是如何创建的?

首先,必须初始化代价图。这可以通过从本教程的映射部分中介绍的 map_server 节点提供静态地图或提供区域的固定宽度和高度来完成。ROS 导航堆栈使用两个成本图 - 一个称为global_costmap,由 global_planner 用于在整个环境上创建长期计划,第二个称为local_costmap,由 local_planner 用于创建短期计划,同时考虑到环境中的障碍物信息。我们主要使用静态映射来初始化global_costmap。请注意,为了使用用户提供的静态地图(通过map_server节点)初始化costmap,它必须与amcl节点结合使用,以便可以在地图框中注册障碍物信息。最后,我们通过给 local_costmap 一个固定的宽度和高度来初始化它。初始化后,当机器人在环境中移动时,local_costmap 会根据传感器数据进行更新。因此,如果在创建静态地图后将新对象/障碍物添加到环境中,它们将显示在 local_costmap 中,但不会显示在 global_costmap 中。

总结上面提出的概念, move_base 节点包含两个规划器 - 全局规划器依赖于基于 global_costmap 生成全局规划,而 local_planner 依赖于 local_costmap 来生成局部规划。简而言之,近距离路径规划的优化由local_planner完成,全路径由global_planner优化。这两个规划器和他们的成本图一起工作,为机器人创建一条路径,通过避开障碍物将其从一个点带到另一个点。

这就是 move_base 节点的概念部分。接下来,我们将开始使用它来使机器人在环境中自主移动。然而,我们需要首先满足先决条件,就像我们在地图绘制和本地化中所做的那样。

参考

https://prabhjotkaurgosal.com/a-guide-to-implementing-ros-navigation-stack-on-your-robot/4/

http://www.lryc.cn/news/228636.html

相关文章:

  • Android 中注解的使用
  • 我国陆地遥感卫星发展现状与展望
  • arcgis基础篇--实验
  • 【chatglm3】(3):在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功!附视频演示。
  • python爬虫top250电影数据
  • STL简介+浅浅了解string——“C++”
  • wpf 和winform 的区别
  • 【Apifox】国产测试工具雄起
  • PNAS | 蛋白质结构预测屈服于机器学习
  • PlayCanvas通过IFrame嵌入页面如何与canvasplay脚本通讯
  • springboot整合Redis后间歇性io.lettuce.core.RedisCommandTimeoutException
  • 基于springboot+vue的学生毕业离校信息网站
  • 基于C#+WPF编写的调用讯飞星火大模型工具
  • 科普测量开关电源输出波形的三种方法及电源波形自动化测试步骤
  • 【优化版】DOSBox及常用汇编工具的详细安装教程
  • 【Devchat 插件】创建一个GUI应用程序,使用Python进行加密和解密
  • 运行pytest时,给出警告 PytestConfigWarning: Unknown config option: result_log
  • 初始MySQL(五)(自我复制数据,合并查询,外连接,MySQL约束:主键,not null,unique,foreign key)
  • ssh秘钥登录
  • Vue3+NodeJS 接入文心一言, 发布一个 VSCode 大模型问答插件
  • VUE element组件生成的全选框如何获取值
  • 第三章:代码块
  • javaEE案例,前后端交互,计算机和用户登录
  • 安卓学习记录
  • gradle 使用记录
  • 电源基础元件
  • [RK-Linux] updateEngine工具使用以及代码分析
  • MySQL | 数据库的表的增删改查【进阶】
  • 爱剪辑如何将视频旋转90度,详细操作流程
  • 三国杀中的概率学问题3——王荣