文/趙旭
隨著科學技術發展,無人機硬件設備向高集成、高性能方向發展,特別是旋翼型無人機具有靈活性高、穩定性好、可以垂直起降場地適應性較強的優點,廣泛應用于無人機測繪、無人機植保、無人機偵查識別等領域。硬件中集成了CMOS傳感器和處理器可以進行跟蹤和識別,這類無人機在各種領域都有較強的自主控制能力,適應不同的工作環境。然而旋翼無人機隨著姿態控制的同時避免不了出現震動和干擾,圖像容易模糊;識別過程中,被跟蹤物體顏色如果和背景顏色相近容易出現識別失敗導致跟蹤失敗現象;當被跟蹤物體被遮擋后沒有相應的算法去解決等。本文根據以上問題,提出一種基于Opencv視覺處理的旋翼無人機識別規劃方案,能夠實現自主跟蹤控制。
多旋翼無人機飛行平臺采用飛越TAROT公司680pro碳纖維機架(TL68P00),軸距695mm,可安裝無刷電機數量為六個;無刷電機采用3510電機,kv值為350;電子調速器采用3~6S/40A,供電電壓從11.1V~25.2V,最大持續電流40A;螺旋槳尺寸為13寸碳纖維螺旋槳;動力電池采用格瑞普公司的格氏16000mAh/15C電池。該平臺無負載重量約為4.2公斤,懸停時間約為32分鐘。本設計中采用的六旋翼無人機飛行平臺具有高機動性,具備空間三軸六自由度的飛行能力,對場地要求較小,適合執行圖像處理并跟蹤任務。
首先通過六旋翼無人機飛行平臺搭載的視覺采集設備對圖像進行采集,將每秒24幀的視頻 通過串行通信傳送給圖像處理器的高速存儲器,先進行圖像預處理,如降低圖像噪點、圖像曝光糾正等等,然后送入以圖像處理器為核心的控制板運行移植的Opencv代碼對視頻圖像進行處理。識別并跟蹤必須要掌握被跟蹤目標的信息,如何快速的從復雜多樣的環境中識別目標信息是設計重點,需要論證目標信息匹配識別方法,選擇最優的方法計算好路徑送入飛行控制器實時控制六旋翼無人機飛行平臺進行移動。
圖像識別和跟蹤是兩個獨立的步驟,首先需要從每秒24幀的視頻中提取目標特征信息,如目標的輪廓、大小、顏色等,難點在于運動目標的識別。目前有較為流行的三種方法分別是幀差法、背景差分法和光流法。本設計主要采用改進的光流法,傳統的光流法主要是利用空間運動目標被測表面的像素點運動產生的瞬時速度場,根據以上信息可以反映運動物體的運動趨勢及表面結構,這種方法計算量較大,需要逐幀進行計算,處理時容易產生延遲,實時性較差。根據傳統的光流法的缺點,改進的光流法基于Lucas-Kanade光流算法,并不是每幀都要重新分析像素點的變化,是一種由高斯迭代法解線性方程組進行迭代的方法,優點在于這種算法有較強的魯棒性,但是對于邊緣和同質區域微小的變化信息會被忽略。但是對于無人機這種在天空飛行的視覺識別平臺而言,這種現象出現幾率較小,所以適合在多旋翼無人機飛行平臺上實現。
Opencv的另一個處理步驟是基于識別的信息進行跟蹤控制,本設計中采用的Opencv的交互卡爾曼濾波方法,運行cvFindContours函數可以有效的提取目標特征,提高識別效率和準確性。其中常規的卡爾曼濾波算法是基于線性隨機差分方程來描述離散時間過程的狀態變量,本設計中應用系統并不是實時線性的,所以本設計采用交互卡爾曼濾波器,利用梯度下降法可以計算并融合一組姿態四元數(姿態參數包含三軸加速度、地磁傳感器數據,本設計中不包含地理信息數據),不僅被跟蹤目標勻速或有規律按圓周運動能夠被跟蹤,而且當被跟蹤目標加速度移動也可以穩定跟蹤。
考慮到Opencv巨大的運算量,一些微控制器運行困難,并且存儲器瓶頸較為明顯,所以本設計采用三星S3C2440處理器,ARM920T架構的核心板進行圖像處理和跟蹤控制,配合SDRAM容量為64MB,256MB的Nand Flash和2MB Nor Flash。交叉編譯器使用該ARM9開發工具和Linux和GCC4.4.3,編譯工具采用Cmakeversion,版本2.8。移植過程較為繁瑣,分為下載并構建Opencv、生成makefile、編譯安裝、解決warnning和error和移植運行。首先要在https://opencv.org/官網下載Opencv的源代碼,構建生成目錄;下載并安裝幾個必要的庫文件,如zlib、jepg、libpng、ffmpeg等;然后運行Cmake工具并配置交叉編譯環境,如在Cmake-guI選項卡的Target System下面的Operating System填寫arm-linux;在compilers C項目點選交叉編譯器的命令地址(bin文件夾的arm-linuxgcc);在compiles C++項目點選bin文件夾的arm-linux-g++命令地址。然后編譯安裝,此時會遇到各種報錯,報錯信息中可以能看出缺少鏈接參數的庫文件,一般來講包含pthread、dlfcn、parallel等庫文件,解決方法在CMAKE_EXE_LINKER_FLAGS添加以上的庫即可,修改部分源程序代碼以適應該編譯工具鏈,最后編譯移植運行。
本文所設計的視覺識別規劃可以有效的識別靜態和動態物體,測試飛行環境為吉林化工學院雙吉校區實訓綜合樓410無人飛行器實驗室試飛場及室外試飛。在室外路徑規劃測試也能順利的進行,飛行測試平臺飛行穩定。在測試過程中也發現一些問題,在動態跟蹤測試時,飛行高度低于2米,容易出現飛行器“跟丟”現象,原因有兩個,首先2.5mm鏡頭的視場FOV太小,僅能達到垂直75°、水平130°的水平;第二飛行高度過低會造成被跟蹤物體移動過快后丟失目標。更換2.1mm廣角鏡頭后又造成圖像畸變嚴重使得直角循線過程中失敗。后期可以在OPENCV代碼中可以加入圖像畸變校正處理代碼繼續測試。