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

相關文章
相關標籤/搜索