陳鴻宇,卜方玲,趙筱玥,汪志航
(武漢大學 電子信息學院,湖北 武漢 430072)
近年來,由于輕便、體積小、成本低等優(yōu)點,無人機在自然災害地區(qū)調查以及交通和事故監(jiān)測等領域得到了廣泛的關注[1,2]。在上述任務中,無人機需要自動沿著預先設定的軌跡飛行[3],即實現(xiàn)路徑跟隨。預設的路徑常常使用一系列的路徑點來描述[4]。為了引導偏離航跡的無人機回到預設路徑上并沿路徑繼續(xù)飛行,無人機需要不斷改變其航向,航向改變所依據(jù)的規(guī)則被稱為引導率。研究者們設計了一系列的引導率來實現(xiàn)路徑跟隨,Kothari等結合了純追蹤法和視線法,提出了PLOS(pure pursuit and line-of-sight)引導率[5]。Sujit等總結了包括carrot chase和NLGL在內的5種引導率[6],通過仿真研究了不同參數(shù)選擇下路徑跟隨的結果,并制定了相應的評價指標,對引導結果進行評價。通過Sujit的工作,可以看出參數(shù)的選擇對引導結果影響很大,但是上述方法中均缺乏參數(shù)選擇的策略。為此,本文選取了廣泛應用于實際飛行中的carrot chase和路徑跟隨結果非常優(yōu)秀的NLGL引導率,用于無人機路徑跟隨算法中引導率最優(yōu)參數(shù)選擇問題的研究。
選擇一個引導率參數(shù),使得在相應的指標下路徑跟隨的結果達到最優(yōu),是一個優(yōu)化問題。優(yōu)化問題有兩類解決辦法,一種是精確算法,另一種是啟發(fā)式算法[7]。精確算法在全局搜索域內尋找最優(yōu)解,效率低,只適用于小規(guī)模問題。啟發(fā)式算法易于實現(xiàn),不需要梯度信息,能避免局部最優(yōu),被廣泛應用于求解優(yōu)化問題[8]。常用的啟發(fā)式算法有模擬退火、遺傳算法、群體優(yōu)化算法等。模擬退火算法是一種隨機算法,非常易于實現(xiàn)[9],然而為了接近全局最優(yōu)解,最終溫度會被設置為極低的值,使其收斂速度下降,也有可能陷在局部最優(yōu)解中[10]。群體優(yōu)化算法如粒子群算法,對初始種群的選擇具有很好的魯棒性,但是在接近全局最優(yōu)解時,搜索速度會下降且容易陷于局部最優(yōu)解中[11]。遺傳算法因其具有全局搜索的特性往往能取得出色的結果[12],且搜索從群體出發(fā),具有潛在的并行性和魯棒性。為了得到魯棒性的全局最優(yōu)解,本文選擇遺傳算法作為該問題的解決方法。
針對路徑跟隨算法中引導率參數(shù)選擇非優(yōu)化的問題,本文提出了一種基于遺傳算的引導率參數(shù)優(yōu)化選擇方法,構建無人機自適應路徑跟隨系統(tǒng),實現(xiàn)了無人機自適應路徑跟隨。首先根據(jù)路徑的信息、無人機的初始姿態(tài)以及引導率,用遺傳算法計算出代價最小的引導率參數(shù),然后再將該參數(shù)引入相應引導率中,引導無人機進行朝著預設的路徑飛行。
無人機路徑跟隨的目的是為了讓無人機能夠準確地、自動地沿著預設的路徑飛行[13]。用數(shù)學模型[6]來描述這一問題,如圖1所示,給定一條路徑(由路徑點Wi和Wi+1來描述),無人機的初始位置P、速度v和航向角,路徑跟隨算法的目標是,在無人機飛行過程中,最小化無人機到路徑的距離d,以及航向角與路徑角度θ之間的差值,即隨著時間t增大,使d→0,|-θ|→0。通過路徑跟隨算法中的引導率,計算出無人機下一時間點所要求的航向角,從而不斷調整無人機航向角,使其在任務進行過程中能夠精確回到預設路徑上,并沿著路徑飛行。
圖1 路徑跟隨
本文聚焦于無人機在二維空間的路徑跟隨,因此算法只需要控制無人機的航向角,同時將無人機速度方向控制為機頭方向。路徑跟隨算法中引導率的輸出往往為徑向加速度控制量u,可根據(jù)如下式(1)計算得到航向角
(1)
路徑跟隨算法中的核心規(guī)則為引導率,它根據(jù)輸入的預設路徑和無人機位置、姿態(tài)信息,生成相應的控制指令,即航向角的控制信息。本文選取了廣泛應用于實際飛行的carrot chase以及路徑跟隨效果非常優(yōu)秀NLGL引導率,在以下兩小節(jié)中進行簡單的介紹。
1.2.1 Carrot chase引導率
Carrot chase是路徑跟隨算法中最為廣泛應用的引導率之一,該算法通過在路徑上設置虛擬目標,使無人機不斷追逐虛擬目標,從而實現(xiàn)路徑跟隨。虛擬目標的設置如圖2所示,根據(jù)無人機的位置和預設路徑,計算出無人機在路徑上的投影P′,再將其加上一個參數(shù)δ,得到虛擬目標S。
圖2 Carrot chase引導率虛擬點設置
引導率的輸出,即徑向加速度控制量u的定義為
u=k(d-)
(2)
其中,ψd為無人機位置P和虛擬目標S連線與水平軸之間的夾角,k為控制增益,參照文獻[6]取k=0.5。改變參數(shù)δ的值,虛擬目標的位置會產(chǎn)生變化,路徑跟隨結果也會有所不同。
1.2.2 NLGL引導率
NLGL引導率也用到了虛擬目標的概念,如圖3所示,以無人機位置為圓心,參數(shù)L為半徑畫圓,與路徑相交于S和S′,取前進方向與該圓的交點為虛擬目標。
圖3 NILG引導率虛擬點設置
引導率輸出定義為
u=2v2sin(η)/L
(3)
其中,v為無人機速度,η為虛擬目標和位置連線與無人機飛行方向之間的夾角。若L值小于無人機到路徑的距離,則將u確定為一個固定值,直到無人機到路徑距離小于L的值。改變參數(shù)L的值,將改變虛擬目標的位置,同時由式(3)可以看出,會對控制量u產(chǎn)生影響,從而改變路徑跟隨的結果。由此可見,引導率參數(shù)的選擇對路徑跟隨算法至關重要。
遺傳算法是一種基于生物遺傳過程的自然優(yōu)化機制的啟發(fā)式算法[14],算法受到達爾文進化生物學的啟發(fā),使用遺傳、選擇、變異和交叉技術來尋找最優(yōu)解[15]。遺傳算法首先隨機初始化一個種群,然后對種群進行選擇、變異和交叉操作,以產(chǎn)生下一代種群,直到滿足終止條件(通常為確定一個迭代次數(shù)),輸出最優(yōu)個體。迭代過程中,使用適應度函數(shù)來評價個體,適應度函數(shù)得分越高,產(chǎn)生的個體越接近最優(yōu)解。
將遺傳算法用于引導率的參數(shù)選擇,以carrot chase引導率為例,將參數(shù)δ作為遺傳算法中的個體,用十進制的方式進行參數(shù)編碼,隨機生成一個初始種群。選擇操作基于輪盤賭的思想,適應度值越大,該個體被選擇為父代的概率越大。被選擇為父代的個體將進行之后的交叉、變異以及精英選擇操作。交叉則是隨機選取兩個父代個體,進行基因重組,對于十進制編碼的個體,即以一個隨機的權重,求得兩個父代的加權和作為下一代個體。變異保證了遺傳的多樣性,對于十進制編碼的個體,隨機選取一個父代,使它的值隨機上下浮動,產(chǎn)生的新個體作為下一代子代。為了使得遺傳算法能更快的收斂,將會在每次迭代中選擇最佳的個體作為精英個體,該精英個體直接保留到下一代中,該操作稱之為精英選擇。為了完成上述操作,最為關鍵的是定義一個適應度函數(shù)。我們定義了路徑跟隨評價指標作為適應度函數(shù),以對結果進行定量的比較。
常用的路徑跟隨評價指標有航跡誤差和控制效益。航跡誤差是指無人機到路徑的距離d,而控制效益則為式(2)、式(3)中的控制量u。綜合考慮航跡誤差和控制效益,參考文獻[6],我們定義評價指標ξ為
(4)
(5)
(6)
Γ為權重,下文中選擇為0.5。無人機是否回到路徑上的判斷準則為:若最后時刻無人機位置距離路徑不超過1 m且此時航向角與路徑方向差值不超過0.1弧度,則判定為回到路徑上,否則,判定為未回到路徑上。
由于路徑跟隨指標ξ越小說明路徑跟隨結果越佳,而遺傳算法會選擇適應度更高的個體,因此我們將適應度函數(shù)定義為
(7)
不同的參數(shù)δ將會計算出一條不同的路徑,其航跡誤差和控制效益也會有所差異,根據(jù)式(7)中的適應度函數(shù),將會產(chǎn)生不同適應度值,在進行一定代數(shù)的選擇、交叉、變異及精英選擇操作后,輸出一個最優(yōu)的個體δ。整個過程見表1。
表1 總體框架
NLGL引導率的參數(shù)選擇也與上述方法類似,只是將遺傳算法的個體修改為參數(shù)L,其它步驟類似。
針對路徑跟隨算法中忽略引導率參數(shù)選擇的問題,提出了一種基于遺傳算法的引導率參數(shù)優(yōu)化選擇方法。方法流程如圖4所示,首先將初始信息,包括路徑點坐標,無人機飛行速度和方向以及選用的引導率傳入遺傳算法中,遺傳算法根據(jù)適應度函數(shù)計算出一個最優(yōu)的引導率參數(shù),然后每隔一段時間獲取無人機實時的位置信息和姿態(tài)信息(主要是航向角),輸入到引導率中,計算出無人機應該調整的角度,控制無人機飛行,從而實現(xiàn)路徑跟隨。
圖4 無人機路徑跟隨流程
實驗分2步進行,第一步計算路徑跟隨引導率最優(yōu)參數(shù),第二步,根據(jù)計算出的引導率和無人機路徑跟隨流程,編制軟件,在大疆無人機上實現(xiàn)路徑跟隨。遺傳算法計算最優(yōu)參數(shù)基于Matlab實現(xiàn),計算環(huán)境是在處理器為i5-4460,CPU為3.2 GHz的臺式電腦和64位Windows系統(tǒng)。計算得到了最優(yōu)參數(shù)后,實際的飛行測試是在大疆M100上實現(xiàn)的,大疆M100上搭載了Manifold開發(fā)板,作為路徑跟隨算法的運行軟硬件平臺,無人機的定位使用的是GPS。整個無人機平臺如圖5所示。
圖5 無人機平臺
本文選取了武漢大學學校操場的一條直線路徑,如圖6所示,用兩個路徑點來描述,以第一個路徑點W1作為坐標原點,正北方向為Y軸正方向,正東方向為X軸正方向建立坐標系,則W1=(0,0),第二個路徑點W2=(-30.0,192.1),無人機的初始坐標為Puav=(18.9,14.3),坐標點的單位為m,無人機速度設定為3 m/s,初始航向為0°,即朝著正北方向。路徑跟隨算法的控制周期會影響路徑跟隨的結果,周期設置短,會增大控制效益;周期設置過長,會使跟隨結果呈折線狀態(tài),增加航跡誤差。同時,控制周期的選取也要考慮無人機的速度,若無人機速度小,無人機位置變化慢,此時根據(jù)路徑跟隨算法計算所得的控制量u變化也就不大,過小的控制周期會導致計算資源浪費;相反的,速度較大時由于位置變化快則需要較短的控制周期。綜合考慮兩者影響,本文選取控制周期為1 s。然后分別在carrot chase和NIGL引導率下進行實驗驗證,結果如圖7-圖10所示。
圖6 實驗路徑及無人機初始位置
圖7 適應度變化曲線
圖8 不同δ下無人機路徑跟隨結果
表2 不同δ下路徑跟隨結果評價
3.2.1 Carrot chase引導率
首先進行仿真確定最優(yōu)的δ參數(shù),迭代次數(shù)設置為100,遺傳算法的適應度變化曲線如圖7所示,算法到達40代左右時收斂,輸出的最優(yōu)參數(shù)為11.45,執(zhí)行時間約為1 min。
然后分別選取δ為5,11.45,20和30進行實際飛行驗證,飛行的軌跡如圖8所示。
用式(4)中的指標ξ,對上述4條路徑進行計算,結果見表2。
其中,δ為20和30時指標為1,這是因為此時無人機并未回到路徑上,仍在路徑上左右震蕩。從表2中可以看出,基于遺傳算法選擇的最優(yōu)參數(shù),路徑跟隨的結果能夠達到代價最小。
3.2.2 NLGL引導率
首先進行仿真確定最優(yōu)的L參數(shù),迭代次數(shù)設置為100,遺傳算法的適應度變化曲線如圖9所示,算法在20代左右收斂,輸出的最優(yōu)參數(shù)為18.44,執(zhí)行時間約為1 min。
圖9 適應度變化曲線
圖10 不同L下無人機路徑跟隨結果
然后分別選取L為10,18.44,30,40進行實際飛行驗證,飛行結果如圖10所示。
用式(4)中的指標ξ,對上述4條路徑進行計算,結果見表3。
從表3中可以看出,基于遺傳算法選擇的最優(yōu)參數(shù),路徑跟隨的結果能夠達到代價最小。
表3 不同L下路徑跟隨結果評價
上述兩個實驗結果表明,在Carrot chase和NLGL(nonlinear guidance law)這兩種引導率下,遺傳算法均能夠選擇出一個最優(yōu)參數(shù);使用該最優(yōu)參數(shù)能夠使得評價指標ξ值最小,即路徑跟隨的代價最小。
本文針對傳統(tǒng)路徑跟隨算法缺引導率參數(shù)優(yōu)化選擇的問題,基于遺傳算法提出了一種引導率參數(shù)優(yōu)化選擇方法,構建了無人機自適應路徑跟隨系統(tǒng)。給定路徑信息以及無人機初始位姿信息,能夠計算出一個最優(yōu)的引導率參數(shù),用于引導無人機回到預設路徑上。在大疆M100無人機平臺上進行了實際飛行測試,實驗結果表明,在carrot chase和NLGL兩種引導率下,遺傳算法選擇的參數(shù)是最優(yōu)的;且基于該參數(shù)實現(xiàn)的路徑跟隨代價最小。