白 園,劉 嬋,何健輝
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
目前,世界各國軍事實(shí)力不斷發(fā)展壯大,戰(zhàn)場環(huán)境越來越復(fù)雜,需要無人機(jī)可以在具有不確定信息的環(huán)境中躲避各種威脅[1],提高戰(zhàn)場適應(yīng)性和生存能力,順利完成作戰(zhàn)任務(wù)。航跡規(guī)劃是無人機(jī)任務(wù)規(guī)劃系統(tǒng)的核心部分。無人機(jī)航跡規(guī)劃的目標(biāo)是在適當(dāng)?shù)臅r間內(nèi)計(jì)算、選擇最優(yōu)或次優(yōu)的飛行航跡,使得執(zhí)行戰(zhàn)術(shù)任務(wù)的無人機(jī)能突防敵方的威脅環(huán)境,在敵方防空區(qū)域內(nèi)完成任務(wù)并保存自己,達(dá)到最佳的作戰(zhàn)效果[2]。航跡規(guī)劃按照航跡生成的實(shí)時性,分為靜態(tài)航跡規(guī)劃和動態(tài)航跡規(guī)劃[3]。靜態(tài)航跡規(guī)劃是無人機(jī)在起飛前根據(jù)戰(zhàn)略策略、相關(guān)的情報信息為無人機(jī)預(yù)先規(guī)劃的飛行路線。動態(tài)航路規(guī)劃是無人機(jī)在飛行中發(fā)現(xiàn)新的威脅或者任務(wù)目標(biāo)改變時,實(shí)時動態(tài)規(guī)劃出新的飛行路線。因此,研究無人機(jī)如何在復(fù)雜的戰(zhàn)場環(huán)境中躲避各種突發(fā)威脅快速規(guī)劃出一條高效的航跡具有重要的意義。
相對于其他航跡規(guī)劃算法,人工勢場法(Artificial Potential Field,APF)不但規(guī)劃速度快且實(shí)時性好[4],更適合用于無人機(jī)的動態(tài)航跡規(guī)劃。近年來,它一直是研究的熱點(diǎn),但是其算法本身存在一些缺陷。本文針對這些缺陷提出了相應(yīng)的解決辦法,并在改進(jìn)人工勢場規(guī)劃算法的基礎(chǔ)上,進(jìn)一步采取分層避障策略。根據(jù)實(shí)際情況,同時考慮變速和變向。變速時,分別計(jì)算加速和減速時速度的變化量,選擇變化量小的變速措施;變向時又根據(jù)UAV和障礙物的位置關(guān)系使用最小轉(zhuǎn)變角度。這大大節(jié)省了規(guī)劃時間,使無人機(jī)能快速躲避威脅,重新規(guī)劃航跡,從而順利到達(dá)目的地完成作戰(zhàn)任務(wù)。
人工勢場航跡規(guī)劃算法的基本思想是將無人機(jī)在作戰(zhàn)環(huán)境中的運(yùn)動視為一種無人機(jī)在虛擬的人工受力場中的運(yùn)動。作戰(zhàn)目標(biāo)點(diǎn)對無人機(jī)產(chǎn)生引力,威脅源對無人機(jī)產(chǎn)生斥力,引力和斥力的合力最終決定無人機(jī)的運(yùn)動方向,即在此合力的作用下控制無人機(jī)避開威脅而順利到達(dá)目標(biāo)位置。
1.1.1 引力勢函數(shù)
引力勢函數(shù)是無人機(jī)與目標(biāo)點(diǎn)相對位置的函數(shù)。相對距離越大,目標(biāo)點(diǎn)對無人機(jī)的吸引力越大,促使無人機(jī)向目標(biāo)點(diǎn)移動。隨著距離的減小,吸引力隨之減小,當(dāng)無人機(jī)到達(dá)目標(biāo)點(diǎn)處,引力降為零。即引力大小與距離成正比。它的勢函數(shù)可以表示為[5]:
式中,katt表示引力場增益,p表示無人機(jī)的空間位置坐標(biāo),pgoal表示目標(biāo)點(diǎn)的空間位置坐標(biāo)。
引力是勢函數(shù)的負(fù)梯度,因此可以得到引力函數(shù):
其中Fatt(p)是矢量,方向由無人機(jī)指向目標(biāo)點(diǎn)。
1.1.2 斥力勢函數(shù)
與引力勢函數(shù)類似,斥力勢函數(shù)是無人機(jī)與威脅源相對位置的函數(shù)。不同的是,兩者成反比,即無人機(jī)離威脅源越近,受到的斥力越大,使其遠(yuǎn)離威脅源以避免碰撞;距離越遠(yuǎn),斥力越小,當(dāng)超過一定距離時,威脅源不對無人機(jī)產(chǎn)生排斥力。它的勢函數(shù)為:
式中,krepp表示斥力場增益,pobs表示威脅點(diǎn)的空間位置坐標(biāo),d0表示威脅源的影響半徑。
同樣地,對斥力勢函數(shù)求負(fù)梯度得斥力函數(shù):
因此,在整個勢場中,無人機(jī)所受到的合力為:
正是這個合力Ftotal( p)決定了無人機(jī)的運(yùn)動。
傳統(tǒng)人工勢場方法主要存在2個缺陷。
1.2.1 目標(biāo)不可達(dá)問題
當(dāng)目標(biāo)點(diǎn)附近存在威脅源時,無人機(jī)接近目標(biāo)點(diǎn)時,將會受到很大的斥力,而引力相對斥力來說很小,將會導(dǎo)致無人機(jī)受到的合力方向偏離目標(biāo)點(diǎn),使其無法到達(dá)目標(biāo)點(diǎn),即人工勢場法的目標(biāo)不可達(dá)問題[6]。
1.2.2 局部極小值問題
在無人機(jī)運(yùn)動過程中,某個時刻無人機(jī)受到的目標(biāo)點(diǎn)的引力與威脅源產(chǎn)生的斥力大小相等、方向相反,即受到的合力為零。此時,無人機(jī)誤認(rèn)為自己到達(dá)了目標(biāo)點(diǎn),就會使其停滯不前或者前后徘徊。這就是人工勢場法的局部最小值問題[7]。
為了解決目標(biāo)不可達(dá)問題,在斥力勢函數(shù)中引入無人機(jī)和目標(biāo)點(diǎn)之前的相對位置分量[8]。改進(jìn)后的斥力勢函數(shù)如下:
其中,p-pgoal表示無人機(jī)和目標(biāo)點(diǎn)之間的距離,是一個矢量,方向由無人機(jī)指向目標(biāo)點(diǎn)??梢钥闯觯氪朔至亢?,可以保證無人機(jī)在到達(dá)目標(biāo)點(diǎn)時勢場值全局最小,即在到達(dá)目標(biāo)點(diǎn)(p=pgoal)時斥力分量也為0,不會使無人機(jī)因受到威脅源強(qiáng)大的斥力而達(dá)不到目標(biāo)點(diǎn)。
同樣,對勢函數(shù)求負(fù)梯度可以得到斥力表達(dá)式:
為了適應(yīng)動態(tài)環(huán)境,在斥力勢場函數(shù)中引入相對速度項(xiàng),即增加了無人機(jī)與威脅源之間的相對速度分量,其勢函數(shù)可以表示為:
其中,krepv是斥力增益;v是無人機(jī)的速度;vobs是障礙物的速度;V是兩者的相對速度,方向在無人機(jī)與障礙物的連線上,V>0表示障礙物朝向無人機(jī)運(yùn)動,V≤0表示障礙物遠(yuǎn)離無人機(jī)運(yùn)動;e是一個單位向量,方向由無人機(jī)指向障礙物。
對應(yīng)的斥力分量為:
綜合前面引入的相對位置分量,改進(jìn)后的斥力勢函數(shù)如下:
對勢函數(shù)求負(fù)梯度,即可得到改進(jìn)后的斥力函數(shù):
在實(shí)際的作戰(zhàn)中,威脅源的分布范圍很廣,方式也不同,有靜態(tài)威脅也有突發(fā)的動態(tài)威脅。對于這些不同的威脅源,如果采取相同的避障措施,必然會降低無人機(jī)的靈活性和反應(yīng)能力,延長航跡規(guī)劃時間而貽誤戰(zhàn)機(jī)。因此,本文提出根據(jù)不同的場景采取分層避障策略[9]。根據(jù)威脅源距離無人機(jī)的距離,將其分為三個層——航跡規(guī)劃層、常規(guī)避障層和緊急避障層,如圖1所示。無人機(jī)對進(jìn)入其中某個區(qū)域的威脅源執(zhí)行相應(yīng)操作。對航跡規(guī)劃層,采用人工勢場法規(guī)劃航跡,不采取避障動作直接駛向目的點(diǎn);對進(jìn)入常規(guī)避障層的威脅源,采用常規(guī)避障策略,即變速避障與繞行避障兩種,避障過程中仍使用人工勢場法進(jìn)行航跡規(guī)劃;對進(jìn)入緊急避障區(qū)采用緊急避障策略,如速度直接降為零等。
圖1 分層避障策略
常規(guī)避障層是本文研究的重點(diǎn)。如果是靜態(tài)威脅源,無人機(jī)只能通過改變運(yùn)動方向來避免碰撞,需要對當(dāng)前狀態(tài)進(jìn)行避撞檢測,然后進(jìn)行相應(yīng)處理。對于動態(tài)威脅,UAV不僅可以通過改變方向進(jìn)行避撞,還可以通過變速來避開動態(tài)威脅。無論是動態(tài)還是靜態(tài),都需要進(jìn)行碰撞檢測[10]。下面對本文所使用的方法進(jìn)行簡要介紹。
從無人機(jī)的位置做兩條正切于障礙物的切線,如圖2所示。
圖2 碰撞檢測方案設(shè)計(jì)
定義切線與UO的夾角為α。無人機(jī)的速度Vr,動態(tài)威脅源的速度Vo,無人機(jī)和威脅源的相對速度Vro=Vr-Vo,Vro與UO的夾角定義為γ。如果是靜態(tài)威脅源,則相對速度即是無人機(jī)的速度Vr。從圖2可以看出,若γ>α,則無人機(jī)將不會與威脅源發(fā)生碰撞;否則,將會碰撞,需要采取避障措施。避障流程如圖3所示,主要實(shí)現(xiàn)步驟為:
(1)計(jì)算相對速度、相關(guān)角度等參數(shù);
(2)判斷UAV到障礙物的距離r是否小于D;
(3)判斷障礙物是動態(tài)還是靜態(tài);
(4)判斷UAV到障礙物的距離在哪個層,若r<L,進(jìn)入緊急避障層,采取相應(yīng)措施;否則,若L<r<S,處于常規(guī)避障層;
(5)判斷γ與α的大小,如果γ>α,不避障,否則采取相應(yīng)避障措施:若Vaindex和Vsindex均為假,說明變速不可行,無人機(jī)以最小速度運(yùn)行并轉(zhuǎn)變方向避障;若Vaindex和Vsindex均為真,考慮加速避障;若Vaindex為真、Vsindex為假,加速避障;若Vaindex為假、Vsindex為真,減速避障;
(6)判斷障礙物是否遠(yuǎn)離UAV,若是,恢復(fù)速度;否則,繼續(xù)加速或者減速避障。
當(dāng)遇到障礙物需要轉(zhuǎn)變方向時,本文設(shè)計(jì)的具體轉(zhuǎn)變措施如下。
首先介紹所需要用到的角度(詳見圖2),UO與UX之間的角度為θ,UAV的速度與UX之間的夾角為θr,UO與UO1之間的角度為α,Vro與UX的夾角為θvro。
圖3 避障流程
令η=θ-θr,當(dāng)η>0時,代表障礙物在合力的左邊,如需避障,需要右轉(zhuǎn)角度Δγ;否則η<0時,代表障礙物在合力的右邊,如需避障,需要左轉(zhuǎn)角度Δγ。
當(dāng)η>0時,如果θvro>θ,則需右轉(zhuǎn)Δγ=α+γ;否則,右轉(zhuǎn) Δγ=α-γ;
當(dāng)η<0時,如果θvro>θ,則需左轉(zhuǎn)Δγ=α-γ;否則,左轉(zhuǎn) Δγ=α+γ。
由于UAV自身的限制,轉(zhuǎn)角不能太大,因此Δγ須小于無人機(jī)本身的最大轉(zhuǎn)角。
根據(jù)以上介紹內(nèi)容,基于人工勢場法的航跡規(guī)劃算法流程如圖4所示。
圖4 航跡規(guī)劃流程
(1)初始化各項(xiàng)參數(shù);
(2)計(jì)算引力與斥力相應(yīng)的所需角度;
(3)計(jì)算引力、斥力、合力大小及方向;
(4)避障算法,流程和具體實(shí)現(xiàn)參考3.2節(jié);
(5)更新UAV和動態(tài)障礙物位置信息;
(6)判斷UAV是否到達(dá)目的地,若到達(dá),則跳出。
為了驗(yàn)證設(shè)計(jì)的人工勢場算法進(jìn)行動態(tài)航跡規(guī)劃的效果,在Matlab環(huán)境中進(jìn)行仿真實(shí)驗(yàn)。為了方便仿真分析,作出如下假設(shè):
假設(shè)1:障礙物做相應(yīng)的膨化處理后,無人機(jī)可以看做一個質(zhì)點(diǎn),并認(rèn)為其位置p和速度v是實(shí)時可測的;
假設(shè)2:目標(biāo)G可以看作一個點(diǎn),它的位置是已知的,且固定不動;
假設(shè)3:障礙物采用圓形包絡(luò),障礙物的形狀、包絡(luò)、圓的位置和速度都是實(shí)時可測的;
假設(shè)4:無人機(jī)的飛行高度不變,因此無人機(jī)和障礙物可以看成二維分布;
假設(shè)5:在不避障情況下,無人機(jī)和障礙物均做勻速直線運(yùn)動。
根據(jù)前面的航跡規(guī)劃流程和環(huán)境建模,對算法進(jìn)行仿真。仿真中主要的參數(shù)設(shè)置如下:起始點(diǎn)設(shè)置為坐標(biāo)(0,0),目標(biāo)點(diǎn)設(shè)置為(100,100)和(150,150)兩種。其中,點(diǎn)表示無人機(jī)的運(yùn)動軌跡,其運(yùn)動步長設(shè)置1.5,即運(yùn)動速度設(shè)置為1.5;用圓表示靜態(tài)和動態(tài)障礙物,其半徑和速度大小根據(jù)不同的場景設(shè)置不同的值;動態(tài)引力勢場模型中,katt取數(shù)值100,斥力勢場模型中krepp取數(shù)值100,krepv取數(shù)值50。krepp取值大小代表相對位置項(xiàng)在斥力場中所占的比重,krepv取值大小代表相對速度項(xiàng)在斥力場中所占的比重。
4.3.1 避障算法仿真
首先對避障算法的性能進(jìn)行仿真,如圖5所示。
其中,圖5(a)是在遇到動態(tài)障礙物時只采取改變方向的措施進(jìn)行避障,圖5(b)表示在轉(zhuǎn)變方向的同時進(jìn)行變速。其中,圓圈表示半徑為2的動態(tài)障礙物的直線運(yùn)動軌跡,點(diǎn)表示無人機(jī)在避障情況下的航跡,縱橫坐標(biāo)均表示坐標(biāo)點(diǎn)。從仿真結(jié)果可以明顯看出,設(shè)計(jì)的變速加變向的避障策略能更快規(guī)劃出了合理的航跡。
圖5 避障算法性能仿真
此外,對多種應(yīng)用場景進(jìn)行了仿真。
4.3.2 多動態(tài)障礙物仿真
在單動態(tài)障礙物的基礎(chǔ)上增加一個動態(tài)障礙物,兩個障礙物的大小、速度均不同。圖6為加速通過第一個障礙物后又減速通過第二個障礙物的仿真圖。其中圓圈表示動態(tài)障礙物的運(yùn)動軌跡,點(diǎn)表示無人機(jī)在避障情況下的航跡,縱橫坐標(biāo)均表示坐標(biāo)點(diǎn)。從仿真結(jié)果可以看出,根據(jù)不同的威脅,無人機(jī)可以實(shí)時采取相應(yīng)的避障策略,動態(tài)規(guī)劃相應(yīng)的航跡,且加速或減速躲避威脅后又恢復(fù)到原來的速度飛行,保證了無人機(jī)飛行的穩(wěn)定性。
4.3.3 復(fù)雜場景仿真
場景中包括動態(tài)障礙物和靜態(tài)障礙物兩種。設(shè)置6個半徑不同的靜態(tài)障礙物和2個運(yùn)動速度、半徑、軌跡不同的動態(tài)障礙物。
首先,無人機(jī)穿過2個靜態(tài)障礙物,然后遇到動態(tài)障礙物并加速通過,順利躲避動態(tài)障礙物;躲避動態(tài)障礙物后又遇到只有狹窄通道的2個靜態(tài)障礙物,這種特殊位置下極易形成局部極小值。經(jīng)過多次調(diào)整角度,順利躲避2個靜態(tài)障礙物,驗(yàn)證了設(shè)計(jì)的算法解決了局部最小值問題。然后,遇到第二個動態(tài)障礙物,減速等待;最后,在目標(biāo)點(diǎn)的附近設(shè)置了一個半徑很大的靜態(tài)障礙物,也能完成路徑規(guī)劃,順利到達(dá)目標(biāo)點(diǎn),驗(yàn)證了設(shè)計(jì)的算法解決了目標(biāo)不可達(dá)問題,仿真結(jié)果如圖7所示。其中,圓圈表示動態(tài)障礙物的運(yùn)動軌跡,點(diǎn)表示無人機(jī)在避障情況下的航跡,縱橫坐標(biāo)均表示坐標(biāo)點(diǎn)。
圖6 多動態(tài)障礙物下仿真
圖7 復(fù)雜場景下仿真
綜合以上仿真結(jié)果,證明設(shè)計(jì)的算法可以很好地解決傳統(tǒng)人工勢場算法存在的缺陷,并可以在復(fù)雜的戰(zhàn)場環(huán)境中順利躲避各種威脅,動態(tài)規(guī)劃一條合理的航跡,實(shí)現(xiàn)了無人機(jī)動態(tài)路徑規(guī)劃和避障。
本文在改進(jìn)斥力場勢函數(shù)的基礎(chǔ)上,采取分層避障策略,并在實(shí)際避障時根據(jù)實(shí)際應(yīng)用場景智能選擇最合適的避障方式,不僅解決了人工勢場方法的局部最小和目標(biāo)不可達(dá)問題,而且減少了規(guī)劃航跡的冗余,加快了無人機(jī)向目標(biāo)點(diǎn)移動的速度,節(jié)省了作戰(zhàn)時間,提高了效率。最后,通過仿真驗(yàn)證了設(shè)計(jì)的合理性和有效性,對實(shí)際作戰(zhàn)具有重要的理論指導(dǎo)意義。