基于openMV和openCV的四軸飛行器定點(diǎn)懸??刂?/h1>
引言
四軸螺旋翼電機(jī)飛行器是一種小型的輕型四旋翼電機(jī)飛行器,4個(gè)電機(jī)螺旋獎(jiǎng)與4個(gè)電機(jī)直接相連,通過改變4個(gè)電機(jī)的轉(zhuǎn)速來改變飛行器飛行狀態(tài)。四軸飛行器在發(fā)展過程中體積不斷變小,其控制技術(shù)越來越復(fù)雜,控制效果越來越好,使得無人機(jī)在各行業(yè)中被廣泛應(yīng)用。四軸螺旋翼飛行器因其機(jī)動(dòng)性強(qiáng)、飛行隱蔽、成本低及運(yùn)行維護(hù)簡(jiǎn)便等特點(diǎn),被應(yīng)用于宣傳、物流、航天拍攝、抗震救災(zāi)、巡線跑道巡檢及大型農(nóng)業(yè)植保等領(lǐng)域。為了獲取飛行器實(shí)時(shí)飛行信息,通常采用GPs模塊進(jìn)行自動(dòng)定位。然而,只有準(zhǔn)確搜索到衛(wèi)星信號(hào),才能保證GPs模塊的正常運(yùn)行。若飛行器內(nèi)存在任何電磁干擾或其他遮擋物,GPs等模塊就可能無法實(shí)時(shí)獲取機(jī)載飛行器的任何實(shí)時(shí)飛行信息。
因此,四軸飛行器可以利用openMV和openCV對(duì)目標(biāo)物進(jìn)行色塊識(shí)別,根據(jù)現(xiàn)場(chǎng)環(huán)境的不同區(qū)分不同的色塊,以獲取飛行器實(shí)時(shí)信息。四軸飛行器的定點(diǎn)懸停移動(dòng)控制系統(tǒng)可以大致分為兩種姿態(tài),水平移動(dòng)控制和高度移動(dòng)控制。首先利用openMV中的光流模塊獲取飛行器實(shí)時(shí)信息,然后利用openCV實(shí)現(xiàn)對(duì)實(shí)時(shí)圖像中色塊的識(shí)別,最后利用PID算法實(shí)現(xiàn)對(duì)四軸飛行器的定點(diǎn)懸??刂啤?
1基本原理
1.1光流傳感器工作原理
光流傳感器具有精度高和便攜特點(diǎn)。目前許多國內(nèi)外高等院?;?qū)I(yè)科研機(jī)構(gòu)對(duì)基于微型光流傳感器的小型四軸旋翼飛行器的自動(dòng)控制技術(shù)進(jìn)行了深入研究。光流對(duì)比法則是通過將圖中相鄰兩個(gè)像素點(diǎn)與光位移中的信息之間進(jìn)行深度對(duì)比,從而計(jì)算并得出物體運(yùn)動(dòng)的加速度。光流是由于場(chǎng)景中前景目標(biāo)本身的移動(dòng)、相機(jī)的運(yùn)動(dòng),或者兩者共同運(yùn)動(dòng)所產(chǎn)生。當(dāng)人的眼睛觀察運(yùn)動(dòng)物體時(shí),物體景象在人眼的視網(wǎng)膜上形成一系列連續(xù)變化的圖像,這一系列連續(xù)變化的信息不斷"流過"視網(wǎng)膜(成像平面),像一種光的"流",故稱之為光流。光流表達(dá)了圖像的變化,由于它包含了目標(biāo)物體運(yùn)動(dòng)的信息,因?yàn)榭杀挥^察者用以確定目標(biāo)的運(yùn)動(dòng)情況。四軸雙旋翼載人飛行器上所搭載的四軸光學(xué)電流傳感器所能使用的4個(gè)攝像頭具有數(shù)據(jù)分辨率低、幀率高的特點(diǎn),可以輕松實(shí)現(xiàn)圖像數(shù)據(jù)處理與信息的快速更新。
在本文設(shè)計(jì)中,飛行器可以利用相機(jī)安裝兩個(gè)無線光學(xué)電流傳感器,對(duì)相機(jī)捕捉的物體圖像數(shù)據(jù)進(jìn)行在線分析,實(shí)時(shí)
跟蹤獲取兩個(gè)飛行器自身運(yùn)動(dòng)位置及物體運(yùn)動(dòng)速度情況。通過控制兩個(gè)小型光學(xué)電流傳感器之間的間隔高度并水平放置于航空飛行器下方的方法,獲取四軸驅(qū)動(dòng)飛行器的實(shí)時(shí)圖像信息。
在本文設(shè)計(jì)中,初步提出可以采用光學(xué)電流傳感器,將兩個(gè)不相同型號(hào)的光學(xué)電流傳感器分別置于一個(gè)飛行器下方并檢測(cè)是否處于水平位置,當(dāng)兩個(gè)光流運(yùn)動(dòng)傳感器檢測(cè)距離和地面的高度發(fā)生變化時(shí),兩個(gè)光學(xué)電流傳感器之間采集的目標(biāo)圖像追蹤信息的兩個(gè)重合節(jié)點(diǎn)部分也可能發(fā)生變化。利用openCV可以實(shí)現(xiàn)目標(biāo)圖像追蹤、特征點(diǎn)追蹤檢測(cè):利用新的PID算法可以實(shí)現(xiàn)對(duì)四軸驅(qū)動(dòng)飛行器自主懸停的控制。
12壓縮感知追蹤原理
壓縮感知理論被廣泛應(yīng)用于現(xiàn)在的電子工程圖像處理中,用于獲取少量的電子信號(hào)或者其他可能被壓縮的電子信號(hào)。該方法不僅可以憑借音頻信號(hào)稀疏的聲學(xué)特性,相比較于新的奈奎斯特還原理論,從較少的信息測(cè)量數(shù)值進(jìn)行還原得出原來所想了解的音頻信號(hào)。核磁共振分析就是一個(gè)最有可能廣泛使用此分析方法的典型應(yīng)用。
本文根據(jù)這一原理首先提出正負(fù)壓縮高維感知圖像追蹤,首先在正負(fù)壓縮高維區(qū)域范圍內(nèi)隨機(jī)采集抽取不同壓縮尺度高維圖像下的表觀特征,之后將高維特征模型信息隨機(jī)投射至低維的正負(fù)壓縮樣本區(qū)域,根據(jù)物體相應(yīng)需要壓縮的區(qū)域表觀特征信息,建立特定的物體表觀特征模型,使用隨機(jī)稀疏矩陣技術(shù)實(shí)時(shí)壓縮落于前景和背景兩個(gè)目標(biāo)上的物體,實(shí)現(xiàn)在每個(gè)壓縮域中對(duì)前景目標(biāo)物體進(jìn)行實(shí)時(shí)圖像更新感知追蹤。
1.3openCV的目標(biāo)追蹤
openCV是一個(gè)基于跨行業(yè)平臺(tái)的計(jì)算機(jī)圖形視覺軟件庫,可以在許多不同操作系統(tǒng)上運(yùn)行,擁有高效性、質(zhì)量輕等特點(diǎn)。openCV由C語言和C++類編程語言構(gòu)成,同時(shí)提供了不同的通用語言編程接口,例如xpython、ruby、matlab等多種語言,實(shí)現(xiàn)了在圖像信號(hào)處理和應(yīng)用計(jì)算機(jī)軟件視覺設(shè)計(jì)方面很多主要通用語言的算法。
根據(jù)openCV特點(diǎn),天空端機(jī)載攝像頭通過無線圖傳將畫面?zhèn)鬏數(shù)降孛嬲?地面站通過openCV處理圖像并輸出修正結(jié)果:通過無線數(shù)傳將地面端結(jié)果傳輸回天空端進(jìn)行修正,從而實(shí)現(xiàn)四軸飛行器對(duì)目標(biāo)的識(shí)別和追蹤:通過openCV對(duì)圖像顏色模塊的識(shí)別進(jìn)行判斷,對(duì)目標(biāo)色塊的坐標(biāo)進(jìn)行修正和傳輸,從而控制舵機(jī)的轉(zhuǎn)動(dòng),實(shí)現(xiàn)四軸飛行器的追蹤。
本文設(shè)計(jì)的核心在于機(jī)載攝像頭的畫面?zhèn)鬏斠约?penCV對(duì)圖像顏色模塊的識(shí)別,通過將獲取畫面轉(zhuǎn)灰,將圖像轉(zhuǎn)化為HsV格式,再通過滑塊確定所要識(shí)別的顏色,將顏色范圍外的顏色去除,將圖像轉(zhuǎn)二值,通過膨脹化處理,將像素點(diǎn)放大,獲取圖像輪廓坐標(biāo),返回圖像輪廓坐標(biāo)值并繪制矩形框?qū)喞M(jìn)行定位,最后標(biāo)出圓心,將坐標(biāo)值顯示在矩形中心。圖像識(shí)別代碼如圖1所示。
1.4openMV
0penMV上的自動(dòng)視覺識(shí)別算法功能包括自動(dòng)識(shí)別不同色塊、人臉識(shí)別、跟蹤品牌標(biāo)志、追蹤用戶眼球等,可以用來檢測(cè)非法入侵,對(duì)產(chǎn)品的殘次等級(jí)進(jìn)行區(qū)分篩選,對(duì)固定標(biāo)志物進(jìn)行跟蹤等。要想完成各種機(jī)器視覺任務(wù),僅需要編寫一些Python代碼即可。
例如,可以給自己的智能飛行器產(chǎn)品提供人臉識(shí)別追蹤能力:給各種智能車產(chǎn)品增加人臉追蹤識(shí)別功能:給各種智能兒童玩具產(chǎn)品增加各種人臉識(shí)別追蹤功能等。
本文通過0penMV的光流模塊和攝像頭模塊,飛行器定點(diǎn)主要依靠光流模塊對(duì)實(shí)時(shí)圖像的識(shí)別,通過攝像頭模塊進(jìn)行探測(cè)并分析小車的移動(dòng)情況,將采集到的數(shù)據(jù)進(jìn)行分析并得出PID值,再將PID值導(dǎo)入光流環(huán),結(jié)合加速度和角速度環(huán)的PID值進(jìn)行總的PID值調(diào)節(jié),從而反饋給sTM32F301開發(fā)板的主控模塊,最終實(shí)現(xiàn)對(duì)四軸飛行器實(shí)現(xiàn)的定點(diǎn)和追蹤。
1.5運(yùn)動(dòng)狀態(tài)以及高度計(jì)算
本文通過改變四軸飛行器電機(jī)轉(zhuǎn)速,可以實(shí)現(xiàn)各種不同的運(yùn)動(dòng),可將其運(yùn)動(dòng)分解為4個(gè)獨(dú)立方向,分別為:
1.5.1上下運(yùn)動(dòng)
實(shí)現(xiàn)方法:4個(gè)驅(qū)動(dòng)電機(jī)轉(zhuǎn)速一致,4個(gè)電機(jī)旋翼轉(zhuǎn)動(dòng)產(chǎn)生的電機(jī)升力不應(yīng)大于或小于自身的承重力。
1.5.2前后運(yùn)動(dòng)
實(shí)現(xiàn)方法:電機(jī)2、4轉(zhuǎn)速不變,電機(jī)1、3轉(zhuǎn)速一增一減且改變值相同。
1.5.3左右運(yùn)動(dòng)
實(shí)現(xiàn)方法:電機(jī)1、3轉(zhuǎn)速不變,電機(jī)2、4轉(zhuǎn)速一增一減且改變值相同。
1.5.4偏航運(yùn)動(dòng)
實(shí)現(xiàn)方法:電機(jī)1、3為一組,電機(jī)2、4為一組,轉(zhuǎn)速一個(gè)增加、一個(gè)減少,且每次改變轉(zhuǎn)速值相同。四軸旋翼飛行器使用機(jī)體的旋轉(zhuǎn)方向與轉(zhuǎn)速快的四軸旋翼的旋轉(zhuǎn)速度方向相反。
為了測(cè)量四軸驅(qū)動(dòng)飛行器的高度,在飛行器下方安裝光流高度傳感器,兩端的光流高度傳感器水平距離為L(zhǎng),光流高度傳感器的角度為θ,對(duì)本次飛行高度h的分析計(jì)算過程如下:兩個(gè)光學(xué)電流傳感器在高度至少為h0時(shí),從一開始就會(huì)有一個(gè)重疊區(qū)域,從兩個(gè)光學(xué)電流傳感器共同獲取的飛行圖像中會(huì)有一個(gè)重疊后的區(qū)域同時(shí)開始,當(dāng)高度再一次增加h0時(shí),重疊后的區(qū)域所在x向軸方向上的寬度為大于m0,并可以選擇此處大于m0寬度的值作為一個(gè)高度參考值。假設(shè)從重疊區(qū)域開始高度區(qū)域的距離為h1時(shí),則其對(duì)應(yīng)的有重疊高度區(qū)域的寬為m1,飛行器的總體最高高度為h,其中L、θ為已知參數(shù)。
根據(jù)三角形特性,無重疊區(qū)域的高度h0計(jì)算公式如下:
計(jì)算關(guān)系如圖2所示,在一個(gè)飛行器高度為2h0時(shí),重疊參考區(qū)域內(nèi)的寬度大于m0,可通過其對(duì)角點(diǎn)高度匹配函數(shù)算法直接計(jì)算其高度值,選取一個(gè)m0作為重疊參考區(qū)域?qū)挾?從它的有限無重疊高度區(qū)域距離開始,高度區(qū)域距離最大為hl時(shí)其所對(duì)應(yīng)的無重疊高度區(qū)域的寬為ml,飛行器高度越高,重疊空間寬度的數(shù)值越大,反之,則越小。ml同樣由對(duì)角點(diǎn)高度匹配函數(shù)算法來確定運(yùn)行值。由三角形相似原理可以,ml與其參考角點(diǎn)寬度大于m0的匹配關(guān)系定義如下:
則飛行器的飛行高度h為:
2系統(tǒng)硬件設(shè)計(jì)
該四軸飛行器系統(tǒng)主要由樹莓派、sTM32F301開發(fā)板、UsB攝像頭、無線圖像傳輸模塊、PwM驅(qū)動(dòng)模塊、地面站PC組成,如圖3所示。
2.1樹莓派
本設(shè)計(jì)應(yīng)用樹莓派是為了實(shí)現(xiàn)四軸飛行器的無線操作,憑借樹莓派的強(qiáng)大功能完成地面PC和四軸飛行器之間的圖像傳輸與處理,將樹莓派安裝在四軸飛行器上,使飛行器離開數(shù)據(jù)線的束縛,可完成遠(yuǎn)距離無線操作。通過0penMV上的攝像頭模塊將實(shí)時(shí)圖像傳輸?shù)綐漭缮?在樹莓派中加入上文提到的圖像識(shí)別代碼和算法,對(duì)識(shí)別圖像中的中心坐標(biāo)進(jìn)行計(jì)算,并通過飛行器底部的兩個(gè)光流模塊進(jìn)行定點(diǎn),如圖4所示,對(duì)地面色塊進(jìn)行識(shí)別,并確認(rèn)中心坐標(biāo)從而傳輸?shù)綐漭缮?在地面PC上進(jìn)行監(jiān)控。
2.2%ST32F301開發(fā)板
采用sTM32F301單片機(jī)作為四軸飛行器控制系統(tǒng)核心,通過調(diào)制PwM信號(hào)控制無刷電機(jī)的轉(zhuǎn)動(dòng)。在四軸飛行器的飛行控制原理學(xué)習(xí)過程中,通過學(xué)習(xí)算法、編程、調(diào)試,實(shí)現(xiàn)四軸飛行器的懸停。為了提高圖像獲取和處理的速度,采用sTM32F301開發(fā)板,通過將飛行控制核心板和串口通信進(jìn)行連接,飛控板上所需要的控制量由圖像處理所獲得,從而實(shí)現(xiàn)巡線功能。在不斷的調(diào)試和改進(jìn)中,飛行器實(shí)現(xiàn)定點(diǎn)懸停和巡線功能。本系統(tǒng)主要由sTM32F301飛行控制模塊和sTM32F301無線傳輸模塊、電機(jī)控制4路PwM、激光測(cè)距模塊組成,如圖5所示。
2.3PWT驅(qū)動(dòng)模塊
四軸飛行器是一個(gè)高精度、擁有多種姿態(tài)的控制系統(tǒng)。本文采用PwM驅(qū)動(dòng)模塊是為了通過調(diào)制
PwM波控制電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)對(duì)四軸飛行器轉(zhuǎn)速的精確控制,根據(jù)圖像傳輸回的信息,確定色塊的中心坐標(biāo),并調(diào)整中心坐標(biāo),使電機(jī)隨著坐標(biāo)的改變而改變,如圖6所示。
2.4地面站PC機(jī)
本設(shè)計(jì)采用地面站PC是為了對(duì)四軸飛行器通過攝像頭所傳輸回來的圖像進(jìn)行操作、識(shí)別,再返還給四軸飛行器,以實(shí)現(xiàn)四軸飛行器的懸停,根據(jù)圖像識(shí)別中的中心坐標(biāo),調(diào)整四軸飛行器的懸停狀態(tài)。應(yīng)用地面站PC能對(duì)飛行器進(jìn)行更好的監(jiān)控,掌握它的實(shí)時(shí)信息。
3結(jié)語
四軸驅(qū)動(dòng)飛行器系統(tǒng)是一個(gè)高精度、多姿態(tài)、強(qiáng)動(dòng)力耦合的飛行系統(tǒng)。采用OpenMV上的光流模塊作為圖像采集單元,利用0penCV對(duì)色塊的識(shí)別檢測(cè),對(duì)目標(biāo)色塊坐標(biāo)進(jìn)行修正和傳輸,實(shí)現(xiàn)四軸飛行器的追蹤,同時(shí)通過P1D算法完成對(duì)四軸飛行器的姿態(tài)控制及高度控制。本設(shè)計(jì)通過四軸飛行器對(duì)色塊的識(shí)別,脫離了GPs的束縛,完成了對(duì)不同環(huán)境中各種色塊的判斷,實(shí)現(xiàn)四軸飛行器實(shí)時(shí)信息的傳輸。實(shí)驗(yàn)研究表明,在被測(cè)光線采集條件適當(dāng)?shù)那闆r下,采用位于OpenMV上的光線電流采集模塊,對(duì)被測(cè)地面目標(biāo)圖像追蹤信息進(jìn)行實(shí)時(shí)的光線采集,并使用openCV模塊實(shí)現(xiàn)目標(biāo)圖像追蹤、特征點(diǎn)追蹤檢測(cè),將目標(biāo)的中心坐標(biāo)傳輸?shù)綐漭芍?在樹莓派中對(duì)坐標(biāo)進(jìn)行分析和計(jì)算,同時(shí)在地面站PC機(jī)上進(jìn)行實(shí)時(shí)監(jiān)控,對(duì)四軸飛行器的定高和姿態(tài)進(jìn)行處理,使用P1D算法可以實(shí)現(xiàn)對(duì)四軸飛行器的定點(diǎn)懸停。