【ROS|navigation|move_base】使用global_planner包自带的A*算法

【ROS|navigation|move_base】使用global_planner包自带的A*算法

1、如何使用global_planner包

在launch文件中设置参数

2、如何使用global_planner包自带的A*算法

在配置文件中设置参数,我的是global_planner_params.yaml

GlobalPlanner:
  use_dijkstra: false

在launch文件中加载对应的配置文件

3、参数配置解析

ROS中,机器人全局路径规划默认使用的是navfn包
move_base的默认参数中可以找到

base_global_planner  (`string`, default: "navfn/NavfnROS")

navigation的源代码中还有一个global_planner的包里面已经有了A*,Dijkstra等算法的实现。

navfn的源程序中也有这两个算法的实现,默认根本就没用到global_planner这个文件夹下的源程序。那么为什么有两个用于全局导航的包在ROS里面?它们又是什么关系呢

早期的开发中是用navfn包做导航的并且默认使用Dijkstra做全局路径规划,并且有A * 的代码,

那为什么没有使用A * 呢? 因为这里的A*算法存在bug,没人有时间去弄

直到13年David Lu 才完成了这部分工作,重新发布了global_planner包,修改好的代码封装性更强,更清晰明了。

因此,也可以认为global_planner是navfn的升级版替代者。

那么问题来了David Lu为什么没用global_planner替代掉navfn?为了兼容呗。

因此两个包都在,并且默认的是navfn,也就是没用global_planner。

GlobalPlanner/use_dijkstra

(bool, default: true)

是否使用D*全局规划算法,默认为true,如果为false,则使用A*算法

4、参考链接

http://wiki.ros.org/global_planner

ROS源码解读(二)--全局路径规划_弱的一米-CSDN博客_ros全局路径规划

请问ros导航包中设置global_planner中的哪个参数才能指定A*算法还是dijkstra? - 知乎

路径规划参数解析(一)——move_base参数解析_夏天的一叶的博客-CSDN博客_occdist_scale

ROS导航系列(四):全局路径规划器的参数配置分析_miya的博客-CSDN博客_全局路径规划器

你可能感兴趣的:(算法,自动驾驶,人工智能)