福田做商城网站建设哪家效益快,天津建筑工程公司有哪些,广州互联网公司集中在哪个区,怎么免费申请个人网站文章目录 路径规划参考 路径规划
路径规划是导航的最终目标。这允许用户向机器人给出目标姿势#xff0c;并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切#xff08;地图绘制和本地化#xff09;的汇集点。ROS 导航堆栈已经为我们完成了… 文章目录 路径规划参考 路径规划
路径规划是导航的最终目标。这允许用户向机器人给出目标姿势并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切地图绘制和本地化的汇集点。ROS 导航堆栈已经为我们完成了繁重的工作就像我们在地图绘制和本地化中看到的那样。导航的路径规划部分是在名为 move_base 的包中实现的。在我们开始使用这个包之前了解全局并了解关键细节非常重要。
使用的 ROS 节点move_base 中间的大方框代表move_base节点它是ROS导航堆栈的核心。它订阅了多个主题包括映射部分中介绍的map_server 节点和本地化部分中介绍的amcl 节点。在 move_base 节点中有很多事情需要在继续之前理解。
在 move_base 节点中该图显示了四个主要项目。让我们一一了解它们。
global_plannerlocal_plannerglobal_costmaplocal_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/