VO避障
原文地址:https://www.researchgate.net/publication/2672667_Motion_Planning_in_Dynamic_Environments_Using_the_Relative_Velocity_Paradigm
1. 簡介
動態環境下的運動規劃始終是一個難題,這是因為它需要在狀態空間下進行規劃,也即需要同時解決路徑規劃和速度規劃兩個問題。其中,路徑規劃是一個運動學問題,旨在計算出一條從出發點到目標點的無碰撞路徑。而速度規劃由于需要考慮機器人的動態和執行器約束,天然地是一個動態規劃問題。事實表明,在有限速度和多障礙條件下對平面內一點的動態運動規劃是很困難的,這其中不僅包括計算的難度,還包括由于不確定的環境特性導致的解的不確定性,比如,在時間 t0 的可行解在之后的某個時間可能會變得不可行。
對于如何解決動態環境下的運動規劃問題,最初的思路是在假定速度邊界和已知障礙物運動路徑的情況下,在構型空間中增加時間維度,從而形成連續時間下的構型空間。Reif和Sharir在1985年提出了不斷搜索可視圖的方案,以解決由單個多邊形機器人和多個多邊形障礙組成的平面動態運動規劃問題。1987年,Erdmann和Lozano-Perez提出將連續的構型空間離散化成由一系列的微小時間段的構型空間組成的序列的方式來求解,其本質是分別解決連續片段下的靜態運動規劃問題,然后將所有片段的解決方案組合起來得到最終的方案。1989年Fujimura和Samet也提出了網格法解決動態運動規劃問題的思路。
另外一個解決動態運動規劃問題的方向是將其分解成小的子問題:即路徑規劃問題和速度規劃問題。按照這個方法的思路,首先解決路徑規劃的問題,尋找出一條從出發點到目標點的可行路線。然后按照可行路線依次尋找能夠避開移動障礙物的速度。Kant和Zucker首先于1986年通過可視圖的方式成功得到可行的路徑和速度分布。一年以后,Lee和Lee(沒錯,原文就是兩個李)也獨立地提出以類似的方式為兩個協同機器人解決運動規劃的問題,并且,他們還比較了在避障時采取延遲和減速兩種方案對運動時間的不同影響。1993年,Fraichard將加速度邊界考慮進去,通過在連續狀態空間(state-time space)下搜索來求出最段路徑下的速度分布。Fraichard和Laugier還在同年考慮了選定路徑在被移動障礙物阻擋時切換到鄰近路徑的情況。1995年,Fujimura(上文提到的網格法大佬)也提出了定時網格(fixed time-dependent network)下解決網格被移動障礙物阻塞的方案。
另一種不同的思路是基于對可視圖的延申,嘗試創建當前環境的無障礙圖。Fujimura和Samet將其定義為當機器人以最大速度運動時會與障礙物發生碰撞的具體點的軌跡。這些點就形成了一條碰撞邊界,并且可以從出發點連接至目標點。無障礙圖的一個特性是,如果機器人以比障礙物更快的速度運行,那么通過圖中搜索得到的路徑就是耗時最少的路徑。(這段沒看懂,最好看原文)
線上動態運動規劃問題更多地關心決策的做出,而不是機器人的動態。Sanborn和Hendler曾在1988年提出交通領域的機器人應對環境的規則。機器人通過預測相關非智能體與自身移動路徑的發生交叉的時間段來對外部環境做出反應。這種方式考慮了環境的物理特性,而忽略了機器人自身的物理局限性。之后又在以時間為軸的計算碰撞的笛卡爾坐標系中增加了機器人速度的條件。與之相關的另一個問題,即對未來發生碰撞的預測和排序,也開始成為研究課題。
以上所有前期研究的一個共同點,就是他們都是基于位置信息對機器人和障礙之間的碰撞進行預測。由于當前算法都是通過位置信息對潛在碰撞進行預測,所以它們被統稱為零階算法。
在本文中,我們提出一種通過速度信息直接預測隨時間變化的環境中的潛在碰撞的算法,即一階算法。這種方法利用了速度障礙的概念(Velocity Obstacle, VO),將動態環境映射到機器人的速度空間中。VO是在給定時間范圍內,機器人與障礙物會在將來某個時刻發生碰撞的速度的一階近似值。通過這種表示,可以簡單地通過選擇VO區域之外的速度作為避障策略。
通過在離散時間間隔下計算生成的避障策略樹,然后對該樹進行搜索得到一系列的避障策略,最終組成一條路徑。對于線上應用,可以根據不同的設計意圖的優先級,比如避免碰撞、達到目標、最大速度等,對樹進行啟發式搜索以進行優化。
2. VO避障說明
本節我們將介紹對于單個障礙物和多個障礙物的VO。為了簡單起見,我們會將分析的物體抽象成平面上的圓圈。由于多面體也可以用多個圓圈表示,所以這是一種相對合理的抽象。同時 ,我們也假設障礙物都以特定的軌跡運動,即,在某個特定的時間節點上,我們對障礙物的瞬間狀態(位置和速度)是已知或者可預測的。
圖1:
現在我們考慮一個由A和B兩個圓圈組成的系統(如上圖)。A和B的速度分別是VA和VB,半徑分別是RA和RB,此時時間為t0。其中A代表尋路的機器人,B代表障礙物。為方便計算VO,我們首相將B映射到A的構型空間。我們可以將A抽象成一個點,同時將B的半徑增加RA,從而得到新的A’和B’。他們的狀態表示各自的位置和圓心的速度。
為了方便理解,我們首先考慮相對速度。用VAB表示A’相對于B’的相對速度,即VAB = VA’ - VB’, 入AB 表示 VAB對應的向量。那么,我們把所有會導致A’B’發生碰撞的VAB 的集合定義為CCAB,其形狀如下圖所示。
圖2:
可見,這是一個以A’為頂點的扇形,A’到B’的兩條切線 入r 和 入f 分別形成了這個扇形的兩個邊界。那么顯而易見,在B’保持當前形狀和速度都不變的情況下,任何落在扇形區域CCAB內的相對速度都會導致A’和B’發生碰撞,相反,任何落在扇形區域以外的相對速度都不會使二者發生碰撞。
由于我們采用的是相對速度,所以這個扇形只適用于A’和B’這一對物體的特定情況。為了將其推廣,使之適用于多個碰撞體,就需要將CCAB 轉化為與之等價的由A’的絕對速度形成的區域。很簡單,只要將CCAB中的每個相對速度加上B’的速度VB即可。又或者,只要將整個扇形區域沿B’的速度向量移動一下即可。最終得到的結果如下圖所示。
圖3:
最終,我們將VO定義為:
VO = CCAB ⊕ VB
其中⊕代表明可夫斯基向量加。
VO將A’的絕對速度分成了會碰撞和不會碰撞兩個區域,只要選擇VO以外的速度,就不會發生碰撞,也即滿足下式:
A(t) ∩ B(t) = Φ ,if VA(t) ? VO(t)
位于VO邊界上的速度,將導致A’和B’剛剛好擦到。而對于固定的障礙物,VO也依然適用,此時可以將B’的速度VB看做是0。
對于多障礙物的避障,我們可以將其視為多個獨立VO的聯合:
其中m表示障礙物的總個數。那么,對于這種情況,不會引發碰撞的速度則是那些在所有VO區域外部的速度,如下圖所示。
圖4:
對于多個障礙物的情況,對障礙物按照碰撞發生的時間順序進行優先級排序是一個很有效的優化思路。而且,由于VO是基于對物體的速度做線性模擬得出的,這對于遠處的障礙物可能并不適用,因為障礙物實際并不是完全做線性運動,因此碰撞發生時間越遠的情況越可能出現誤差。如果碰撞發生在給定的時間Th之內,即 t < Th,那么我們便稱之為緊迫的(imminent)。這其中時間Th根據不同的實際情況可能采取不同的值。我們用VOh定義那些發生碰撞的時間超過Th的速度的集合,用dm表示機器人和障礙物之間的相對距離,則VOh可定義為下式:
VOh = { VA | VA ∈ VO, || VAB || <= dm / Th }
從整個VO區域中將VOh的部分去除掉,就可得到我們認為緊迫的碰撞的速度區域(下圖)。
圖5:
3. 避讓機動
在本節中,我們將介紹能夠避免在給定的一段時間內發生碰撞的避讓機動,它包括一系列一步的速度變化。
3.1 可達速度
對于指定狀態下的機器人A,其在給定時間Δt后的可達速度通過將執行器約束映射到加速度約束中可計算。
首先我們定義FA(t) 為機器人A在時間時的可達加速度集合,其具體表示如下:
其中X為位置向量,u為加速度影響,U代表所有可接受的控制條件。
根據上式,可以將可達速度( RV(t + Δt) )表示為:
這個式子很好理解,就是將速度變化按照時間進行縮放,然后與當前速度相加,得到受影響后的速度。其表示如下圖所示:
圖6:
而可達避障速度(RAV)定義如下:
也就是從可達速度中將屬于VO區域的那部分速度扣除出去,其結果如下圖所示:
圖7:
上圖對于RAV的表示只是一種簡單的示意圖,從圖中可見,此時RAV區域為可達速度RV被VO從中間分開后的兩段區域,很顯然,對于有多個障礙物的情況,RV可能會被多個VO區域進行阻隔出現多個分散不相連的區域的結果。
3.2 避讓機動的結構
避讓機動可以根據它們相對于移動障礙物的位置進行區域劃分。通常,避讓速度會被VO區域劃分為兩塊不相連的獨立區域,如上圖所示。碰撞速度和非碰撞速度區域的邊界分別為A’到B’的兩條切線 入f和 入r。只要選擇的速度位于這兩塊獨立的區域 ——也就是RAV ——之中,就可以避免和障礙物發生碰撞,但是要從哪塊區域中選擇避讓速度呢,這首先就要先決定要從障礙物的哪一邊進行避讓。
首先我們如下圖構建坐標系。
圖8:
以B’的中心點為原點,B’的運動方向為X軸正方向,與X軸垂直且遠離A’的方向為Y軸正方向。Y軸與B’的兩個交點Yf和Yr將B’分為前后兩個半圓,分別用?Bf和?Br表示。
當A’相對與B’的相對速度位于入f或入r的時候,A‘會與B’擦肩而過,姑且稱之為切線機動吧( tangent maneuvers)。但實際上,切線機動的切點卻并不會像上圖中所畫的那樣一定落在Tf和Tr上,這是因為這與二者的絕對速度有關。下圖簡單表示了在采取切線機動時,從時間t0到t1,A’和B’二者運行到相切位置的具體情況。
圖9:
可見,實際的切點并不是發生在Tf點,而是在P點。那么切點的實際位置在哪里呢,下面的定理對切點的實際位置進行了描述。
定理1:
當且僅當機器人A’以相對于B’的相對速度為V∈{入f, 入r}時,二者會發生切線機動。其中入f為A’到B’前半圓的切線(切點Tf),入r為A’到B’后半圓的切線(切點Tr)。并且,切點只會落在Tf和Yf將B’圓周切割出的最短弧,以及Tr和Yr將B’圓周切割出的最短弧上。
該定理的具體證明在原文附錄A中有,感興趣的老板可以自己看原文。
上文中我們提到過,VO區域的兩條邊界線是基于相對速度下的切線入f和入r轉換而來,因此可知這兩條邊界線也就是發生切線機動的速度。由于切線機動完全由入f和入r決定,我們根據VO的邊界以及A’到VO區域頂點的連線,將可達區域劃分為如下圖所示的Sr Sf 和 Sd三部分(如下圖),并得到定理2。
圖10:
定理2:
對于單個障礙物的可達速度區域(RAV)最多可被分割為三塊互不覆蓋的子區域 Sr Sf 和 Sd,它們分別代表后向區域,前向區域和遠離區域。
定理2的證明也在原文附錄A中(萬能的附錄A),感興趣的老板依然可以自己去看原文。
前向區域表示機器人會在障礙物前方穿過障礙物的路徑,從而避免碰撞,同理,后向區域表示機器人會在障礙物后方穿過其路徑,而遠離區域表示機器人會漸漸遠離機器人而不會發生碰撞。
另外,視具體情況不同,三塊區域并不一定全都存在,可能存在一種,也能存在兩種(圖7),也可能一種都不存在(可達速度區域完全被VO覆蓋,也就是無法避障)。
對于有多個障礙物的情況,我們可以用其VO區域依次對RAV進行切割,并用Sss表示具體的切割后區域,比如Sfr即表示第一個障礙物的前向區域和第二個障礙物的后向區域的共同區域(如下圖)。
圖11:
定理2在多障礙物的情況下依然適用,其證明也依然在附錄A中。
4.計算避障路徑
這一部分概括來講就是,由于這個模型是基于障礙物狀態可預測的前提下進行的,因此可以在事前先按照一個時間間隔,在離散的時間點上計算出機器人的當前位置以及障礙物的當前位置,然后以機器人位置為節點,按照不同的避讓機動做分支,從而形成一顆樹,最終達到目標點。當然,這里的避讓機動可以只做幾種。而且,這里也可以在進行避讓機動的時候增加一些條件,進行啟發式的選擇,從而達到更好的效果。
由于在實際游戲開發中,我們很少會拿VO做路徑規劃,一般只是做尋路過程中的動態避障,所以這部分就不展開了。有感興趣的老板,依然可以去看原文。
5. 例子
略。
總結
- 上一篇: 【零基础】MT4/MT5一条语句让EA发
- 下一篇: 外设测试 - CAN 接口测试