任麗莉,成子健,康 冰,閆冬梅
(1.長春師范大學網絡中心,吉林長春 130032;2.吉林大學通信工程學院,吉林長春 130022;3.吉林大學大數據和網絡管理中心,吉林長春 130000)
四旋翼飛行器(quadrotor)是指由4個螺旋槳交叉安裝構成的旋翼式飛行器[1]。一般采用微型控制器作為其控制核心,其飛行姿態只需要通過改變4個電機的轉速就能實現。四旋翼飛行器的概念提出已經有100多年的歷史,早在20世紀初就出現了旋翼式飛行器的原型機[2]。目前多旋翼飛行器有著輕便、靈活、機動性強、拓展性廣的諸多優點,在商業、軍事上愈來愈受到國內外的重視。
隨著圖像處理技術的日益成熟,四旋翼無人機在災難環境下的目標搜索、農業上的農藥噴灑和應用在軍事上的偵查工作,都成為研究熱點[3]。本文的設計涵蓋了本科教學中閉環控制、圖像處理、通信、電機控制等多項知識,可以作為本科生實驗的平臺。
描述飛行器飛行姿態可以使用四元數和歐拉角兩種方法[4-5],四元數在計算上比較方便,而歐拉角更符合人們的直觀感受,歐拉角表示和四元數表示分別如圖1和圖2所示。對陀螺儀和加速度計獲取的角速度和角加速度,通過歸一化和一階龍格庫塔計算出四元數,并轉化為歐拉角。
公式(1)展示的是歐拉角和四元數的轉換,通過計算并更新四旋翼當前的俯仰角、偏航角和翻滾角。
(1)
四旋翼下方搭載Pix4Flow光流傳感器,其內部集成的算法可以直接輸出與地面x,y方向的相對速度,通過IIC接口發送給四旋翼的MCU[6-7]。
在室內環境中,在精度允許的范圍內選取超聲波模塊來測量四旋翼的當前飛行高度。

圖1 歐拉角表示

圖2 四元數表示
四旋翼下方搭載的USB攝像頭采集圖像,通過具有集成了openwrt的WIFI圖傳模塊將圖像傳輸到PC機,只需在PC機上連接圖傳模塊的WIFI,讀取視頻流,即可獲得USB采集的圖像[8]。此外,圖傳的速率可以達到150 Mbit/s,能夠滿足實時處理的需求。
攝像頭采集到的圖像格式為RGB格式,而HSV格式更能被人們直觀感受,從而被方便調節所需要識別的顏色[9]。HSV格式中的分量:色調(H)、飽和度(S)、亮度(V)。這三個分量中,S和V取值范圍在0~1,影響了判別顏色的精確程度。而H的取值在0~360,其中,橙色:0~22、黃色:22~38、綠色:38~75、藍色:75~130、紫色:130~160、紅色:160~179。因此,只需要調節H的閾值,便可以改變需要識別的物體的顏色。RGB轉換為HSV的公式如下:
(2)
(3)
V={R,G,B}max.
(4)
在得到HSV格式的圖像后,利用OpenCV的函數庫,根據設定好的HSV閾值進行二值化處理,在得到的二值圖像上,利用開運算去除背景噪聲,再應用閉運算填充目標內的孔洞,便提取出閾值顏色內的物體,然后計算出所識別物體中心與圖像中心的偏差,傳遞給四旋翼的MCU。
四旋翼自主追蹤智能車流程如下:
首先,四旋翼的姿態控制依靠MCU輸出四路PWM,通過電子調速器控制無刷電機的轉速來實現以下6個動作:垂直、俯仰、偏航、翻滾、前后、左右[10]。
其次,通過進行翻滾、俯仰和偏航這3個動作保持歐拉角在一定誤差范圍,使四旋翼保持平穩飛行的姿態。而追蹤物體首先需要自身高度恒定,在設置目標高度后,通過超聲波模塊獲得的高度數值,利用串級PID,即當前高度和目標高度差作外層PID,當前速度和目標速度作內層PID運算,調節適當的PID參數便可以實現四旋翼恒定高度飛行。

圖3 系統結構圖
最后,通過上位機發送的四旋翼機體與目標偏差位置的x,y坐標,建立平面坐標系并給偏差坐標賦予加權值,計算出x和y兩個方向的期望速度。通過光流傳感器獲取的當前速度與期望速度作PID運算,調節四旋翼作出相應的前后、左右動作,實現對目標的追蹤[11-12],如圖3所示。
為了便于控制,利用Qt平臺結合OpenCV函數庫編寫用于操作的上位機軟件(圖4)。圖4中在行進中的智能車上放置紅色標識物(圖4中黑框已標出),系統啟動后,在上位機視圖中可見四旋翼采集回傳的圖像,其中目標物體能被精準地識別。

圖4 上位機界面
四旋翼的起飛過程是緩慢增加油門值,離地后進入定高狀態。圖5中,下面的曲線為四旋翼離地高度,上面曲線為電機的油門值,可見在接近預期高度時油門增加速度減慢,防止上升過快導致失調。同樣,在控制高度一定過程中串級PID發揮了很大的作用,使四旋翼始終保持同一水平高度飛行。

圖5 高度和油門值
四旋翼在飛行過程中,保持姿態角的穩定至關重要。圖6中曲線表示俯仰角變化,圖7中曲線表示飛行過程中的翻滾角變化。可見,收到外界干擾時四旋翼利用PID調節仍能保持自身趨于穩定的狀態。

圖6 俯仰角變化

圖7 翻滾角變化及抑制
本系統通過四旋翼下方搭載的USB攝像頭采集地面信息,利用WIFI模塊傳輸給PC機,在PC機上對傳輸的圖像進行處理,識別出行進中的智能車,并將兩者的相差位置坐標發送到四旋翼的MCU,進而控制四旋翼追蹤智能車。
四旋翼主控板為STM32F103VCT6,利用MPU6050獲取數據并計算出當前的姿態角,通過Pix4Flow光流傳感器獲取四旋翼対地速度,由超聲波模塊得到四旋翼高度,在高度控制和姿態控制上都采用了串級PID算法,使四旋翼能夠按指令定向。而在圖像處理方面,利用Qt平臺和OpenCV函數庫結合編寫上位機,作為系統間的紐帶,同時完成對目標識別和控制指令的傳輸,最終完成四旋翼和智能車的聯動。