1.總體框架
goal
global planner-------global_costmap<——map server
amcl
local planner---------local_costmap<——sensor
control
2.模塊分析
1.amcl是一種機器人在2D中移動的概率定位系統。 它實現了自適應(或KLD采樣)蒙特卡羅定位方法(如Dieter Fox所述),該方法使用粒子濾波器來針對已知地圖跟蹤機器人的位姿。
2.base_local_planner使用Trajectory Rollout and Dynamic Window approaches來做平面上運動的機器人局部導航,控制器基於給定的路徑規划和costmap生成速度命令后發送給移動基座。
3.carrot_planner試圖找到適當的位置來使機器人跟隨。
-
規划器獲取用戶指定的目標位置,檢查用戶指定的位置是否在障礙區中。
-
如果用戶指定的位置在障礙區中,規划器就會在機器人與指定位置的已規划路徑中尋找一個在障礙區外的可行的目標位置,然后再將此目標位置發送給局部規划器或者控制器
4.clear_costmap_recovery為導航堆棧提供了一種恢復行為,其嘗試通過將導航堆棧使用的代價地圖恢復到給定區域外的靜態地圖來清除空間。
5.costmap_2d提供了一種2D代價地圖的實現方案,該方案從實際環境中獲取傳感器數據,構建數據的2D或3D占用柵格(取決於是否使用基於體素的實現),以及基於占用柵格和用戶定義膨脹半徑的2D代價地圖的膨脹代價。
- costmap_2d-staticmap靜態地圖主要包含來自外部源的不變數據。
- costmap_2d-inflation為代價地圖的代價值定義5個與機器人有關的標記:致命的("Lethal" cost)、內切("Inscribed" cost)、可能外切("Possibly circumscribed" cost )、自由空間("Freespace" )、未知("Unknown")
6.dwa_local_planner使用DWA(Dynamic Window Approach)算法實現了平面上移動機器人局部導航功能。(和base_local_planner什么關系?)
7.fake_localization用來替代定位系統,並且提供了amcl定位算法ROS API的子集。
8.global_planner為導航實現了一種快速,內插值的全局路徑規划器, 繼承了nav_core包中nav_core::BaseGlobalPlanner接口,該實現相比navfn使用更加靈活。
9.map_server提供了一個map_server ROS 節點, 該節點通過ROS 服務器方式提供地圖數據。提供了map_saver命令行utility, 使用該工具可將動態創建的地圖保存成文件。
10.move_base將全局路徑和局部路徑規划程序鏈接在一起,以完成其全局導航任務;維護兩個costmaps,一個用於全局路徑規划器,一個用於局部路徑規划器
move_base_msgs 能夠保留move_base包的操作描述和相關消息
11.move_slow_and_clear是一種簡單的修復機制,用來清除代價地圖中信息並且限制機器人移動速度。(是一種簡單的修復機制,用來清除代價地圖中信息並且限制機器人移動速度。)
12.nav_core包含了導航功能包的關鍵接口。主要是:全局路徑規划器、局部路徑規划器、修復機制接口
13.navfn快速內插值的導航功能,用於為移動基座創建路徑規划。
- 假設機器人為圓形並利用代價地圖來進行操作,以從柵格的起點到終點找到代價最小的路徑規划;
- 使用Dijkstra算法;
- 在move_base中被作為全局路徑規划器插件使用。
14.navigation——定義cmakelist
15.rotate_recovery給導航功能包提供了rotate_recovery::RotateRecovery修復機制,它嘗試讓機器人執行360度旋轉來完成清理導航功能包里的代價地圖的空間。
16.voxel_grid實現里高效的3D voxel grid(標記,自由或未知)
問題:
1.dwa_local_planner和base local planner有何區別?
2.fake_localization和amcl有何區別?