1. 程式人生 > >“0公式系列”之DWA演算法----Dynamic Window Approach

“0公式系列”之DWA演算法----Dynamic Window Approach

DWA演算法能幹什麼?

對於機器人區域性路徑規劃的演算法有很多,DWA演算法(中文叫動態視窗法)是其中之一,理解起來簡單些。它能根據代價地圖以及當前的位姿和速度,在當前點和目標點之間給一個合理的速度。

DWA演算法的實現

主要是在速度(v,w)空間中取樣多種速度,模擬每組速度的預期軌跡,然後給每個軌跡打分,最後選取最合適的速度組,並讓機器人按照該速度前進。 詳細程式碼見ROS官網給出的方案

下面開始我的通俗解釋這個演算法

 重點在於選擇速度方案,DWA演算法讓機器人按照哪種速度方案(v,w)去前進,取決於這幾個條件。

1、可採納速度。當我們選擇速度方案(v,w)的時候,是以當前的速度為基礎進行選擇的。比如,我現在的速度v是10m/s,那麼我的速度方案,v就是在10m/s上下附近進行選擇,你不可能下一時刻就是50m/s了吧,所以就不用考慮那麼多的速度了。

2、優先走無障礙的路徑。但是我們怎麼知道,它會不會撞向障礙呢。很簡單,就是模擬這個機器人以某一組不變的速度(v,w)前進,這樣就會擬合出許多組軌跡,只需要檢查出這幾組軌跡離各自最近的障礙物的距離就行了。有一種特殊的情況,就是無法避免碰到障礙,就在可行區域找一個點,讓這個點儘量離原始目標點進就行。

3、優先以快的速度前進。這個也不難理解,誰也不希望自己的機器人像個烏龜一樣。

 

 最後我們會得到一組最優的速度方案(v,w),然後釋出給cmd_vel就行了。