詹計(jì)雨 韓士杰 雷笑天 金楠森 張健
摘要:針對四旋翼無人機(jī)避障的速度和精度,該文基于Arduino Mega2560單片機(jī)以及遺傳算法和蟻群算法,設(shè)計(jì)了一種新型無人機(jī)全局避障算法和的硬件結(jié)構(gòu)。全局避障算法針對航跡規(guī)劃,結(jié)合兩種啟發(fā)式算法,收斂速度快,不易早熟收斂。算法通過MATLAB仿真與無人機(jī)測試,效果良好。
關(guān)鍵詞:蟻群算法;遺傳算法;航跡規(guī)劃;Arduino Mega2560單片機(jī);無人機(jī)
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? 文章編號:1009-3044(2018)31-0098-03
四旋翼無人機(jī)的機(jī)械結(jié)構(gòu)好,可執(zhí)行多種任務(wù),應(yīng)用前景巨大。所以無人機(jī)航跡規(guī)劃算法和相應(yīng)的硬件結(jié)構(gòu)成為當(dāng)下研究熱點(diǎn)。
麻省理工學(xué)院研制的Kinect,基于SLAM算法進(jìn)行環(huán)境建模,自主3D地形映射與飛行,功能非常先進(jìn)。即使在GPS盲區(qū)與障礙物密集的城市也能安全飛行。
本文旨在對避障無人機(jī)進(jìn)行整體設(shè)計(jì)。使無人機(jī)可以安全快捷的避障。無人機(jī)外骨架防撞功能較強(qiáng),不會傷及行人。航跡規(guī)劃使用改進(jìn)的蟻群算法,結(jié)合傳統(tǒng)蟻群算法與遺傳算法的優(yōu)勢,使算法收斂速度更快,不易陷入局部最優(yōu)解。無人機(jī)整體效果達(dá)到預(yù)期。
1 無人機(jī)硬件結(jié)構(gòu)
無人機(jī)外殼堅(jiān)固輕便,減少了飛機(jī)重量和慣性對于避障的影響。外圍的圓形保護(hù)器通過四個減震器與無人機(jī)主體連接,可以防止無人機(jī)碰撞建筑物或者將人劃傷,擁有比較強(qiáng)的防撞擊功能,整體如圖1所示。
使用KS103超聲波測距模塊,波束角為45°-50°,分別放置在無人機(jī)的水平方向的4個方向與豎直的2個方向,水平方向每隔90°安裝一個測距模塊。超聲波發(fā)射與接收的時(shí)間的數(shù)據(jù),通過I2C方式傳送給Arduino Mega2560開發(fā)板。
2 無人機(jī)避障算法
2.1 環(huán)境建模
采用柵格圖法進(jìn)行環(huán)境模型的構(gòu)建。假設(shè)無人機(jī)飛行的空間區(qū)域?yàn)镾,不妨表示為
[{xmin≤x≤xmax,ymin≤y≤ymax,zmin≤z≤zmax}]
考慮到GPS模塊的會有1-2米的誤差,故緯度值每0.003分為一個單位,約5.511米,作為坐標(biāo)系的橫坐標(biāo)。經(jīng)度值每0.002分為一個單位,約3.674米,作為縱坐標(biāo)。而豎直方向的單位長度為1米。如果這個柵格有障礙物,無人機(jī)就不能通過。
y,z對應(yīng)坐標(biāo)值同理。Ceil()表示向正方向取整。
在主方向上每隔一個單位長度劃分一個平面,最后不足一個單位長度的按照一個單位長度來補(bǔ)齊。對應(yīng)平面記為[S1,S2,...,Sn]。
2.2 全局航跡規(guī)劃
航跡規(guī)劃采用改進(jìn)的三維蟻群算法,傳統(tǒng)的三維蟻群算法雖然魯棒性強(qiáng),但收斂速度慢,在時(shí)間有限的情況下往往無法得到良好結(jié)果。
我們基于傳統(tǒng)蟻群算法,結(jié)合遺傳算法的優(yōu)勢染色體選擇、交叉操作與蟻群算法的信息素更新與螞蟻按概率轉(zhuǎn)移等特點(diǎn)。使算法本身不易陷入局部最優(yōu)解,收斂比較快。
四旋翼無人機(jī)航跡規(guī)劃需要短的航跡長度、低的飛行高度。故選定適應(yīng)度函數(shù)為:
如圖2所示,平面之間有小段航跡,但因?yàn)闊o人機(jī)會變換主方向,所以平面之間有每個航跡的至少一段航跡。比如AB,CD。首先判斷AD,CB,也就是虛線部分是否聯(lián)通,只要不是都聯(lián)通就搜索下一組平面。如果AB,CD重合,也要搜索下一組平面。然后計(jì)算AB,CD,AD,CB的適應(yīng)度[FAB、FCD、FAD、FBC],如果滿足[FAB+FCD>FAD+FBC],就按照圖4方式交叉,然后交叉結(jié)束。如果一組平面有多段航跡,盡量兩兩之間都判斷一次。這里采用染色體的單點(diǎn)交叉。
K為系數(shù),注意取值合適的值。這里[λ]表示信息素的衰減系數(shù)。這里信息素不進(jìn)行局部更新。
信息素更新后開始下一次迭代。
3 算法仿真與分析
為了驗(yàn)證本文的航跡規(guī)劃算法。我們利用二元高斯分布的概率密度函數(shù)模擬山峰,進(jìn)行算法仿真。函數(shù)如下:
起點(diǎn)選擇(-0.5,3,0)。終點(diǎn)選為(-2.5,-2.5,0)。經(jīng)過仿真結(jié)果如圖3:
算法通過適應(yīng)度排序,刪除相同路徑。保證了全局更新信息素時(shí),同一條路徑的信息素不會重復(fù)增加,抑制算法早熟。
同時(shí)通過一號螞蟻與二號螞蟻的配合,與模仿染色體單點(diǎn)交叉的航跡交叉,可以持久尋求全局最優(yōu)解。
比較來說,本文算法比傳統(tǒng)蟻群算法更簡單高效。局部避障算法經(jīng)過無人機(jī)測試,切實(shí)有效,避障比較迅速。
4 結(jié)論
本文結(jié)合超聲波傳感器KS103、數(shù)據(jù)傳輸模塊、開發(fā)板Arduino Mega2560和pixhawk飛控芯片完成對避障無人機(jī)核心硬件的開發(fā)。無人機(jī)的機(jī)械結(jié)構(gòu),使其擁有較強(qiáng)防撞能力以及較輕的質(zhì)量和良好的散熱能力。無人機(jī)全局避障算法有良好效果。算法經(jīng)過仿真與無人機(jī)驗(yàn)證,切實(shí)可行。
參考文獻(xiàn):
[1] 李彥蒼,彭揚(yáng).基于信息熵的改進(jìn)人工蜂群算法[J].控制與決策,2015,30(6):1121-1125.
[2] 呂甜甜. 四旋翼無人機(jī)航跡規(guī)劃技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2015.
[3] 馮國強(qiáng),趙曉林,高關(guān)根,等.基于A~*蟻群算法的無人機(jī)航路規(guī)劃[J].飛行力學(xué),2018(5):1-5.