付 強(qiáng),張樹禹,王久斌,馮富森
1) 北京科技大學(xué)自動化學(xué)院,北京 100083 2) 北京科技大學(xué)人工智能研究院,北京 100083
撲翼飛行器是一種模仿鳥類或者昆蟲的飛行方式實現(xiàn)飛行的新型無人飛行器,涉及仿生學(xué)、空氣動力學(xué)、機(jī)械設(shè)計、材料科學(xué)、計算機(jī)、通信與控制等多門學(xué)科.與傳統(tǒng)的固定翼和旋翼飛行器相比,撲翼飛行器具有更高的飛行效率和更靈活的飛行機(jī)動性[1],因此受到越來越多的關(guān)注與研究.國內(nèi)外的一些研究機(jī)構(gòu)和高校已經(jīng)研制出幾款能夠飛行的撲翼飛行器.
德國Festo公司研制出一款名為SmartBird[2]的仿海鷗撲翼飛行器,重450 g,翼展2 m,可以自主飛行和降落,空氣動力效率高達(dá)80%.美國麻省理工學(xué)院研制出一款名為Phoenix[3]的撲翼飛行器,可以通過手動遙控實現(xiàn)簡單的飛行動作,但控制系統(tǒng)不完善,穩(wěn)定性差,飛行時間短.
飛行控制是撲翼飛行器研究的關(guān)鍵技術(shù)之一,影響著撲翼飛行器的飛行性能,而定高飛行控制是飛行控制的一個基本要求,在巡航搜查、軍事偵察等方面有著重要應(yīng)用.撲翼飛行器定高控制方面,Ryu等[4]在一款微型撲翼飛行器上搭載了微型第一人稱視角(first person view,F(xiàn)PV)攝像頭,利用圖像處理算法實現(xiàn)撲翼飛行器的定位,結(jié)合控制算法實現(xiàn)了定高飛行.臺灣淡江大學(xué)Lin等[5]采用外部雙目相機(jī)檢測微型撲翼機(jī)的位置信息,加入閉環(huán)控制系統(tǒng),可以在室內(nèi)定高飛行.西北工業(yè)大學(xué)研發(fā)的仿信鴿撲翼飛行器Dove[6],結(jié)合GPS和慣性導(dǎo)航系統(tǒng)獲取其飛行姿態(tài)和位置信息,將無損卡爾曼濾波(unscented Kalman filter,UKF)加入控制算法中,實現(xiàn)其自主定高飛行.北京科技大學(xué)賀威[7]團(tuán)隊對一款X翼撲翼飛行器進(jìn)行改裝,加入了自主研發(fā)的控制芯片,同時搭建了基于多目相機(jī)的地面站,利用OptiTrack動作捕捉系統(tǒng)捕捉撲翼飛行器的位置信息,通過PID控制系統(tǒng)實現(xiàn)了定高飛行.
撲翼飛行器靈活度高,飛行機(jī)理復(fù)雜,導(dǎo)致其運(yùn)動模型也較為復(fù)雜,且翅膀撲動導(dǎo)致的振動問題[8]不能被忽視.此外,大多數(shù)撲翼飛行器的體積小、質(zhì)量輕,容易受到外界環(huán)境因素(例如風(fēng))的干擾,小負(fù)載導(dǎo)致高精度但質(zhì)量大的傳感器不能使用[9],只能使用低精度質(zhì)量小的傳感器,因此撲翼飛行器的定高飛行控制仍處于早期階段且面臨諸多問題.定高飛行控制常用的傳感器有慣性元件、GPS、氣壓計和視覺傳感器.慣性元件具有誤差累積缺陷,對初始值過于敏感;GPS不能在一些特定環(huán)境(例如室內(nèi))使用;氣壓計測量精度低,容易受天氣影響.視覺傳感器的誤差不會累積,抗干擾能力強(qiáng)、適用范圍廣,更善于捕捉運(yùn)動物體[10],被越來越多的應(yīng)用在無人機(jī)導(dǎo)航系統(tǒng)中.
現(xiàn)有基于視覺的撲翼飛行器定高控制方案主要采用深度相機(jī)、雙目相機(jī)或者是動作捕捉系統(tǒng).深度相機(jī)可以檢測物體的深度信息[11],但是測量范圍窄、測量噪聲大,容易受到環(huán)境的干擾,并且需要額外的設(shè)備,使用成本較高.雙目相機(jī)基于視差原理計算圖像對應(yīng)點的位置偏差,可以獲取物體的大小和距離,但是使用前需要進(jìn)行參數(shù)標(biāo)定工作[12],量程和精度[13]受雙目基線[14]和分辨率的限制.動作捕捉系統(tǒng)例如OptiTrack和Vicon基于立體視覺原理,采用多個相機(jī)拍攝被標(biāo)記物體,可以獲得標(biāo)記點的空間位置[15],但是其參數(shù)標(biāo)定工作復(fù)雜,計算量大,設(shè)備成本高昂且不易攜帶.
本文采用LED燈標(biāo)記撲翼飛行器,單目USB攝像頭采集圖像數(shù)據(jù),通過地面站實時圖像處理程序獲取標(biāo)記點在圖像上的像素坐標(biāo),經(jīng)過單神經(jīng)元PID控制算法得出控制量并發(fā)送給撲翼飛行器,使其在圖像上的坐標(biāo)保持在圖像的中心橫線處,實現(xiàn)定高飛行,其具有以下特點:
(1)搭建了一款微型撲翼飛行器,搭載自主研發(fā)的控制電路板,實現(xiàn)了定高控制飛行;
(2)基于圖像的定高飛行,相比于基于位置的定高飛行,無需進(jìn)行相機(jī)的內(nèi)外參數(shù)標(biāo)定工作;
(3)采用單神經(jīng)元PID控制器,控制效果好于常規(guī)的PID控制器.
為了排除環(huán)境因素的影響,實驗環(huán)境被設(shè)定為室內(nèi).由于室內(nèi)實驗環(huán)境有限,為防止其飛出實驗范圍并造成物品損壞,需要對撲翼飛行器的飛行范圍加以限制.
如圖1所示,X翼撲翼飛行器通過一根細(xì)線連接在一個帶底座的鋼管上,連接處安裝有軸承來保證其飛行過程中不會受到鋼管的摩擦阻力.細(xì)線為撲翼飛行器提供了向心力,保證其繞桿進(jìn)行圓周運(yùn)動,同時還提供了向上的拉力,當(dāng)撲翼飛行器飛行時,向上拉力減小,沒有改變撲翼飛行器的飛行高度與翅膀撲動頻率正相關(guān)的關(guān)系,而撲動頻率由自身的空心杯電機(jī)的轉(zhuǎn)速決定,要使撲翼飛行器在圖像上的坐標(biāo)保持在中心橫線處,需計算出相應(yīng)的電機(jī)轉(zhuǎn)速.撲翼飛行器的飛行機(jī)理復(fù)雜,運(yùn)動參數(shù)較多且耦合性強(qiáng),若通過建立運(yùn)動模型計算出特定飛行高度所需的電機(jī)轉(zhuǎn)速,需要精確的運(yùn)動模型,計算量大且需要對模型進(jìn)行實驗驗證,將消耗大量時間,并且適用模型單一,推廣性較差.因此本文采用單目相機(jī)拍攝撲翼飛行器的飛行圖像,基于無模型單神經(jīng)元PID控制系統(tǒng)控制撲翼飛行器在圖像的中心橫線附近飛行,實現(xiàn)基于圖像的定高飛行.當(dāng)單目相機(jī)水平放置時,撲翼飛行器將與單目相機(jī)等高度飛行.
圖1 問題描述示意圖Fig.1 Illustration of the problem formulation
本文的撲翼飛行器采用X翼結(jié)構(gòu),有兩對翅膀,如圖2所示.該撲翼飛行器重16 g,翼展25 cm,由于機(jī)身重量輕、翅膀面積小,所以抗風(fēng)性能較弱,只適合在室內(nèi)飛行.機(jī)身骨架由3D打印制成,具有輕巧、定制程度高的特點,翅膀采用聚氯乙烯薄膜制成.采用6 mm空心杯電機(jī)和3.7 V的70 mA·h鋰電池.撲翼飛行器頭部添加了一顆藍(lán)色LED燈,作為標(biāo)記點,并且搭載了自主研發(fā)的飛行控制電路板.
圖2 X翼撲翼飛行器Fig.2 FWAV with the X-wing
飛行控制電路板如圖3所示,長39 mm,寬26 mm,重3.8 g,包含一顆32位的基于ARMCortex-M3架構(gòu)的低功耗芯片STM32L151、藍(lán)牙通訊模塊HC-06、電源轉(zhuǎn)換模塊、一個3.7 V空心杯電機(jī)輸出口和一個LED燈輸出口,該電路板采用3.7 V電池供電.飛行過程中,控制電路板通過藍(lán)牙模塊接收地面站發(fā)送的控制信號,控制空心杯電機(jī)的轉(zhuǎn)速和LED燈的亮滅.控制電路板接收到地面站發(fā)送的控制信號后,便保持該控制狀態(tài),直到下一次地面站的控制信號發(fā)送過來,降低了地面站的通訊工作量.
圖3 飛行控制電路板Fig.3 Flight control circuit board
單目相機(jī)的成像原理[16]如圖4所示:世界坐標(biāo)系O?XwYwZw中 的點P(Xc,Yc,Zc)通過透視投影在像平面成像,成像點為p,像平面的像素坐標(biāo)系以像素點為單位,以圖像左上角O0點為原點,成像點p在以O(shè)0點為原點的坐標(biāo)系中的坐標(biāo)為由于本文是控制撲翼飛行器始終處于圖像的中心橫線上,是基于圖像而不是基于位置的飛行高度控制,所以不需要進(jìn)行相機(jī)的內(nèi)外參數(shù)的標(biāo)定工作.
圖4 單目相機(jī)成像原理圖Fig.4 Imaging principle of the monocular camera
本文采用標(biāo)記點檢測法檢測撲翼飛行器在圖像上的位置信息,采用主動發(fā)光標(biāo)記點,即LED燈,相比較被動式標(biāo)記點例如紅外反光標(biāo)記點,不需要額外的紅外光源和紅外相機(jī),使用成本低,適用范圍更廣.視覺檢測流程如圖5所示,單目相機(jī)采集到的圖像經(jīng)過高斯濾波去除噪聲,之后轉(zhuǎn)換為HSV色彩空間圖,設(shè)置顏色閾值進(jìn)行二值化,分割出藍(lán)色區(qū)域.為了排除其他反光物體造成的干擾,對分割圖進(jìn)行輪廓檢測,并計算每塊輪廓的面積,采用面積最大的輪廓作為藍(lán)色LED燈的輪廓,計算該輪廓質(zhì)心坐標(biāo)作為LED燈在圖像上的坐標(biāo).
圖5 視覺檢測流程圖Fig.5 Flowchart of visual detection
本文對視覺檢測各環(huán)節(jié)的耗時進(jìn)行了測試,測試環(huán)境為:120 Hz高速攝像頭,圖像分辨率為640像素×480像素,電腦CPU型號為i5-4210U,主頻1.7 GHz,4 G內(nèi)存,Windows 10操作系統(tǒng).運(yùn)行耗時如表1所示,平均每幀耗時12 ms.考慮到卡爾曼濾波、單神經(jīng)元PID控制系統(tǒng)、地面站界面更新、串口發(fā)送數(shù)據(jù)等環(huán)節(jié)都會消耗時間,本文將圖像采樣周期設(shè)置為33 ms,既能滿足控制需求,又能避免圖像檢測部分耗時過多而導(dǎo)致地面站運(yùn)行卡頓的現(xiàn)象.
由于環(huán)境因素(如光線)的干擾以及撲翼飛行器姿態(tài)的變化,標(biāo)記點的檢測結(jié)果具有一定的噪聲.卡爾曼濾波可以根據(jù)運(yùn)動目標(biāo)上一時刻的運(yùn)動狀態(tài)預(yù)測當(dāng)前時刻運(yùn)動狀態(tài),并結(jié)合當(dāng)前時刻的觀測值得出最優(yōu)估計值,消除噪聲.
表1 視覺檢測各部分耗時表Table 1 Time cost of visual detection
式中,Δt為采樣時間,則卡爾曼系統(tǒng)狀態(tài)方程和觀測方程如下:
式中,X(t|t?1)是根據(jù)t?1時刻最優(yōu)值X(t?1|t?1)得出的t時刻預(yù)測值,P(t|t?1)和P(t?1|t?1)分別對應(yīng)X(t|t?1)和X(t?1|t?1)的協(xié)方差.Q為系統(tǒng)過程的協(xié)方差矩陣.
結(jié)合當(dāng)前時刻的預(yù)測值和觀測值,可以得到當(dāng)前時刻的最優(yōu)估計值X(t|t)和協(xié)方差P(t|t):
式中,I為單位矩陣,K(t)為卡爾曼增益(Kalman gain):
式中,R為觀測噪聲的方差.
此外,利用單目相機(jī)檢測運(yùn)動物體可能會出現(xiàn)標(biāo)記點被短暫遮擋、檢測目標(biāo)丟失的現(xiàn)象.利用卡爾曼預(yù)估可以得到當(dāng)前運(yùn)動狀態(tài)的估計值,用于控制系統(tǒng)的反饋,直到運(yùn)動物體再次被檢測出,增加系統(tǒng)的魯棒性.如圖6所示,根據(jù)當(dāng)前時刻的觀測結(jié)果判斷標(biāo)記點是否被遮擋,如果沒被遮擋,則將觀測值帶入卡爾曼濾波器中,得出最優(yōu)估計值反饋給單神經(jīng)元PID控制器;如果標(biāo)記點被遮擋,則通過卡爾曼預(yù)測即公式(3)得出預(yù)測值,作為當(dāng)前時刻的最優(yōu)估計值,反饋給控制器.
圖6 觀測結(jié)果處理流程圖Fig.6 Flowchart of observation result processing
圖7、圖8是定高控制系統(tǒng)的示意圖與結(jié)構(gòu)框圖:外部單目相機(jī)拍攝撲翼飛行器的飛行圖像,通過地面站圖像檢測算法檢測出標(biāo)記點在圖像上的坐標(biāo),經(jīng)過卡爾曼濾波反饋給單神經(jīng)元PID控制器,計算出電機(jī)轉(zhuǎn)速并通過藍(lán)牙發(fā)送給撲翼飛行器的飛行控制電路板,從而實現(xiàn)定高控制.
圖7 定高控制系統(tǒng)示意圖Fig.7 Illustration of the fixed-height control system
由于常規(guī)PID控制器的參數(shù)無法在控制過程中實時調(diào)整,適應(yīng)能力較弱,因此本文采用單神經(jīng)元PID控制器.單神經(jīng)元又被稱為感知器,是神經(jīng)網(wǎng)絡(luò)的重要組成單元,單神經(jīng)元對不同的輸入施加不同的權(quán)重并求和,并通過激勵函數(shù)得出結(jié)果,通過學(xué)習(xí)算法修改權(quán)重值來實現(xiàn)其自學(xué)習(xí)功能[17],因此對環(huán)境的變化具有一定的適應(yīng)能力,有較強(qiáng)的魯棒性.
圖8 控制系統(tǒng)結(jié)構(gòu)框圖Fig.8 Structure diagram of the control system
假設(shè)圖像中心橫線的縱坐標(biāo)為vc(k),k表示當(dāng)前是第k個控制周期,撲翼飛行器的實際高度為y(k),單目相機(jī)檢測到撲翼飛行器頭部標(biāo)記點在圖像上的縱坐標(biāo)經(jīng)過濾波算法得到vz(k),則誤差e(k)=vc(k)?vz(k);由于位置式PID表達(dá)式:
則單神經(jīng)元的輸入x1、x2、x3分別為:
單神經(jīng)元的輸出為:
式中,Ku為單神經(jīng)元的輸出增益系數(shù),wi(k)為第i個輸入量的權(quán)重,對應(yīng)于公式(6)PID控制器中比例系數(shù)KP、積分系數(shù)KI、微分系數(shù)KD.
單神經(jīng)元采用有監(jiān)督Hebb學(xué)習(xí)規(guī)則,實現(xiàn)單神經(jīng)元輸入權(quán)重的自調(diào)節(jié).Hebb學(xué)習(xí)是一類相關(guān)學(xué)習(xí),其基本思想是如果兩個細(xì)胞在同一時刻被激發(fā),則兩者之間的聯(lián)系會增強(qiáng),反之減弱;將期望與輸出引入Hebb學(xué)習(xí)規(guī)則中,構(gòu)成有監(jiān)督Hebb學(xué)習(xí)規(guī)則,得到PID參數(shù)自適應(yīng)的單神經(jīng)元的學(xué)習(xí)規(guī)則:
式中,ηi是第i個輸入對應(yīng)權(quán)重wi(k)的學(xué)習(xí)率.
單神經(jīng)元PID控制器的控制效果與單神經(jīng)元的輸出增益系數(shù)Ku、第i個輸入量的權(quán)重wi、輸入權(quán)重的學(xué)習(xí)率ηi有關(guān),在使用前需要進(jìn)行調(diào)整,經(jīng)過多次實驗,總結(jié)出以下調(diào)整規(guī)律:
(1)Ku值的調(diào)整:先確定一個較小數(shù)值(如0.1),根據(jù)實驗結(jié)果進(jìn)行調(diào)整,超調(diào)過大則減小Ku,穩(wěn)定時間太長就增大Ku;
(2)權(quán)重wi的初始值:初始值對控制效果影響不大,數(shù)量級在0.01到10之間即可,三個權(quán)重初始值可保持一致;
(3)學(xué)習(xí)率ηi的調(diào)整:若穩(wěn)定時間太長,則增大η1和η3;若響應(yīng)從超調(diào)迅速下降至給定值以下,之后緩慢上升,穩(wěn)定時間太長,則可降低η1,增大η2.
掌握調(diào)試規(guī)律后,一般可在10次以內(nèi)調(diào)試出合適的控制器參數(shù).
為了驗證上述定高方案在實際環(huán)境下的可行性,搭建了基于外部單目視覺的X翼定高控制系統(tǒng).系統(tǒng)由地面站軟件和電腦、單目相機(jī)、三腳架、X翼撲翼飛行器、底座等硬件組成.地面站軟件采用C++語言和Qt平臺編寫,圖像處理部分基于OpenCV開源函數(shù)庫.地面站軟件主界面如圖9,包含圖像采集、定高控制和串口通訊三個子界面.
圖9 地面站界面Fig.9 Software interface of the ground station
單目相機(jī)采用USB高速攝像頭,型號為QRUSBFHD01M.該攝像頭能達(dá)到的最高分辨率為1920像素×1080像素,但過高分辨率會降低系統(tǒng)的運(yùn)行速度,因此本文采用的分辨率為640像素×480像素,圖像采樣周期為33 ms,即每秒30幀;地面站所用電腦型號為華碩x555ld,CPU為酷睿i5-4210U,主頻1.7 GHz,4 G內(nèi)存,Windows 10操作系統(tǒng).
如圖10所示,單目USB攝像頭固定在經(jīng)過水平儀水平校準(zhǔn)的三腳架平臺上,通過USB接口接入電腦,X翼的初始位置為自然垂落的最低點位置.啟動地面站軟件并打開攝像頭和LED標(biāo)識燈,如果采用常規(guī)PID控制,則需在控制界面輸入PID控制參數(shù);若采用單神經(jīng)元PID控制則需要事先對單神經(jīng)元的初始權(quán)重和學(xué)習(xí)率進(jìn)行調(diào)試,不用輸入PID控制參數(shù).
圖10 實物實驗圖Fig.10 Physical experiment
在搭建好的實驗平臺上進(jìn)行多次定高飛行實驗,圖像分辨率為640像素×480像素,中心橫線的縱坐標(biāo)為240像素,撲翼飛行器的初始狀態(tài)為自由下垂,縱坐標(biāo)為212像素.在某一時刻提供階躍信號,此時記為第0幀,階躍響應(yīng)如圖11所示.常規(guī)PID控制器控制下:撲翼飛行器分別在第31幀(第1秒)和第114幀(第3.8秒)到達(dá)階躍穩(wěn)態(tài)值的10%和90%,上升時間為2.8 s;單神經(jīng)元PID控制器控制下:撲翼飛行器分別在第31幀(第1秒)和第123幀(第4.1秒)到達(dá)階躍穩(wěn)態(tài)值的10%和90%,上升時間為3.1 s;但是常規(guī)PID控制器的控制精度較低,最大誤差約為7%,而單神經(jīng)元PID的控制精度較高,撲翼飛行器在第256幀(第8秒)后最大誤差約為3%.
圖11 PID控制飛行高度曲線Fig.11 Flight height curve of the PID controller
通過分析實驗結(jié)果,得出以下結(jié)論:
(1)單神經(jīng)元PID控制下,撲翼飛行器的飛行高度響應(yīng)速度稍微低于常規(guī)PID控制,但是控制誤差要明顯小于常規(guī)PID控制下的控制誤差,而且不需要調(diào)節(jié)比例、積分、微分參數(shù),做到了參數(shù)自適應(yīng);
(2)無論是常規(guī)PID控制器還是單神經(jīng)元PID控制器,飛行高度誤差總會出現(xiàn)周期性變化,原因是相機(jī)成像具有近大遠(yuǎn)小的特點,單目相機(jī)不能檢測出飛行器與相機(jī)的距離,當(dāng)撲翼飛行器進(jìn)行水平圓周運(yùn)動時,就會周期性的遠(yuǎn)離或靠近單目相機(jī),導(dǎo)致檢測到的飛行高度出現(xiàn)周期性的變化,目標(biāo)物體離單目相機(jī)越遠(yuǎn),變化越小;
(3)撲翼飛行器飛行過程中飛行姿態(tài)會發(fā)生變化,從而影響外部相機(jī)捕捉藍(lán)色標(biāo)記點,降低了控制精度; 可以采用多標(biāo)記點的方法來降低系統(tǒng)誤差,但可能會增加系統(tǒng)的計算量,降低實時性;
(4)撲翼飛行器的負(fù)載較低,機(jī)身所帶發(fā)光標(biāo)記點功耗較低,亮度低.由于采用外部單目相機(jī)捕捉藍(lán)色標(biāo)記點的方法進(jìn)行撲翼飛行器的識別與定位,因此當(dāng)撲翼飛行器自由飛行時,飛行半徑過大,攝像頭難以檢測到藍(lán)色標(biāo)記點,較難實現(xiàn)自由自主飛行.
本文針對撲翼飛行器的定高飛行控制,提出了一種基于外部單目視覺的定高控制系統(tǒng).采用藍(lán)色LED燈作為撲翼飛行器標(biāo)識點,利用單目相機(jī)拍攝撲翼飛行器,通過圖像處理算法獲取標(biāo)記點在圖像上的像素縱坐標(biāo),結(jié)合單神經(jīng)元PID控制器調(diào)節(jié)撲翼飛行器的電機(jī)轉(zhuǎn)速,實現(xiàn)了基于圖像的撲翼飛行器定高飛行.該系統(tǒng)不需要進(jìn)行相機(jī)的內(nèi)外參數(shù)標(biāo)定,使用成本低,簡單易實現(xiàn),具有一定的應(yīng)用價值.