洪富祥,陳沖,丘仲鋒?
(1南京信息工程大學(xué)電子與信息工程學(xué)院,江蘇 南京 210044;2南京信息工程大學(xué)海洋科學(xué)學(xué)院,江蘇 南京 210044)
隨著無人機(UAV)在各行各業(yè)的廣泛運用,無人機的自動化和智能化得到越來越多的關(guān)注,無人機如何實現(xiàn)智能化精準降落是其中的關(guān)鍵技術(shù)之一,而智能化降落的關(guān)鍵又在于無人機能否對降落目標進行精準定位。關(guān)于無人機的自動降落,人們開展了大量研究,研發(fā)了各種方法,比如基于全球定位系統(tǒng)(GPS)記錄的一鍵返航、結(jié)合運動檢測技術(shù)定位方法、光流傳感器和慣性測量模塊定位方法等。當前采用較多的自動降落方法是依托于GPS記錄無人機起飛點的一鍵返航。這種方法通過獲取無人機起飛點坐標,規(guī)劃飛行路徑并實時獲取中途位置點的坐標,形成飛行路徑信息,接收到無人機返回指令后進行返航。然而,GPS定位精度誤差大,無人機較難精準定位起飛點,從而無法實施自動精準降落,在某些特殊情況下可能造成降落點嚴重偏離起飛點的情況,造成事故。因此,當前常用的做法是,無人機降落到一定高度后加入人工干預(yù),實現(xiàn)安全降落。針對GPS定位不夠精準的問題,人們在此基礎(chǔ)上做了改進。Liu等[1]利用GPS粗定位與運動檢測技術(shù)定位相結(jié)合的方法,將攝像頭置于無人機起飛點處,通過攝像頭獲取無人機位置,然后發(fā)送命令來控制無人機運動。通過采用無人機雙攝像頭和慣性導(dǎo)航系統(tǒng),Song等[2]采用光流傳感器和慣性測量模塊定位的方法來提高無人機的定位精度。此外,擴展卡爾曼算法[3]也用作無人機定位,當GPS突然失效的時候,利用機載無線射頻的接收信號強度來解決定位問題。這些方法一定程度上提高了無人機降落時的定位精度,但需安置攝像頭等,或需要較復(fù)雜的光流計算,實施起來較為復(fù)雜。
針對這種情況,本文采用GPS粗定位和圖像處理模塊相結(jié)合的方法,通過GPS一鍵返航后的圖像處理模塊來控制無人機,實現(xiàn)室外應(yīng)用場景中無人機的精準降落。該系統(tǒng)實現(xiàn)簡單,硬件成本較低,可以改善僅依賴GPS定位降落的精度。
無人機采用大疆公司的A2[4]飛行控制模塊,該系統(tǒng)包括電源管理單元(PMU)、慣性測量單元(IMU)、GPS等主要單元。由A2飛行控制系統(tǒng)用戶手冊可知A2飛行控制系統(tǒng)的定位性能為:水平方向1.5 m,支持外接S-BUS、PPM等接收機,使用者可通過系統(tǒng)接口獲取無人機當前的狀態(tài)、位姿等信息,并通過簡單的指令控制飛行。
圖像處理單元使用樹莓派3B+,它是一款基于ARM的微型電腦主板,具有PC的基本功能,該平臺能夠搭載Raspbian官方操作系統(tǒng),該系統(tǒng)上能夠安裝QT和Opencv的開發(fā)環(huán)境。QT獨有的信號槽機制有利于消息的傳遞,適合本系統(tǒng)通信任務(wù)繁多的特點。Opencv屬于輕量級視覺庫,樹莓派3B+能夠滿足該視覺庫運行時對速度和內(nèi)存的要求[5]。
搭載開發(fā)環(huán)境的樹莓派通過SBUS總線將主控制器與A2飛控連接,其余傳感器還包括攝像頭和超聲波測距模塊。
無人機精準降落的控制流程如下:
步驟1)飛行控制模塊接收到自動返航命令后,調(diào)取起飛時無人機起落機坪的GPS定位信息,并根據(jù)該GPS定位信息控制無人機進行返航,直至無人機懸停在無人機起落機坪正上方高度H1處,H1為飛控中可編程實現(xiàn)的定高高度,然后發(fā)送樹莓派開機指令,QT應(yīng)用程序自啟;樹莓派中的QT應(yīng)用程序初始化攝像頭和超聲波測距模塊;同時運行步驟2)和步驟3)。
步驟2)QT應(yīng)用程序線程一,逐幀抓取攝像頭拍攝的圖像,每幀圖像經(jīng)過圖像處理算法得到起落機坪同心圓圓心像素級別坐標,該圓心像素級別坐標是以攝像頭幾何中心為原點建立的坐標系中的坐標,并將該圓心像素級別坐標發(fā)送至線程二;其中,待處理的圖像緩存在隊列中。
步驟3)QT應(yīng)用程序線程二,計算機發(fā)送查詢高度指令,超聲波測距模塊查詢高度并將查詢到的無人機當前高度H通過串口發(fā)送給樹莓派;將線程一的圓心像素級別坐標代入坐標轉(zhuǎn)換算法,得到對應(yīng)的無人機起落機坪同心圓圓心真實坐標;所述無人機當前高度H為超聲波測距模塊相對于無人機起落機坪的高度。
如果孩子丟失了,家長應(yīng)該怎么辦?第一,去跟孩子約定好的會合地點,例如服務(wù)臺、售票口等有工作人員、標志性地點且孩子熟悉好找的地方。第二,尋找工作人員或志愿者守住商場、超市游樂場所等出口,并對出入者仔細盤查。第三,在孩子丟失地點的四個不同方向進行尋找,每個方向最少找20分鐘。第四,撥打報警電話,并準確說明孩子丟失情況,保持手機暢通。
步驟4)飛行控制模塊控制無人機水平移動,并實時按步驟2)和步驟3)獲取圓心真實坐標,直至圓心真實坐標與紅外攝像頭幾何中心坐標在橫縱軸的誤差值小于等于預(yù)設(shè)誤差值,則水平移動完成;飛行控制模塊控制無人機垂直下降1 m,再進入步驟5);所述預(yù)設(shè)誤差值范圍在0~30 cm間。
步驟5)超聲波測距模塊發(fā)送查詢高度指令,當查詢到的H大于H2時,重復(fù)步驟2)、步驟3)和步驟4)的方法,直至查詢到的H與H2相等,無人機精準降落完成,其中,所述H2為無人機停機狀態(tài)超聲波測距模塊距離起落機坪的高度。無人機起落機坪如圖1所示(圓環(huán)由內(nèi)向外的顏色依次為黑、紅、黑、綠、黑、藍、黑),其中紅色圓環(huán)的半徑分別為10 cm、15 cm,綠色圓環(huán)的半徑分別為20 cm、30 cm,藍色圓環(huán)的半徑分別為35 cm、45 cm。這種設(shè)計能夠使無人機在下降過程中總是能檢測到圓的存在。流程圖如圖2所示。
圖1 無人機停機坪俯視圖Fig.1 Top view of UAV landing apron
無人機精準降落算法包括兩部分:基于Opencv的圖像處理算法,用于獲取起落機坪的位置信息;將獲取的像素級別坐標信息轉(zhuǎn)換為真實坐標信息的坐標轉(zhuǎn)換算法?;贠pencv的圖像處理算法流程圖如圖3所示,可描述為:
1)將當前待處理的圖像記為Frame。
2)對Frame進行灰度化處理,得到圖片記為midImage。
3)對midImage進行閾值比較,得到midImage中所有同心圓中最外部圓輪廓的圖片,并記為destImage。
4)對destImage進行圖像形態(tài)學(xué)處理和Canny邊緣檢測處理,得到destImage對應(yīng)的清晰輪廓灰度圖。
圖2 無人機著陸控制流程圖Fig.2 Control flow chart of UAV landing
圖3 圖像處理算法流程圖Fig.3 Flow chart of image processing algorithm
6)將1)中的Frame由RGB顏色空間模型轉(zhuǎn)換到HSV顏色空間模型下,得到HSV顏色空間模型下的圖片F(xiàn)rame,然后在HSV顏色空間模型下對Frame提取紅、綠、藍三種顏色,由于無人機在下降過程中視野會減小,提取到的色環(huán)可能是紅、綠、藍三色環(huán)或者是紅、綠兩個色環(huán)或者是紅色同心圓。
7)將6)中的提取到的色環(huán)由HSV顏色空間模型轉(zhuǎn)換到RGB顏色空間模型,分別得到在RGB顏色空間模型下對應(yīng)的色環(huán);然后再對RGB顏色空間模型下的色環(huán)分別按步驟2)、步驟3)和步驟4)的方法處理,得到提取到的色環(huán)對應(yīng)的灰度圖。
8)將步驟5)中無人機起落機坪同心圓圓心像素級別坐標和步驟7)中得到的色環(huán)對應(yīng)的灰度圖作為參數(shù)代入到霍夫變換函數(shù),分別得到圓環(huán)半徑對應(yīng)的像素級別長度;其中,最大同心圓半徑對應(yīng)的像素級別長度記為Bpix/2。
在數(shù)字圖像處理的過程中,為了提高圖像處理的速度,通常會將需要處理的彩色圖像進行灰度化處理,再將灰度化處理后的圖像進行閾值比較二值化處理?;叶然幚聿捎闷骄捣?可表示為
經(jīng)過上述兩種方法的處理,不僅可以加快圖像處理的速度,還便于對圖像局部進行處理,方便對目標圖形調(diào)試和觀察。閾值比較方法是利用待檢測目標和整個圖像的區(qū)別,把圖形分為兩個不一樣的灰度級別,選擇一個合適的閾值,即可得到需要對圖像后續(xù)處理的部分。由于在灰度化和二值化后得到的圖像具有較大的噪聲,故需對所得圖像進行圖像形態(tài)學(xué)處理。圖像形態(tài)學(xué)可以用來解決抑制噪聲、特征提取、邊緣檢測、圖像分割、形狀識別、紋理分析、圖像恢復(fù)、圖像壓縮等圖像處理問題。此處主要是利用圖像形態(tài)學(xué)處理中的膨脹和腐蝕[7]。膨脹腐蝕能夠消除去噪,分割單個圖像單元,在圖像中連接相鄰的元素,查找明顯的極大值區(qū)域和極小值區(qū)域,求出圖像的梯度等。通過膨脹腐蝕的操作,可以有效去除目標圖像的噪聲,為后面霍夫圓檢測做準備。
邊緣檢測算法有Sobel、Laplace、Canny等檢測算子。Sobel處理后的圖像邊緣有強有弱,抗噪性好;Laplace較為敏銳,一些噪音會包含進入處理后的圖像中;Canny檢測后的邊緣較細,分布較為均勻。由于前面做完了膨脹腐蝕操作,已過濾一部分邊緣噪聲,故采用Canny算法進行邊緣檢測。
RGB顏色空間模型是由紅、綠、藍三原色構(gòu)成,其他各種顏色出現(xiàn)在紅、綠、藍的原色光譜分析中,該顏色空間模型在Opencv視覺庫中能夠?qū)崿F(xiàn)與灰度圖的相互轉(zhuǎn)化,但是不能提取某個區(qū)域特定的顏色,HSV是一種將RGB顏色空間的點在倒圓錐中表示的顏色空間模型,該模型用色相h、色彩飽和度s和亮度v來描述色彩。在Opencv視覺庫中,該顏色空間模型能夠提取區(qū)域特定顏色,但是不能將區(qū)域圖片轉(zhuǎn)化成灰度圖,因此采用HSV顏色空間提取起落機坪的色環(huán),然后轉(zhuǎn)化到RGB顏色空間進行圖像處理,其中RGB顏色空間模型轉(zhuǎn)化到HSV顏色空間模型的公式可表示為
式中:r、g、b是圖片在RGB顏色空間模型下的分量,Mmax為r、g、b中的最大值,Mmin為最小值。h在0~360°之間,s在0~100%之間,v在0~max之間。
HSV顏色空間模型轉(zhuǎn)化到RGB顏色空間模型的公式為
對于每個顏色向量,有
式中:h、s、v為HSV顏色空間的色彩分量,hi、x、y、z、f為變量。
由感光器件成像原理可知,感光元器件將光信號轉(zhuǎn)換為電信號,通過模數(shù)轉(zhuǎn)換器將高低不同的電信號轉(zhuǎn)換為數(shù)字信號。因此在圖像處理算法中獲取的停機坪圓環(huán)信息是在攝像機感光元件上的像素坐標信息,下面將介紹將像素坐標轉(zhuǎn)換為真實坐標的算法。
感光元件成像示意圖如圖4所示,圖中Spix表示攝像機中像素點固定數(shù)量,L為攝像機的焦距,a為如圖所示感光器件與視野中起落機坪圓環(huán)建立的幾何圖形角度的一半,b為攝像頭的最大視角的一半,R為攝像頭視野中的同心圓環(huán)中最外圓環(huán)的半徑,由幾何關(guān)系得
圖4 感光元件成像圖Fig.4 Imaging diagram of photosensitive element
則有
進一步得到
對于特定成像元件來說,Spix、tanb為常數(shù),令k=tanb/Spix,則有
根據(jù)無人機精準降落圖像處理算法中的步驟5)所得的像素級別坐標乘以比例系數(shù)k,得到紅外攝像頭幾何中心相對于同心圓圓心的真實坐標。截斷遙控信號接收模塊的信號,樹莓派生成飛控SBUS指令,通過三極管接入到飛行控制模塊,即通過自己模擬遙控桿量的方式[5]實現(xiàn)控制無人機水平移動。
根據(jù)圖像處理算法的思想及實現(xiàn)方法,在樹莓派中安裝QT開發(fā)環(huán)境,在QT中加載Opencv視覺庫來編寫程序,無人機在下降過程中,起落機坪圖片經(jīng)圖像處理算法處理后的結(jié)果如圖5所示。圖5(a)是無人機降落過程中,起落機坪俯視圖經(jīng)過灰度化、二值化和形態(tài)學(xué)處理后的圖片,圖5(b)是圖5(a)經(jīng)過Canny檢測后所得到的視圖邊緣輪廓,圖5(c)~(e)是對應(yīng)照片經(jīng)過HSV顏色空間下的處理,提取得到的特定顏色圖,通過計算轉(zhuǎn)換到RGB色空間后,經(jīng)過形態(tài)學(xué)處理得到該視圖下的同心圓半徑,并通過程序篩選得到最大同心圓半徑。
圖5 (a)灰度二值化和形態(tài)學(xué)處理;(b)Canny邊緣檢測;(c)~(e)在HSV顏色空間中提取不同的色塊Fig.5 (a)Gray-scale binarization and morphological treatment;(b)Canny edge detection;(c)~ (e)Different color blocks extracted in HSV color space
經(jīng)過上述步驟得到的坐標信息,需經(jīng)過坐標轉(zhuǎn)換算法轉(zhuǎn)換為真實坐標信息,如表1所示為測試的不同高度下像素大小與圓環(huán)半徑的關(guān)系,圖6為數(shù)據(jù)的線性擬合,其中線性擬合的橫坐標X=HmBpix,Rm為圓環(huán)半徑大小,Bpix為像素點的個數(shù),Hm為攝像頭距離圓環(huán)的距離。
表 1像素大小與圓環(huán)半徑的關(guān)系Table 1 Relationship between the size of pixels and radius of torus
根據(jù)無人機的飛行控制流程,選取無人機的返航高度20、15、9、6、3 m,分別對應(yīng)圖5的第1~5行的圖片,返航時獲取的同心圓靶圓心坐標的橫坐標乘以比例系數(shù)k作為無人機降落精度的衡量,如表2所示。
表 2無人機著陸點誤差比較Table 2 Error comparison of UAV landing point
針對傳統(tǒng)的無人機自動返航時降落精度誤差大的問題,在解決方案中提出了將攝像頭置于無人機上,通過在高性能的微控制器中實現(xiàn)圖像處理算法來獲取無人機相對于起落機坪的相對位置,通過模擬桿量的方法來控制無人機的運動,通過多次無人機姿態(tài)的調(diào)整來實現(xiàn)無人機的精準降落。實驗表明所設(shè)計方案在無人機懸停在15~20 m時,無人機能夠識別無人機停機坪的圖片,并控制無人機進行降落,由表2可知與只有GPS定位的無人機降落相比精度有了明顯提高。
圖6 數(shù)據(jù)線性擬合Fig.6 Linear fitting of data
提出了基于機器視覺的無人機同心園靶精準降落方法,該方法中的圖像處理算法依托搭載在無人機上的圖像處理模塊直接與飛行控制系統(tǒng)進行通信。采用GPS粗定位和圖像處理算法二者結(jié)合,來獲取無人機距目標靶的水平距離差,通過模擬遙控器桿量的方式來控制無人機運動。實驗表明所涉及的方法能夠穩(wěn)定識別同心圓并實現(xiàn)無人機精準降落。