移動機器人常用ROS局部規劃器簡介

背景

對於室內小車,ROS社區已有很多大牛們貢獻了各種不同的局部規劃器,總結主要有以下幾種:

  • base_local_planner
  • DWA_local_planner
  • DWB_local_planner
  • asr_ftc_local_planner
  • TEB_local_planner
  • Eband_local_planner

以下分別介紹。

base_local_planner

在這裏插入圖片描述

wiki主頁:http://wiki.ros.org/base_local_planner

base_local_planner包含有軌跡展開(Trajectory Rollout)和動態窗口方法(Dynamic Window Approach,DWA)算法。基本思想如下:

  1. 在機器人的控制空間(dx,dy,dtheta)中進行離散採樣。
  2. 對於每個採樣速度,從機器人的當前狀態執行前向模擬,以預測如果應用採樣速度在某個(短)時間段內會發生什麼情況。
  3. 使用包含以下特徵的度量來評估(評分)由前向模擬產生的每個軌跡:接近障礙物程度,接近目標程度,接近全局路徑程度和採用的速度。丟棄非法軌跡(與障礙物碰撞的軌跡)。
  4. 選擇得分最高的軌跡並將相關的速度發送到移動基座。
  5. 清零並重復。

DWA與“Trajectory Rollout”的不同之處在於如何對機器人的控制空間進行採樣。在給定機器人的加速度極限的情況下,Trajectory Rollout在整個前向模擬週期內從可實現的速度集合中進行採樣,而DWA在給定機器人的加速度極限的情況下僅針對一個模擬步驟從可實現的速度集合中進行採樣。這意味着DWA是一種更有效的算法,因爲它可以採樣更小的空間,但是對於具有低加速度限制的機器人,可能性能不如“Trajectory Rollout”,因爲DWA不會向前模擬恆定加速度。然而,在實踐中,我們發現DWA和軌跡展示在我們的所有測試中都具有相同的性能,建議使用DWA來提高效率。

DWA_local_planner

在這裏插入圖片描述

wiki主頁:http://wiki.ros.org/dwa_local_planner

介紹見上面base_local_planner

DWB_local_planner

在這裏插入圖片描述

wiki主頁:http://wiki.ros.org/dwb_local_planner

項目主頁: https://github.com/locusrobotics/robot_navigation/tree/master/dwb_local_planner

dwb_local_planner重新實現並擴展了dwa_local_planner的功能,因此在邏輯上稱爲dwb_local_planner。它的目標是通過pluginlib或直接擴展實現類方式,可以定義儘可能多的功能。

局部規劃器的目標是採用全局代價圖和局部代價圖,產生速度命令,使機器人到目標點。 dwadwb都通過速度採樣來做到這一點,即生成合理的速度命令並在各種度量模型上評估它們的效果並選擇具有最佳得分的命令,以使機器人達到目標。

假設我們正在評估給定的命令,看它是否與costmap中的任何障礙物發生碰撞。關鍵問題是機器人是否採用該速度命令驅動機器人行走。爲此,需要知道機器人的位置和速度。此外,還需要考慮機器人的運動學特徵。

綜合來看,這是一個David V Lu重新實現的基於DWA算法的提供更多擴展功能的規劃器。效果上應與DWA類似。

asr_ftc_local_planner

在這裏插入圖片描述
wiki主頁: http://wiki.ros.org/asr_ftc_local_planner

asr_ftc_local_planner意爲“跟隨蘿蔔”的算法,以儘可能地貼合全局路徑。
當發送一個新目標點後,算法可劃分爲三個階段:

  • 將機器人的轉向目標點朝向
  • 走向目標
  • 在目標點將機器人的朝向旋轉到位

主要優勢

  • 快速駕駛:機器人儘可能達到最大速度行駛。
  • 參數很少:只需設置11個參數。
  • 很少有劇烈轉換的情況:機器人儘可能以最大速度往前開。
  • 小房間情況:機器人緊密跟隨全局路徑,不像dwa_local_planner那樣存在繞目標點循環的問題。所以它可以在小房間中無衝突行駛。
  • 通過全局路徑在前進中排除障礙:保證在障礙物附近找到路徑。
  • 處理時間短

缺點

  • 僅適用於圓形的機器人。
  • 只適用於差動驅動的機器人。
  • 僅有向前走(沒有後退機制)。

可見它是一種很簡單的路徑跟隨規劃器,適用於AGV這種在固定位置有預設動作的機器人。

TEB_local_planner

在這裏插入圖片描述

wiki主頁:http://wiki.ros.org/teb_local_planner

teb_local_planner實現了一個在線優化的局部軌跡規劃器,用於移動機器人的導航和控制,可以作爲ROS導航包的插件。

由全局規劃器生成的初始軌跡在運行期間進行優化,以最小化軌跡的執行時間(時間最優目標),與障礙物分離處理,滿足諸如最大速度和加速度的動力學約束。

teb_local_planner的當前實現符合非完整機器人(差動驅動和類似汽車的機器人)的運動學特徵。
(注:對地面移動機器人來說,非完整機器人XX—方向有速度,而YY-速度爲0的機器人)

注意:teb_local_planner的最重要特徵在於:在行進過程中調整機器人的朝向以使到達位置時的朝向是所要的朝向(見前面的圖)。此外,它在行進過程中也不會緊密貼合路徑(見下圖)。

在這裏插入圖片描述

Eband_local_planner

wiki主頁:http://wiki.ros.org/eband_local_planner

eband_local_planner實現了base_local_planner的插件。它在SE2流形上實現了彈性帶方法。
ROS的move_base局部規劃器的原始實現僅支持全向(完整)機器人。

修改了當前版本以與差分驅動器一起使用。將differential_drive設置爲false以啓用橫向/完整運動,但該模式已經過很長時間的測試,應該被認爲是實驗性的。

在到達目標位置和目標之前計算速度時,差動驅動機器人可以處於三種動作之一:

1:機器人在目標位置的橫向公差(xy_goal_tolerance)內,並且在適當位置旋轉以達到目標方向。

2:機器人在目標位置的橫向公差之外,則必須朝向目標移動。給定機器人的方向以及彈性帶中下一個點的方向,機器人首先計算這兩個位置之間的差異。如果該差值小於參數rotation_threshold_multiplier,則機器人執行線性和角速度分量以朝向頻帶中的下一個點弧。一旦機器人靠近目標位置,使得到目標的x和y距離小於0.6 * xy_goal_tolerance,然後進入步驟1。

這裏選擇0.6,因爲機器人在開始之前接近目標而不是公差要求最後一個轉彎,因爲最後一個轉彎可能會導致機器人稍微偏離位置。

3:如果在前一步驟中計算的差值大於參數rotation_threshold_multiplier,則機器人就位,直到差值變小,並且機器人可以執行動作2。

在這裏插入圖片描述

在這裏插入圖片描述
Bubble就是一個代表路徑上的點與障礙物不衝突的圓形範圍(not to collide with an obstacle),如果距離障礙物近,bubble會小,距離障礙物遠,bubble會大
在這裏插入圖片描述
爲了確保path 是 collision free的,我們會讓生成bubbles是overlap的,這一點圖中也可以看得出來。

最後就是操縱生成的Bubble(Manipulating the Bubbles) 。比如對bubble前移或者後移,在障礙物近的地方生成bubble更加密集

參考:
【1】 https://blog.csdn.net/lh2008xp/article/details/89214582
【2】 https://blog.csdn.net/qq91752728/article/details/81179744

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章