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

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

1、如何使用global_planner包

在launch文件中设置参数

<param name="base_global_planner" value="global_planner/GlobalPlanner"/>

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

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

GlobalPlanner:
  use_dijkstra: false

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

<rosparam file="$(find turtlebot3_navigation)/param/global_planner_params.yaml" command="load" />

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博客_全局路径规划器

  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值