楊永錚, 鄧梓軒, 鄭丹娜, 馬興灶
(嶺南師范學(xué)院機(jī)電工程學(xué)院, 廣東湛江 524048)
隨著自動(dòng)化和計(jì)算機(jī)技術(shù)的不斷提高,無人機(jī)技術(shù)趨向于成熟,無人機(jī)在氣象監(jiān)測、災(zāi)害監(jiān)測、農(nóng)藥噴灑和地質(zhì)勘測等民用領(lǐng)域應(yīng)用越來越廣泛[1-5]。 未來無人機(jī)將向小型化、低損耗、低成本、可穿戴和視覺目標(biāo)檢測等方向發(fā)展,其中視覺技術(shù)是無人機(jī)未來應(yīng)用方向的熱點(diǎn)。 無人機(jī)視覺識別技術(shù)是將無人機(jī)作為載體,結(jié)合機(jī)器視覺技術(shù),利用無人機(jī)在飛行過程中拍攝的圖像, 并且從圖像中提取信息進(jìn)行處理,最終用于無人機(jī)自主控制的輸入和無人機(jī)終端應(yīng)用領(lǐng)域的拓展。 安敬蕊[2]針對海上移動(dòng)目標(biāo)的識別和跟蹤, 應(yīng)用一種基于不變矩與自適應(yīng)模板匹配相結(jié)合的快速運(yùn)動(dòng)目標(biāo)識別與跟蹤方法, 利用不變矩的特性進(jìn)行目標(biāo)識別,并且建立相應(yīng)的搜索區(qū)域,在搜索區(qū)域內(nèi)進(jìn)行目標(biāo)模板的匹配, 待匹配完成后對其進(jìn)行標(biāo)記并且更新目標(biāo)模板。 余小游等[6]提出一種基于模型的目標(biāo)識別方法,利用目標(biāo)模型、環(huán)境模型、背景模型和傳感器模型來對目標(biāo)進(jìn)行識別,根據(jù)模型的特性來匹配實(shí)際目標(biāo)的特征進(jìn)行識別。 曹遠(yuǎn)寧[7]利用一種基于HSV 空間的彩色圖像分割算法,把圖像的顏色信息作為分割的主要依據(jù)進(jìn)行目標(biāo)識別,但容易受光污染,需要采用特定技術(shù)消除噪聲。而閾值法[8]是一種最常用和最基本的圖像識別方法,因其簡單且高效,有望應(yīng)用于無人機(jī)目標(biāo)追蹤識別。 為此,本文擬采用閾值法,開發(fā)基于無人機(jī)的自主飛行系統(tǒng),實(shí)現(xiàn)無人機(jī)一鍵啟動(dòng)、 定高懸停和識別地面的指定目標(biāo)并進(jìn)行目標(biāo)追蹤,研究結(jié)果對無人機(jī)應(yīng)用具有一定的促進(jìn)作用。
本文使用自制的無人機(jī)[9]進(jìn)行試驗(yàn),飛控系統(tǒng)核心為STM32F407V,包括5 個(gè)額外的USART 端口。 同時(shí)配置有慣性傳感器(MPU6050),光流傳感器(Pix4Flow)、激光傳感器、OpenMV 視覺系統(tǒng)和無線傳感器(nRF24L01)等多個(gè)傳感器進(jìn)行數(shù)據(jù)采集和增強(qiáng)無人機(jī)飛行的穩(wěn)定性。 其中,慣性傳感器模塊主要記錄無人機(jī)姿態(tài)信息,集成于飛控系統(tǒng)中;光流模塊主要作為水平面位置和速度反饋器;激光傳感器主要用于無人機(jī)測高、定高,與光流模塊配合使用;OpenMV 視覺系統(tǒng)主要對目標(biāo)物體進(jìn)行動(dòng)態(tài)追蹤識別[10];無線傳感器nRF24L01 模塊返回實(shí)時(shí)數(shù)據(jù)給地面站PC。 無人機(jī)和系統(tǒng)示意圖如圖1 所示。
圖1 無人機(jī)和系統(tǒng)示意圖
本文以無人機(jī)追蹤智能小車為例, 實(shí)現(xiàn)無人機(jī)對智能小車進(jìn)行識別和追蹤的功能,主要包括兩個(gè)功能:無人機(jī)一鍵起飛,并使其穩(wěn)定飛行且定高懸停、平緩降落等;追蹤地面的智能小車實(shí)現(xiàn)偏航的跟隨偏轉(zhuǎn)。 主要功能流程如圖2 所示。
圖2 功能實(shí)現(xiàn)流程
在智能小車車身粘貼的黑線標(biāo)志物進(jìn)行目標(biāo)識別,利用OpenMV 視覺模塊的RGB 彩色圖像獲得灰度圖和二值圖,并對二值圖進(jìn)行橫向和縱向掃描,檢測圖像的邊緣, 將每一行或每一列的黑線中心坐標(biāo)轉(zhuǎn)換至霍夫空間,轉(zhuǎn)換時(shí)以上一幀檢測出的直線作為檢測范圍的約束條件,既能減少運(yùn)算量又能實(shí)現(xiàn)對直線的跟蹤。選擇參數(shù)空間中的極大值點(diǎn)對應(yīng)的直線作為候選直線,若行掃描和列掃描獲得的兩條直線近似滿足垂直關(guān)系則認(rèn)為檢測有效,并對有效檢測后的兩條直線的交點(diǎn)和斜率進(jìn)行低通濾波。檢測黑色直線時(shí),通過霍夫線變換識別畫面內(nèi)的直線,再設(shè)置黑色直線的顏色閥值,過濾其他顏色直線的干擾。
利用OpenMV 拍攝的相鄰兩幀圖像獲得兩條黑色直線標(biāo)志物的坐標(biāo)信息, 通過調(diào)用calculate_ intersection(line1,line2) 函數(shù)計(jì)算得出兩條黑線交點(diǎn)的坐標(biāo)值(x,y),調(diào)用calculate_angle (line1,line2) 函數(shù)得出兩直線相交的角度值, 判斷出目標(biāo)物體的運(yùn)動(dòng)軌跡。 在調(diào)用calculate_intersection (line1,line2)函數(shù)前,采集兩條直線的坐標(biāo)信息,兩條直線的端點(diǎn)分別為(line1.x1,line1.y1)、(line1.x2,line1.y2)和(line2.x1,line2.y1)、(line2.x2,line2.y2),坐標(biāo)值及角度的計(jì)算示意圖如圖3 所示,求解見式(1)~式(12)。最后OpenMV 通過串口通訊把對應(yīng)的數(shù)據(jù)發(fā)送到飛控端, 飛控端接收到數(shù)據(jù)后進(jìn)行格式解析, 得出對應(yīng)的數(shù)據(jù)后進(jìn)行無人機(jī)的姿態(tài)調(diào)整。
圖3 目標(biāo)點(diǎn)追蹤計(jì)算示意圖
將直線1、直線2 的兩點(diǎn)代入直線方程得:
在霍夫線變換中使用(r,θ)表示一條直線,其中r 是該直線到原點(diǎn)的距離,θ 為該直線的垂線與x 軸的夾角。其中l(wèi)ine1.theta()為θ1,line2.theta()為θ2,調(diào)用theta()函數(shù)直接返回線段的角度,在已知θ1和θ2的情況下通過算法實(shí)現(xiàn)四邊形的角公式計(jì)算出直線的夾角θ。
由于相鄰的兩幅圖像總會(huì)存在相同的特征, 通過對比這些特征點(diǎn)的位置變化信息可以判斷出物體表面特征的平均運(yùn)動(dòng), 這個(gè)分析結(jié)果最終被轉(zhuǎn)換為二維的坐標(biāo)偏移量,通過處理幀與幀之間所采集圖像的特征點(diǎn)的x 和y位移的增量值近似為零,這樣就能使飛機(jī)定點(diǎn)懸停[11]。 根據(jù)光流傳感器的兩種光流數(shù)據(jù),一種為原始光流數(shù)據(jù),另一種為融合后的光流數(shù)據(jù)。 基于波形圖可以看出通過融合解耦后的光流數(shù)據(jù)波形更加平穩(wěn), 更有可能使飛行器取得良好的懸停效果,如圖4 所示。
圖4 光流數(shù)據(jù)波形
利用上位機(jī)進(jìn)行設(shè)置飛行高度值,進(jìn)行一鍵起飛,待飛行器在指定高度飛行一定時(shí)間再一鍵降落, 觀察飛行器降落后中心位置與起飛前的中心位置之間的誤差值。若落地誤差值較大,且相對不穩(wěn)定,則通過調(diào)整光流算法的參數(shù)來降低落地誤差。 定高懸停測試試驗(yàn)結(jié)果見表1。
表1 定高懸停測試試驗(yàn)結(jié)果
由表1 定高懸停測試結(jié)果可知, 無人機(jī)在不同的飛行高度和飛行時(shí)間下,能夠?qū)崿F(xiàn)定高懸停穩(wěn)定飛行,落地誤差基本維持在5~13cm 以內(nèi),基本滿足設(shè)計(jì)要求,未來可通過調(diào)整算法,繼續(xù)降低落地誤差。
完成室內(nèi)定高懸停試驗(yàn)以及對光流數(shù)據(jù)波形的分析后,利用OpenMV 視覺模塊進(jìn)行目標(biāo)識別與追蹤試驗(yàn),通過邊緣處理的圖像后進(jìn)行霍夫圓變換,識別結(jié)果見圖5。
圖5 目標(biāo)識別效果圖
在室內(nèi)布置一臺遙控小車, 小車外殼貼上黑線進(jìn)行標(biāo)記, 該標(biāo)記物為OpenMV 利用霍夫線變換算法進(jìn)行處理的特征點(diǎn)。 利用上位機(jī)一鍵起飛無人機(jī), 飛至小車上空,遙控控制小車運(yùn)動(dòng),無人機(jī)在空中實(shí)現(xiàn)跟隨小車的試驗(yàn),目標(biāo)追蹤試驗(yàn)結(jié)果見表2。
表2 目標(biāo)追蹤試驗(yàn)結(jié)果
由表2 目標(biāo)追蹤試驗(yàn)結(jié)果可知, 在不同的飛行高度和飛行時(shí)間下, 追蹤運(yùn)動(dòng)小車, 落地誤差基本保持在18cm 以內(nèi),表明本文所提供的算法能夠?qū)崿F(xiàn)運(yùn)動(dòng)目標(biāo)的識別與追蹤。
本文基于開源四軸飛控和OpenMV, 設(shè)計(jì)了一款具有目標(biāo)識別和追蹤功能的飛行系統(tǒng), 該系統(tǒng)能夠通過上位機(jī)完成起飛、定高懸停狀態(tài),并穩(wěn)定地對指定目標(biāo)進(jìn)行識別和追蹤。試驗(yàn)結(jié)果表明,光流傳感器輸出的光流數(shù)據(jù)通過慣導(dǎo)融合和解耦后更加利于飛行器的定點(diǎn)懸停,能夠在一鍵起飛后迅速進(jìn)入懸停狀態(tài); 同時(shí), 在懸停狀態(tài)下,能夠穩(wěn)定地對指定目標(biāo)進(jìn)行識別和跟蹤。