ROS机器人路径规划介绍--全局规划

ROS机器人路径规划算法主要包括2个部分:1)全局路径规划算法;2)局部路径规划算法;node

1、全局路径规划 global planner算法

ROS 的navigation官方功能包提供了三种全局路径规划器:carrot_planner、global_planner、navfn,默认使用的是navfn,spa

其中:.net

一、carrot_plannercode

参考ROS wiki :http://wiki.ros.org/carrot_plannerblog

简单的路径规划器,优势是:是即便规划的目标点在障碍物上,也能够执行。机器人会向着目标点前进,避开障碍物尽可能靠近目标点。接口

 

二、navfn:一个基于grid的全局规划器,navfn提供了一个快速的内插导航功能,可用于为移动基础建立计划。计划者假定一个圆形机器人,并在成本地图上运行,以从一个起点到一个网格的终点,找到一个最小的成本计划。导航功能是用Dijkstra的算法计算出来的,但对启发式的支持也可能在不久的未来添加。navfn还为navfn计划器提供了一个ROS包装器,它遵循navcore::在navcore中指定的BaseGlobalPlanner接口。get

参考:http://wiki.ros.org/navfnit

缺点是默认使用Dijkstra算法,对A*算法支持很差。io

三、global_planner:替代navfn,支持A*算法。这个包提供了一个快速的、内插式全局规划器的实现。这个类遵循navcore::在navcore包中指定的BaseGlobalPlanner接口。它是做为一个更灵活的替代品来替代navfn。

参考:http://wiki.ros.org/global_planner

四、如何使用新的全局规划器。

目前ros默认使用的是navfn的全局规划器,使用Dijkstra的算法,若是须要使用A*算法,则须要更改全局路径规划器。

具体是在move_base包的launch文件里面更改:

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">  <param name="base_global_planner" value="global_planner/GlobalPlanner"/>

move_base将调用global_planner规划器进行路径规划。参数设置:

 

如图所示, 将use_dijkstra算法设置false就是使用A*算法。

也能够使用本身写的路径规划器进行路径规划,参考:

https://community.bwbot.org/topic/43

http://blog.csdn.net/heyijia0327/article/details/45030929

相关文章
相关标签/搜索