任麗莉,成子健,康 冰,閆冬梅
(1.長春師范大學(xué)網(wǎng)絡(luò)中心,吉林長春 130032;2.吉林大學(xué)通信工程學(xué)院,吉林長春 130022;3.吉林大學(xué)大數(shù)據(jù)和網(wǎng)絡(luò)管理中心,吉林長春 130000)
四旋翼飛行器(quadrotor)是指由4個螺旋槳交叉安裝構(gòu)成的旋翼式飛行器[1]。一般采用微型控制器作為其控制核心,其飛行姿態(tài)只需要通過改變4個電機的轉(zhuǎn)速就能實現(xiàn)。四旋翼飛行器的概念提出已經(jīng)有100多年的歷史,早在20世紀初就出現(xiàn)了旋翼式飛行器的原型機[2]。目前多旋翼飛行器有著輕便、靈活、機動性強、拓展性廣的諸多優(yōu)點,在商業(yè)、軍事上愈來愈受到國內(nèi)外的重視。
隨著圖像處理技術(shù)的日益成熟,四旋翼無人機在災(zāi)難環(huán)境下的目標搜索、農(nóng)業(yè)上的農(nóng)藥噴灑和應(yīng)用在軍事上的偵查工作,都成為研究熱點[3]。本文的設(shè)計涵蓋了本科教學(xué)中閉環(huán)控制、圖像處理、通信、電機控制等多項知識,可以作為本科生實驗的平臺。
描述飛行器飛行姿態(tài)可以使用四元數(shù)和歐拉角兩種方法[4-5],四元數(shù)在計算上比較方便,而歐拉角更符合人們的直觀感受,歐拉角表示和四元數(shù)表示分別如圖1和圖2所示。對陀螺儀和加速度計獲取的角速度和角加速度,通過歸一化和一階龍格庫塔計算出四元數(shù),并轉(zhuǎn)化為歐拉角。
公式(1)展示的是歐拉角和四元數(shù)的轉(zhuǎn)換,通過計算并更新四旋翼當(dāng)前的俯仰角、偏航角和翻滾角。
(1)
四旋翼下方搭載Pix4Flow光流傳感器,其內(nèi)部集成的算法可以直接輸出與地面x,y方向的相對速度,通過IIC接口發(fā)送給四旋翼的MCU[6-7]。
在室內(nèi)環(huán)境中,在精度允許的范圍內(nèi)選取超聲波模塊來測量四旋翼的當(dāng)前飛行高度。
圖1 歐拉角表示
圖2 四元數(shù)表示
四旋翼下方搭載的USB攝像頭采集圖像,通過具有集成了openwrt的WIFI圖傳模塊將圖像傳輸?shù)絇C機,只需在PC機上連接圖傳模塊的WIFI,讀取視頻流,即可獲得USB采集的圖像[8]。此外,圖傳的速率可以達到150 Mbit/s,能夠滿足實時處理的需求。
攝像頭采集到的圖像格式為RGB格式,而HSV格式更能被人們直觀感受,從而被方便調(diào)節(jié)所需要識別的顏色[9]。HSV格式中的分量:色調(diào)(H)、飽和度(S)、亮度(V)。這三個分量中,S和V取值范圍在0~1,影響了判別顏色的精確程度。而H的取值在0~360,其中,橙色:0~22、黃色:22~38、綠色:38~75、藍色:75~130、紫色:130~160、紅色:160~179。因此,只需要調(diào)節(jié)H的閾值,便可以改變需要識別的物體的顏色。RGB轉(zhuǎn)換為HSV的公式如下:
(2)
(3)
V={R,G,B}max.
(4)
在得到HSV格式的圖像后,利用OpenCV的函數(shù)庫,根據(jù)設(shè)定好的HSV閾值進行二值化處理,在得到的二值圖像上,利用開運算去除背景噪聲,再應(yīng)用閉運算填充目標內(nèi)的孔洞,便提取出閾值顏色內(nèi)的物體,然后計算出所識別物體中心與圖像中心的偏差,傳遞給四旋翼的MCU。
四旋翼自主追蹤智能車流程如下:
首先,四旋翼的姿態(tài)控制依靠MCU輸出四路PWM,通過電子調(diào)速器控制無刷電機的轉(zhuǎn)速來實現(xiàn)以下6個動作:垂直、俯仰、偏航、翻滾、前后、左右[10]。
其次,通過進行翻滾、俯仰和偏航這3個動作保持歐拉角在一定誤差范圍,使四旋翼保持平穩(wěn)飛行的姿態(tài)。而追蹤物體首先需要自身高度恒定,在設(shè)置目標高度后,通過超聲波模塊獲得的高度數(shù)值,利用串級PID,即當(dāng)前高度和目標高度差作外層PID,當(dāng)前速度和目標速度作內(nèi)層PID運算,調(diào)節(jié)適當(dāng)?shù)腜ID參數(shù)便可以實現(xiàn)四旋翼恒定高度飛行。
圖3 系統(tǒng)結(jié)構(gòu)圖
最后,通過上位機發(fā)送的四旋翼機體與目標偏差位置的x,y坐標,建立平面坐標系并給偏差坐標賦予加權(quán)值,計算出x和y兩個方向的期望速度。通過光流傳感器獲取的當(dāng)前速度與期望速度作PID運算,調(diào)節(jié)四旋翼作出相應(yīng)的前后、左右動作,實現(xiàn)對目標的追蹤[11-12],如圖3所示。
為了便于控制,利用Qt平臺結(jié)合OpenCV函數(shù)庫編寫用于操作的上位機軟件(圖4)。圖4中在行進中的智能車上放置紅色標識物(圖4中黑框已標出),系統(tǒng)啟動后,在上位機視圖中可見四旋翼采集回傳的圖像,其中目標物體能被精準地識別。
圖4 上位機界面
四旋翼的起飛過程是緩慢增加油門值,離地后進入定高狀態(tài)。圖5中,下面的曲線為四旋翼離地高度,上面曲線為電機的油門值,可見在接近預(yù)期高度時油門增加速度減慢,防止上升過快導(dǎo)致失調(diào)。同樣,在控制高度一定過程中串級PID發(fā)揮了很大的作用,使四旋翼始終保持同一水平高度飛行。
圖5 高度和油門值
四旋翼在飛行過程中,保持姿態(tài)角的穩(wěn)定至關(guān)重要。圖6中曲線表示俯仰角變化,圖7中曲線表示飛行過程中的翻滾角變化??梢姡盏酵饨绺蓴_時四旋翼利用PID調(diào)節(jié)仍能保持自身趨于穩(wěn)定的狀態(tài)。
圖6 俯仰角變化
圖7 翻滾角變化及抑制
本系統(tǒng)通過四旋翼下方搭載的USB攝像頭采集地面信息,利用WIFI模塊傳輸給PC機,在PC機上對傳輸?shù)膱D像進行處理,識別出行進中的智能車,并將兩者的相差位置坐標發(fā)送到四旋翼的MCU,進而控制四旋翼追蹤智能車。
四旋翼主控板為STM32F103VCT6,利用MPU6050獲取數(shù)據(jù)并計算出當(dāng)前的姿態(tài)角,通過Pix4Flow光流傳感器獲取四旋翼対地速度,由超聲波模塊得到四旋翼高度,在高度控制和姿態(tài)控制上都采用了串級PID算法,使四旋翼能夠按指令定向。而在圖像處理方面,利用Qt平臺和OpenCV函數(shù)庫結(jié)合編寫上位機,作為系統(tǒng)間的紐帶,同時完成對目標識別和控制指令的傳輸,最終完成四旋翼和智能車的聯(lián)動。