□ 葛維桐 □ 郝永平 □ 有德義
沈陽(yáng)理工大學(xué) 裝備工程學(xué)院 沈陽(yáng) 110159
隨著近年來(lái)無(wú)人機(jī)研究的迅速發(fā)展,計(jì)算機(jī)視覺技術(shù)、人工智能技術(shù)與智能控制的發(fā)展越來(lái)越快,在無(wú)人機(jī)平臺(tái)目標(biāo)識(shí)別與跟蹤功能中的應(yīng)用越來(lái)越廣泛。在民用領(lǐng)域,無(wú)人機(jī)應(yīng)用于三維地形測(cè)繪、野外搜救等方面。在軍事領(lǐng)域,無(wú)人作戰(zhàn)飛機(jī)具有強(qiáng)大的自主攻擊能力,可以通過成像分析技術(shù)實(shí)現(xiàn)對(duì)敵方目標(biāo)的精準(zhǔn)識(shí)別和跟蹤,從而實(shí)現(xiàn)有效的打擊。隨著開源硬件熱度的上升和固件的更新,無(wú)人機(jī)產(chǎn)業(yè)迎來(lái)快速發(fā)展的春天[1]。許多研究致力于無(wú)人機(jī)的自動(dòng)跟蹤,但是能夠自主跟蹤機(jī)動(dòng)目標(biāo)的無(wú)人機(jī)要求很高,研究大多集中在視覺圖像處理與控制追蹤算法方面,通過研究得到識(shí)別更多目標(biāo)、識(shí)別速度更快、識(shí)別準(zhǔn)確率和實(shí)時(shí)性更高的算法,解決由于遮擋、光線變化、位姿突變所造成的識(shí)別目標(biāo)丟失等問題[2]。目標(biāo)的幾何變形、旋轉(zhuǎn)和無(wú)人機(jī)姿態(tài)變換等造成的追蹤失敗問題是研究目標(biāo)識(shí)別的挑戰(zhàn)。當(dāng)前,對(duì)如何搭建無(wú)人機(jī)目標(biāo)識(shí)別追蹤的硬件系統(tǒng)研究較少。盡管仿真在一定程度上可以反映算法的可行性,但是將算法應(yīng)用于實(shí)際工程所展現(xiàn)出的效果與虛擬仿真相比,會(huì)出現(xiàn)不同的現(xiàn)象[3]。
筆者基于Pixhawk自動(dòng)駕駛儀和Jeston NX機(jī)載計(jì)算機(jī),進(jìn)行硬件通信調(diào)試和目標(biāo)追蹤軟件開發(fā),使無(wú)人機(jī)實(shí)現(xiàn)對(duì)目標(biāo)的識(shí)別與追蹤功能,可以給研究人員搭建軟硬件系統(tǒng)提供思路與參考。
Pixhawk是一款開源自動(dòng)駕駛儀,原為APM,經(jīng)過改進(jìn)傳感器和主控芯片,更新PX4固件,并在此基礎(chǔ)上進(jìn)一步發(fā)展,最終成為Pixhawk。Pixhawk使用雙處理器架構(gòu),其中,STM32F765作為主數(shù)據(jù)處理器,STM32F100作為備用數(shù)據(jù)處理器,以實(shí)現(xiàn)更加高效、穩(wěn)定的飛行控制。在傳感器方面,選用BMI055和ICM-20689。BMI055為數(shù)字3軸12位加速度傳感器及數(shù)字3軸16位±2 000(°)/s陀螺儀,ICM-20689為3軸加速度計(jì)及陀螺儀[4]。同時(shí)采用MS5611氣壓計(jì)與IST8310磁力計(jì)。多傳感器獲得的數(shù)據(jù)通過程序融合后,得到更準(zhǔn)確的飛控位姿信息,保障無(wú)人機(jī)在飛行過程中的安全性。將主輸出接口與電調(diào)的信號(hào)接口連接,并將全球定位系統(tǒng)與串行外設(shè)接口連接,根據(jù)接收機(jī)接口發(fā)出的信號(hào)不同,選擇對(duì)應(yīng)信號(hào)類型的接收機(jī)[5]。選擇工作電壓為14.8~16.8 V的4S1P型鋰電池,經(jīng)分電板降壓后,向自動(dòng)駕駛儀供電。
Jeston NX是全世界最小、最領(lǐng)先的嵌入式人工智能超級(jí)計(jì)算機(jī)系統(tǒng),可以用作獨(dú)立人工智能和邊緣計(jì)算工具,包括384個(gè)圖形處理器、48個(gè)張量核,6個(gè)264位中央處理器,可以實(shí)現(xiàn)高性能的運(yùn)算和處理能力,從而提供更強(qiáng)大的功能和性能[6]。擁有8 GiByte 128位LPDDR4x內(nèi)存,搭載雙深度學(xué)習(xí)加速器引擎,配備4個(gè)通用串行總線接口,可以將通用串行總線接口與攝像頭連接。通用串行總線轉(zhuǎn)串口模塊的一端連接Jeston NX的通用串行總線接口,另一端連接自動(dòng)駕駛儀的TELEM接口,再通過機(jī)器人操作系統(tǒng)運(yùn)行腳本,實(shí)現(xiàn)兩者的通信。Jeston NX運(yùn)行Ubuntu操作系統(tǒng),需要通過命令下載相關(guān)安裝包,搭建程序的運(yùn)行環(huán)境,并連接顯示器,才能正常工作[7]。機(jī)載計(jì)算機(jī)需被攜帶到天空,顯示器的質(zhì)量與體積大,不方便攜帶,對(duì)此,可以使筆記本計(jì)算機(jī)和Jeston NX在同一網(wǎng)絡(luò)中,使用遠(yuǎn)程控制軟件實(shí)現(xiàn)地面端控制天空端。筆記本計(jì)算機(jī)只控制launch文件啟動(dòng),無(wú)人機(jī)框選目標(biāo)識(shí)別追蹤的過程全部由自動(dòng)駕駛儀和Jeston NX實(shí)現(xiàn),筆記本計(jì)算機(jī)不參與運(yùn)算。航模電池可通過XT60并聯(lián)線直接向Jeston NX和無(wú)人機(jī)供電。Jeston NX強(qiáng)大的性能為當(dāng)下大熱的深度學(xué)習(xí)程序運(yùn)行及更深層次的目標(biāo)識(shí)別追蹤研究提供了硬件基礎(chǔ)[8]。
無(wú)人機(jī)如圖1所示。
圖1 無(wú)人機(jī)
核相關(guān)濾波器算法是一項(xiàng)用于識(shí)別目標(biāo)的追蹤技術(shù),通過訓(xùn)練目標(biāo)檢測(cè)器來(lái)估計(jì)下一幀幀中的定位,并將其作為新的檢測(cè)結(jié)果,以此來(lái)更新樣本,從而實(shí)現(xiàn)對(duì)總體目標(biāo)的準(zhǔn)確識(shí)別[9]。由于采用循環(huán)矩陣來(lái)收集正負(fù)樣本,并采用脊回歸技術(shù)訓(xùn)練目標(biāo)檢測(cè)器,因此能夠有效將矩陣數(shù)據(jù)的統(tǒng)計(jì)方式轉(zhuǎn)換為阿達(dá)馬積,即元素的點(diǎn)乘,從而大大減小統(tǒng)計(jì)量,提高計(jì)算速度,使統(tǒng)計(jì)方式能夠符合實(shí)時(shí)性的需要。將線性空間的脊回歸映射到非線性空間結(jié)構(gòu),能夠有效解決對(duì)偶問題,應(yīng)對(duì)常用約束,而且能夠采用循環(huán)矩陣傅里葉空間對(duì)角化來(lái)簡(jiǎn)單統(tǒng)計(jì),從而提高計(jì)算效率,由此大大提高算法的速度[10]。
首先在第t幀中框選出待跟蹤的目標(biāo),若未得到待跟蹤的目標(biāo),則機(jī)載計(jì)算機(jī)讀取自動(dòng)駕駛儀的位置信息,更新當(dāng)前位置并保持懸停。反之,在第t+1幀中在第t幀的目標(biāo)位置附近采樣,用訓(xùn)練出的回歸器在采樣位置對(duì)圖像進(jìn)行相關(guān)操作,記錄每個(gè)采樣點(diǎn)的響應(yīng)。響應(yīng)最強(qiáng)且滿足預(yù)先給定閾值條件的采樣被認(rèn)為是第t+1幀中目標(biāo)的位置,機(jī)載計(jì)算機(jī)獲取無(wú)人機(jī)當(dāng)前位置信息,計(jì)算目標(biāo)的位置。兩個(gè)位置通過算法處理后,得出無(wú)人機(jī)的期望位置。無(wú)人機(jī)在追蹤目標(biāo)的過程中,會(huì)存在目標(biāo)丟失的現(xiàn)象。設(shè)置丟失閾值為10,在追蹤目標(biāo)的過程中存在連續(xù)10次目標(biāo)丟失的現(xiàn)象,認(rèn)定目標(biāo)丟失。反之,認(rèn)定目標(biāo)存在,同時(shí)發(fā)送期望位置,完成目標(biāo)追蹤。系統(tǒng)實(shí)時(shí)追蹤流程如圖2所示。
圖2 系統(tǒng)實(shí)時(shí)追蹤流程
自動(dòng)駕駛儀與機(jī)載計(jì)算機(jī)相互傳輸信息,需要通過相應(yīng)的節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。使用 C++編程語(yǔ)言編寫節(jié)點(diǎn)程序,既可以保證程序的快速響應(yīng),又可以調(diào)用OpenCV庫(kù)進(jìn)行圖像處理識(shí)別目標(biāo)。機(jī)器人操作系統(tǒng)以節(jié)點(diǎn)對(duì)節(jié)點(diǎn)的方式編寫程序,這種方式高內(nèi)聚低耦合,單個(gè)節(jié)點(diǎn)的功能穩(wěn)定單一,各個(gè)節(jié)點(diǎn)之間聯(lián)系緊密,程序模塊的可重用性和可移植性高,程序更加穩(wěn)定可靠。
由web_cam節(jié)點(diǎn)讀取攝像頭的視頻信息,轉(zhuǎn)換為image_raw話題并發(fā)布。節(jié)點(diǎn)訂閱圖像話題,得到布爾型目標(biāo)檢測(cè)判斷值、目標(biāo)姿態(tài)四元數(shù)和目標(biāo)坐標(biāo),封裝為kcf_tracker話題,發(fā)布到目標(biāo)追蹤節(jié)點(diǎn)。
kcf_tracker節(jié)點(diǎn)在第一幀中框選出帶最終目標(biāo)的位置,通過循環(huán)矩陣對(duì)基礎(chǔ)樣本進(jìn)行行平移,獲得更多訓(xùn)練樣本。將圖像對(duì)應(yīng)的二維矩陣變換為n×1維向量,得到基礎(chǔ)樣本x1,x2,…,xn-1,xn,利用置換矩陣P對(duì)基礎(chǔ)樣本進(jìn)行循環(huán)移位n次,即可獲得當(dāng)前幀的訓(xùn)練樣本矩陣X:
(1)
利用循環(huán)矩陣可對(duì)角化的性質(zhì),使用離散傅里葉矩陣對(duì)樣本集合進(jìn)行對(duì)角化,有:
(2)
在跟蹤過程中,需要對(duì)目標(biāo)區(qū)域圖像提取適當(dāng)?shù)奶卣鞅磉_(dá)和目標(biāo)描述,以達(dá)到有效區(qū)分目標(biāo)和背景的目的。核相關(guān)濾波器算法使用方向梯度直方圖作為目標(biāo)特征,這一特征可以有效區(qū)分目標(biāo)輪廓邊緣與背景的灰度值變化。在提取過程中,先對(duì)目標(biāo)圖像進(jìn)行灰度化和歸一化處理,以減小光照變化和噪聲帶來(lái)的影響,再計(jì)算圖像中各個(gè)像素點(diǎn)(a,b)的梯度值:
G1(a,b)=I(a+1,b)-I(a-1,b)
(3)
G2(a,b)=I(a,b+1)-I(a,b-1)
(4)
式中:G1(a,b)、G2(a,b)分別為像素點(diǎn)(a,b)在水平和豎直方向的梯度值;I(a,b)為像素點(diǎn)(a,b)對(duì)應(yīng)的灰度值。
梯度幅值G(a,b)和梯度方向β(a,b)分別為:
(5)
β(a,b)=arctan[G1(a,b)/G2(a,b)]
(6)
最后統(tǒng)計(jì)梯度直方圖,得到目標(biāo)圖像最終的方向梯度直方圖特征。
設(shè)訓(xùn)練樣本為xi,回歸標(biāo)簽為yi,使用最小二乘法訓(xùn)練分類器f(x)=ωTx,ω為分類器權(quán)重因數(shù),使訓(xùn)練樣本xi與回歸標(biāo)簽yi之間平均誤差最小:
(7)
式中:λ為正則項(xiàng)因數(shù)。
為提高分類器的泛化能力,防止分類器出現(xiàn)過擬合現(xiàn)象,加入正則項(xiàng)λ‖ω‖2控制過擬合。令ω的偏導(dǎo)數(shù)為0,ω的表達(dá)式為:
ω=(XTX+λI)-1XTy
(8)
式中:I為單位矩陣;y為各樣本回歸標(biāo)簽yi組成的列向量。
對(duì)式(8)轉(zhuǎn)換到復(fù)數(shù)域:
ω=(XHX+λI)-1XHy
(9)
將經(jīng)過傅里葉變換后的樣本矩陣X代入式(9),得到頻域中的計(jì)算式:
(10)
由于目標(biāo)跟蹤為非線性問題,因此將x通過映射函數(shù)φ(x)映射到高維空間,可使非線性問題變?yōu)榫€性問題,分類器權(quán)重因數(shù)ω可表示為樣本映射后的線性組合:
ω=∑[αiφ(xi)]
(11)
式中:αi為線性組合因數(shù)。
(2)濾餅外在水分為25.80%,脫水率達(dá)82.98%,濾餅中所含水量?jī)H是入料水量的17.02%。這與使用80網(wǎng)目單絲濾布有關(guān),因?yàn)闉V布的孔隙較大,過濾阻力減小,所以該廠還將壓濾機(jī)入料壓力控制在0.45 MPa水平。
將式(11)代入分類器,得到回歸函數(shù):
(12)
k(xi,xj)=kxixj=φT(xi)φ(xj)
(13)
式中:xi、xj分別為當(dāng)前幀和下一幀樣本。
核相關(guān)濾波器算法采用高斯核函數(shù),將k(xi,xj)組合成n×n維的核函數(shù)K,此時(shí)K滿足循環(huán)矩陣特性。將式(12)代入式(7),可導(dǎo)出由αi組成的因數(shù)向量α的表達(dá)式:
α=(K+λI)-1y
(14)
對(duì)式(14)進(jìn)行傅里葉變換,得:
(15)
在檢測(cè)階段,需要計(jì)算測(cè)試樣本序列與在線分類器的相關(guān)響應(yīng),以確定當(dāng)前幀的目標(biāo)位置。設(shè)x為當(dāng)前幀訓(xùn)練樣本序列,z為下一幀測(cè)試樣本序列,用kxz表示x和z的核函數(shù),在頻域中對(duì)響應(yīng)進(jìn)行求解,得:
(16)
object_tracking節(jié)點(diǎn)計(jì)算無(wú)人機(jī)的期望位置,并做出決策,發(fā)送給底層控制模塊。此節(jié)點(diǎn)訂閱了無(wú)人機(jī)的位置信息和目標(biāo)的位置信息。得到目標(biāo)坐標(biāo)后,將坐標(biāo)轉(zhuǎn)換至原點(diǎn)位于無(wú)人機(jī)質(zhì)心,0°為X軸正方向,90°為Y軸正方向,上方為Z軸正方向的坐標(biāo)系中。將需要的坐標(biāo)轉(zhuǎn)換至同一坐標(biāo)系后,求解無(wú)人機(jī)的期望位置。機(jī)器人操作系統(tǒng)節(jié)點(diǎn)圖如圖3所示。
圖3 機(jī)器人操作系統(tǒng)節(jié)點(diǎn)圖
首先打開終端,輸入指令roslaunch prometheus_de tection web_cam0.launch,啟動(dòng)攝像頭節(jié)點(diǎn)。等候攝像頭啟動(dòng)后,啟動(dòng)攝像頭校準(zhǔn)程序。將黑白棋盤格的標(biāo)準(zhǔn)板移動(dòng),以收集數(shù)據(jù)。當(dāng)X、Y、Size、Skew的進(jìn)度條變?yōu)榫G燈時(shí),calibration指示燈亮起,表明目前已有充足的信息可以用于攝像頭的校準(zhǔn)。按下calibration按鍵后,等候1 min,校準(zhǔn)界面會(huì)變?yōu)榛疑?。?shù)據(jù)采集界面如圖4所示,攝像頭標(biāo)定結(jié)果界面如圖5所示。
圖4 數(shù)據(jù)采集界面
圖5 攝像頭標(biāo)定結(jié)果界面
啟動(dòng)程序后,輸入指令roslaunch prometheus_detection KCF.launch打開窗口,對(duì)目標(biāo)進(jìn)行框選,查看識(shí)別結(jié)果。確認(rèn)識(shí)別目標(biāo)后,使用rostopic list指令查看已發(fā)布話題,包括目標(biāo)名稱、識(shí)別狀態(tài)、目標(biāo)位置等消息。目標(biāo)框選識(shí)別界面如圖6所示,話題消息界面如圖7所示。
圖6 目標(biāo)框選識(shí)別界面
圖7 話題消息界面
無(wú)人機(jī)目標(biāo)識(shí)別測(cè)試流程如下:
(1) 啟動(dòng)無(wú)人機(jī),遙控器切換至定點(diǎn)模式,使無(wú)人機(jī)起飛到一定高度,并保持懸停;
(2) 筆記本計(jì)算機(jī)通過軟件遠(yuǎn)程控制機(jī)載計(jì)算機(jī)啟動(dòng)launch文件,確保機(jī)載計(jì)算機(jī)不斷向無(wú)人機(jī)發(fā)送控制量;
(3) 通過遙控器將無(wú)人機(jī)切換到離線模式;
(4) 手動(dòng)對(duì)目標(biāo)進(jìn)行框選,無(wú)人機(jī)首次識(shí)別目標(biāo)發(fā)生偏航,對(duì)坐標(biāo)系進(jìn)行校正,追蹤目標(biāo);
(5) 取消框選,追蹤結(jié)束,降落。
目標(biāo)識(shí)別位置變化如圖8所示,實(shí)際軌跡如圖9所示。在目標(biāo)前后左右移動(dòng)距離較小、上下移動(dòng)距離較大的情況下,無(wú)人機(jī)在向目標(biāo)追蹤的過程中前后左右方向的移動(dòng)并不劇烈,上下移動(dòng)變化則較為明顯。機(jī)載計(jì)算機(jī)發(fā)出的期望位置曲線與無(wú)人時(shí)實(shí)際位置曲線有較好的擬合,說明無(wú)人機(jī)確實(shí)按照機(jī)載計(jì)算機(jī)計(jì)算出的目標(biāo)位置向識(shí)別目標(biāo)飛去。
圖8 目標(biāo)識(shí)別位置變化
圖9 目標(biāo)識(shí)別實(shí)際軌跡
筆者基于核相關(guān)濾波器算法,對(duì)無(wú)人機(jī)目標(biāo)識(shí)別進(jìn)行研究。經(jīng)過飛行測(cè)試及試驗(yàn)結(jié)果分析,所搭建的目標(biāo)追蹤系統(tǒng)可行,能使無(wú)人機(jī)自主識(shí)別追蹤目標(biāo),并且具有良好的識(shí)別效果與追蹤效果。通過研究證明核相關(guān)濾波器算法搭載到無(wú)人機(jī)上是完全可行的,為后續(xù)核相關(guān)濾波器算法搭載至更多設(shè)備的研究提供了參考。