ROS機器人路徑規划介紹--全局規划


ROS機器人路徑規划算法主要包括2個部分:1)全局路徑規划算法;2)局部路徑規划算法;

一、全局路徑規划 global planner

ROS 的navigation官方功能包提供了三種全局路徑規划器:carrot_planner、global_planner、navfn,默認使用的是navfn,

其中:

1、carrot_planner

參考ROS wiki :http://wiki.ros.org/carrot_planner

簡單的路徑規划器,優點是:是即使規划的目標點在障礙物上,也可以執行。機器人會向着目標點前進,避開障礙物盡量靠近目標點。

 

2、navfn:一個基於grid的全局規划器,navfn提供了一個快速的內插導航功能,可用於為移動基礎創建計划。計划者假定一個圓形機器人,並在成本地圖上運行,以從一個起點到一個網格的終點,找到一個最小的成本計划。導航功能是用Dijkstra的算法計算出來的,但對啟發式的支持也可能在不久的將來添加。navfn還為navfn計划器提供了一個ROS包裝器,它遵循navcore::在navcore中指定的BaseGlobalPlanner接口。

參考:http://wiki.ros.org/navfn

缺點是默認使用Dijkstra算法,對A*算法支持不好。

3、global_planner:替代navfn,支持A*算法。這個包提供了一個快速的、內插式全局規划器的實現。這個類遵循navcore::在navcore包中指定的BaseGlobalPlanner接口。它是作為一個更靈活的替代品來替代navfn。

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

4、如何使用新的全局規划器。

目前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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM