,,,
(吉林大學(xué) 儀器科學(xué)與電氣工程學(xué)院,長(zhǎng)春 130012)
四旋翼飛行器是多旋翼飛行器中最簡(jiǎn)單最流行的一種,其4個(gè)旋翼對(duì)稱分布,呈“十”型或“X”型,相比于直升機(jī),四旋翼飛行器結(jié)構(gòu)簡(jiǎn)單,適宜在復(fù)雜、狹小的環(huán)境下飛行。在飛行效果方面,該飛行器的盤旋穩(wěn)定性更好,降落時(shí)地面效應(yīng)不明顯[1]。綜合以上優(yōu)勢(shì),四旋翼飛行器被很多領(lǐng)域作為一種新興的空中移動(dòng)平臺(tái),搭載各種相應(yīng)的任務(wù)負(fù)荷,廣泛應(yīng)用于影視航拍、電力巡航、情報(bào)監(jiān)視、戰(zhàn)損評(píng)估等諸多方面,具有極高的應(yīng)用價(jià)值和廣闊的應(yīng)用前景。
目前常用的機(jī)載單目視覺跟蹤方法有多種:光流傳感器法[2]利用圖像序列中像素在時(shí)間域上的變化以及相鄰幀之間的相關(guān)性來找到上一幀跟當(dāng)前幀之間存在的對(duì)應(yīng)關(guān)系,從而計(jì)算出相鄰幀之間物體運(yùn)動(dòng)信息的一種方法,但它對(duì)目標(biāo)紋理要求比較嚴(yán)格,跟蹤精度較低;基于圖像特征點(diǎn)的同時(shí)定位與地圖創(chuàng)建方法[3]通過傳感器測(cè)量周圍環(huán)境數(shù)據(jù),逐漸估計(jì)自身位置及運(yùn)動(dòng)情況,并且估計(jì)和描繪周圍環(huán)境和地圖,該方法對(duì)傳感器及處理器性能要求較嚴(yán)格;參考文獻(xiàn)[4]設(shè)計(jì)了一種由一系列同心圓環(huán)組成的地面標(biāo)記,通過計(jì)算圖像中心與同心圓圓心之間的距離來控制飛行器的姿態(tài)使其間距最小;參考文獻(xiàn)[5]設(shè)計(jì)了方形的地面標(biāo)記,通過計(jì)算形心之間的距離來控制飛行器調(diào)整姿態(tài),但是這種方法使用圖像特征作為輸入,無法獲得飛行器的位姿參數(shù)。
本文設(shè)計(jì)的四旋翼飛行器跟蹤系統(tǒng)有效地彌補(bǔ)了光流傳感器法及其他方法的缺陷,充分利用先進(jìn)的計(jì)算機(jī)視覺技術(shù),在獲取目標(biāo)位置信息和飛機(jī)姿態(tài)信息的同時(shí)優(yōu)化了控制算法,提高了跟蹤的準(zhǔn)確性和系統(tǒng)的可靠性。
飛行器采用X型電動(dòng)式四旋翼結(jié)構(gòu),以四旋翼飛行器中心為原點(diǎn)建立x-y-z坐標(biāo)系(如圖1所示),機(jī)體繞x軸轉(zhuǎn)過的角度為橫滾角(Roll),繞y軸轉(zhuǎn)過的角度為俯仰角(Pitch),繞z軸轉(zhuǎn)過的角度為偏航角(Yaw),這3個(gè)角度統(tǒng)稱為歐拉角。
圖1 四旋翼飛行器模型簡(jiǎn)化圖
機(jī)體在懸停過程中,4個(gè)旋翼對(duì)機(jī)體產(chǎn)生的升力與機(jī)體自身重量mg相等,旋翼M1和M3順時(shí)針轉(zhuǎn)動(dòng),旋翼M2和M4逆時(shí)針轉(zhuǎn)動(dòng),各旋翼的轉(zhuǎn)動(dòng)慣量大小相等,可抵消機(jī)體的自旋。
垂直飛行時(shí),同時(shí)提高4個(gè)旋翼的轉(zhuǎn)速,使拉力u變大,當(dāng)u>mg時(shí),飛行器向上飛行;俯仰飛行時(shí),控制旋翼M2和M3轉(zhuǎn)速同時(shí)增加,旋翼M1和M4轉(zhuǎn)速同時(shí)減小,使f2+f3的值增大,f1+f4的值減小,飛行器向前飛行;橫滾飛行時(shí),控制旋翼M3和M4轉(zhuǎn)速同時(shí)增加,旋翼M1和M2轉(zhuǎn)速同時(shí)減小,使f3+f4的值增大,f1+f2的值減小,飛行器向左飛行;偏航飛行時(shí),控制旋翼M2和M4轉(zhuǎn)速同時(shí)增加,旋翼M1和M3轉(zhuǎn)速同時(shí)減小,使f2+f4的值增大,f1+f3的值減小,飛行器水平逆時(shí)針轉(zhuǎn)動(dòng)。
PID控制器在連續(xù)控制系統(tǒng)中取得了非常好的控制效果,并得到了廣泛應(yīng)用,PID控制器的時(shí)域微分方程如下:
(1)
式中,KP為比例系數(shù),Ti為積分時(shí)間常數(shù),Td為微分時(shí)間常數(shù),u(t)為控制量,e(t)為期望值與實(shí)際輸出值構(gòu)成的偏差量。
PID控制算法原理圖如圖2所示。圖中,r(t)為期望值,y(t)為實(shí)際輸出值。
圖2 PID控制算法原理圖
式(1)描述的是模擬PID控制器,在計(jì)算機(jī)控制中需要將其轉(zhuǎn)換為數(shù)字PID控制器。將式(1)通過后向差分的方法離散化后可得到
(2)
式中,T為采樣周期,uk為控制量。
本文中對(duì)四旋翼飛行器高度、橫滾、俯仰的控制均采用PID算法。因此,圖2中的r(t)為飛行器期望的高度值或位置坐標(biāo),y(t)為飛行器實(shí)際的高度值或位置坐標(biāo),u(t)為控制飛行器4個(gè)電機(jī)轉(zhuǎn)速的PWM(Pulse Width Modulation)波占空比,被控對(duì)象為飛行器的4個(gè)電機(jī)。
OpenCV是一個(gè)開源的跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux、Windows和MAC OS操作系統(tǒng)上,它由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。對(duì)于飛行器這種實(shí)時(shí)性要求較高的系統(tǒng),使用計(jì)算機(jī)視覺技術(shù)對(duì)圖像進(jìn)行處理可以快速獲得跟蹤目標(biāo)位置信息,從而實(shí)時(shí)控制飛行器姿態(tài)[6],因此本文采用OpenCV實(shí)現(xiàn)系統(tǒng)的圖像處理。
整個(gè)系統(tǒng)由控制模塊、測(cè)距模塊、圖像采集與處理模塊組成,其總體架構(gòu)如圖3所示。
圖3 系統(tǒng)總體架構(gòu)
2.2.1 控制模塊
控制模塊由中央控制器STM32和飛行控制器組成,STM32接收到運(yùn)動(dòng)目標(biāo)的位置信息后進(jìn)行解算,解算出目標(biāo)的運(yùn)動(dòng)方向、速度和加速度等,并通過PID控制算法得出合適的橫滾值、俯仰值、偏航值,同時(shí),STM32根據(jù)測(cè)距模塊測(cè)得的高度進(jìn)行高度方向的PID計(jì)算,得出相應(yīng)的油門值,然后將4個(gè)姿態(tài)值發(fā)送至編碼器,編碼器將4個(gè)姿態(tài)值對(duì)應(yīng)的PWM信號(hào)轉(zhuǎn)換成PPM信號(hào)傳送至飛行控制器。飛行控制板集成了氣壓計(jì)、3軸陀螺儀、3軸加速度計(jì)和SPI、I2C等多種通信接口,且其主控芯片運(yùn)算速度快,具有強(qiáng)大的數(shù)據(jù)處理能力,可以滿足四旋翼飛行器這一硬實(shí)時(shí)系統(tǒng)的要求。當(dāng)飛行控制板接收到PPM控制信號(hào)后,將各姿態(tài)值融合轉(zhuǎn)化為歐拉角輸出,改變飛行器4個(gè)旋翼轉(zhuǎn)速,實(shí)現(xiàn)姿態(tài)調(diào)整。
2.2.2 測(cè)距模塊
測(cè)距部分采用HC-SR04超聲波測(cè)距模塊。該模塊測(cè)距范圍為2~400 cm;采用I/O口TRIG觸發(fā)測(cè)距,給最少10 μs的高電平信號(hào),模塊發(fā)送8個(gè)40 kHz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回,若有,則通過I/O口ECHO輸出高電平,高電平持續(xù)時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。所以,測(cè)試距離=(高電平時(shí)間×聲速)/2。
(3)
其中,h為飛行器高度,t為聲波發(fā)出與接收的時(shí)間間隔,v為聲音在空氣中傳播的速度,取340 m/s。
2.2.3 圖像采集與處理模塊
圖像采集與處理部分使用單目攝像頭和樹莓派。單目攝像頭具有800萬像素分辨率,具有自動(dòng)調(diào)光和自動(dòng)對(duì)焦功能,能夠有效減小飛行器在飛行過程中的震動(dòng)和光線強(qiáng)度變化對(duì)圖像采集的影響,具有較強(qiáng)的抗干擾性,因此能夠滿足本系統(tǒng)的要求。樹莓派采用基于ARMv7的32位Broadcom BCM2836四核處理器,裝載Ubuntu操作系統(tǒng),便于使用和開發(fā),帶有4個(gè)USB接口,方便連接外部設(shè)備以及與主控制器通信,采用5 V直流電源供電,可以從飛行器上直接取電,體積小巧,方便飛行器搭載。
系統(tǒng)的軟件設(shè)計(jì)主要分為兩大部分:一是控制四旋翼飛行器實(shí)現(xiàn)定高飛行和跟蹤飛行;二是識(shí)別地面運(yùn)動(dòng)目標(biāo)并獲取與解算其位置信息。程序流程圖如圖4所示。
圖4 程序流程圖
2.3.1 定高飛行
在飛行過程中,超聲波測(cè)距模塊實(shí)時(shí)測(cè)量飛行器當(dāng)前飛行高度,并將高度值傳遞給主控制器STM32,主控制器采用位置式PID算法進(jìn)行高度方向的PID計(jì)算,最后將計(jì)算得到的結(jié)果轉(zhuǎn)換成相應(yīng)的油門值,控制旋翼的轉(zhuǎn)速,從而改變飛行器的高度。
飛行器飛行高度的期望值和實(shí)際值分別作為PID控制器的輸入量和反饋量,位置式PID算法如式(2)所示,u(k)即為最終控制量。
電機(jī)的PWM控制信號(hào)與電機(jī)轉(zhuǎn)速的關(guān)系受電池輸出電壓的影響。一方面,由于電池存在內(nèi)阻,在大電流輸出時(shí)會(huì)產(chǎn)生壓降,使輸出電壓降低;另一方面,隨工作時(shí)間延長(zhǎng),電池的電荷量減少導(dǎo)致輸出電壓降低[7]。這兩個(gè)原因都會(huì)使電池輸出電壓不能恒定,導(dǎo)致飛行器在不同電池電壓下使用相同的油門值起飛時(shí),起飛的穩(wěn)定效果和過沖高度不同。本系統(tǒng)將11.4~12.6 V作為電池正常工作區(qū)間,以0.1 V為單位,以超調(diào)量和上升時(shí)間作為衡量標(biāo)準(zhǔn),測(cè)試不同電壓下較為理想的油門值。測(cè)試結(jié)果如表1所列。
表1 電池電壓補(bǔ)償表
注:Tr為上升時(shí)間,δ為超調(diào)量。
2.3.2 目標(biāo)物體的跟蹤
當(dāng)識(shí)別到目標(biāo)后,首先將攝像頭得到的BGR顏色空間圖像轉(zhuǎn)換為HSV顏色空間圖像,如圖5(a)所示,然后設(shè)置目標(biāo)閾值,根據(jù)閾值構(gòu)建掩膜,接著對(duì)原圖像和掩膜進(jìn)行位運(yùn)算,經(jīng)過位運(yùn)算處理后的圖像如圖5(b)所示。下一步對(duì)圖像與設(shè)定的核進(jìn)行卷積處理,先進(jìn)行腐蝕處理,將灰度值小的區(qū)域增強(qiáng)擴(kuò)展,去除比較亮的噪點(diǎn);然后進(jìn)行膨脹處理,將灰度值大的區(qū)域增強(qiáng)擴(kuò)展,連通相似顏色的區(qū)域。先腐蝕后膨脹的過程稱為形態(tài)學(xué)的開運(yùn)算,經(jīng)過開運(yùn)算處理后的圖像如圖5(c)所示。很明顯可以看出,經(jīng)過開運(yùn)算處理,可以有效濾除掉圖像中的噪聲,提高目標(biāo)識(shí)別的準(zhǔn)確性。最后做出目標(biāo)的最小外接圓,目標(biāo)位置即為該外接圓的圓心,樹莓派再將該圓心信息發(fā)送至STM32主控制器,進(jìn)行PID計(jì)算。
圖5 圖像處理過程圖
為了達(dá)到起飛時(shí)間短、超調(diào)量小、穩(wěn)定飛行時(shí)高度穩(wěn)定等指標(biāo),根據(jù)PID參數(shù)整定規(guī)則多次調(diào)整飛行器高度軸PID控制器中的系數(shù)Kp、Ki和Kd,通過地面站觀察飛行過程中的高度信息,并做出高度隨時(shí)間變化的曲線圖(如圖6所示),可以看出,起飛時(shí)超調(diào)量不超過8%,穩(wěn)態(tài)誤差不超過5%,飛行穩(wěn)定性高,能夠有效避免在跟蹤目標(biāo)過程中,由于高度不穩(wěn)定而丟失目標(biāo)的問題。
在跟蹤過程中,通過單目攝像頭實(shí)時(shí)采集目標(biāo)運(yùn)動(dòng)信息,并傳至樹莓派中,通過構(gòu)建平面直角坐標(biāo)系,可以得到目標(biāo)相對(duì)于飛行器來說在橫滾方向的位置坐標(biāo)x和俯仰方向的位置坐標(biāo)y,然后通過各自方向的PID控制器計(jì)算出橫滾值和俯仰值。通過多次調(diào)整橫滾和俯仰方向PID控制器的參數(shù)Kpx、Kix、Kdx和Kpy、Kiy、Kdy,最終達(dá)到識(shí)別速度快、反應(yīng)靈敏、跟蹤穩(wěn)定性高等效果。圖7(a)為
圖6 飛行器飛行高度曲線圖
跟蹤過程中橫滾方向偏差x隨時(shí)間變化的曲線圖,圖7(b)為俯仰方向偏差y隨時(shí)間變化的曲線圖。
由圖分析可得,飛行器起飛后,能快速識(shí)別到目標(biāo)并鎖定,在跟蹤過程中x軸偏差不超過±13 cm,y軸偏差不超過±10 cm,具有較高的可靠性和抗干擾性,能夠達(dá)到穩(wěn)定跟蹤地面目標(biāo)的要求。
圖7 跟蹤誤差曲線圖