張義楨 向 婕 唐立軍
(長沙理工大學(xué)物理與電子科學(xué)學(xué)院 湖南 長沙 410114)(近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點實驗室 湖南 長沙 410114)
隨著智能物流的迅速發(fā)展,物流無人機受到人們的高度重視,精準(zhǔn)投放是無人機物流要解決的首要問題[1-2]?,F(xiàn)有物流無人機飛控多采用衛(wèi)星定位方法,定位范圍約為10米[3],光流定點方法則會將變化的光線錯誤地識別為光流,從而影響到定點效果的穩(wěn)定[4-5],隨著智能終端快速發(fā)展,二維碼在倉儲物流、資源定位、導(dǎo)航服務(wù)等行業(yè)有廣泛應(yīng)用。二維碼作為位置信息承載的工具,具有成本低、數(shù)據(jù)存儲量大、抗損性強、抗光線干擾等特點。本文在衛(wèi)星定位技術(shù)的基礎(chǔ)上,結(jié)合圖像處理技術(shù),探索物流無人機二維碼精準(zhǔn)定位、實現(xiàn)定點投放方法。
無人機采用衛(wèi)星定位技術(shù)進(jìn)行米級粗定位,此過程無人機在目標(biāo)地面附近懸停盤旋同時檢測畫面是否存在二維碼,當(dāng)識別成功二維碼時,對目標(biāo)二維碼進(jìn)行解碼匹配。若匹配失敗,則重新進(jìn)行GPS校準(zhǔn);若匹配成功,之后只需要對目標(biāo)二維碼進(jìn)行檢測,目的是減少解碼的時間。同時定位二維碼,利用跟蹤算法引導(dǎo)無人機飛行,此時檢測高度確保安全降落,總體方案如圖1所示。
圖1 飛控定位流程圖
傳統(tǒng)的定點標(biāo)記方法采用自行設(shè)計的地面標(biāo)記[6]引導(dǎo)無人機運動,該方法在多地標(biāo)情況存在時,會出現(xiàn)無法正確判斷目的地的問題。QR碼是二維碼的一種,可以用來記錄位置信息,用于表示漢字時比其他二維碼效率高。采用QR碼作為地標(biāo),可以應(yīng)用于多目標(biāo)地標(biāo)存在的情況。
由于圖像普遍存在隨機噪聲,需要先對圖像進(jìn)行中值濾波和選定合適的閾值通過Ostu法二值化增強圖像質(zhì)量。針對二維碼的圖像處理,在環(huán)境簡單的情況下,挖空算法方法可以提高運算速度[7]。考慮到飛控需要快速處理二維碼圖像,且應(yīng)用環(huán)境簡單,因此,本文的飛控精準(zhǔn)定位算法采用挖空算法,即對檢測圖像進(jìn)行一般處理后,保留QR碼的位置探測圖像,將其他部分挖空,再進(jìn)行QR碼定位檢測,如圖2所示。
圖2 QR碼的組成部分
二維碼圖像校正方法??紤]到無人機拍攝的二維碼成像角度變化,需要根據(jù)QR碼特有的位置探測圖像,對檢測的二維碼進(jìn)行幾何旋轉(zhuǎn)。相機拍攝角度、鏡頭弧度和無人機飛行姿態(tài)等原因,造成圖像幾何失真,可以利用QR碼為方形的特性,采用式(1)投影的變換法進(jìn)行幾何校正,從而實現(xiàn)圖像幾何校正,如圖3所示。
s=c1x+c2y+c3xy+c4
t=c5x+c6y+c7xy+c8
(1)
二維碼圖像解碼方法。QR碼檢測成功,將圖2中QR碼的數(shù)據(jù)部分提取出來,根據(jù)QR碼編碼規(guī)范對數(shù)據(jù)進(jìn)行解碼操作,解碼成功后得到的字符串與設(shè)定好的字符串進(jìn)行配對,若字符串一致則目標(biāo)二維碼匹配成功。
圖3 二維碼圖像幾何失真示意圖
考慮地面的平坦度,按照地面情況可分為兩種:第一種測距場景表示地勢平坦,可視作水平面;第二種測距場景表示地勢凹凸不平,可視作一個平臺。當(dāng)?shù)诙N測距場景的h0=0時,可以轉(zhuǎn)化為第一種,故只討論第二種的測距場景情況。主要變量符號說明如表1所示。
表1 建模參數(shù)
以無人機位置為原點對二維碼空間位置進(jìn)行定位,建立基于“高度差-航向角-距離即(Δh,ψ,d)”目標(biāo)二維碼的空間坐標(biāo),如圖4所示。
圖4 目標(biāo)二維碼位置信息坐標(biāo)圖
高度差主要依靠無人機飛控系統(tǒng)的氣壓傳感器可以直接讀取無人機相對地面的高度h。航向角可由飛控系統(tǒng)的慣性測量模塊獲得。無人機相對目標(biāo)二維碼的距離由測量計算獲得。
第一步,先計算出無人機當(dāng)前位置的角度θ1。如圖4所示,將攝像頭的光學(xué)中心定為原點O,建立三角形OMN和三角形OQP的相似關(guān)系,光軸與地面角度γ為初始固定且角度較大,可以通過測量得出。
(2)
得到結(jié)果:
第二步,計算出無人機當(dāng)前位置的角度θ2。按照以上方式計算出θ1后,控制無人機向前沿直線平行飛行運動水平距離c米,無人機懸停后再次采集圖像,得到結(jié)果:
經(jīng)過大量實驗測試,發(fā)現(xiàn)此過程對要求無人機直線飛行距離的準(zhǔn)確度以及懸停的平穩(wěn)性較高。
第三步,計算出無人機相對目標(biāo)二維碼的距離d。由圖4可知飛行器兩個不同位置的無人機的俯仰角之差為:
(3)
由幾何關(guān)系可得無人機相對目標(biāo)二維碼的距離d滿足如下關(guān)系:
(4)
由式(2)、式(3)和式(4)可得出無人機機身與目標(biāo)二維碼高度差、無人機相對目標(biāo)二維碼距離,根據(jù)前面建立的三維坐標(biāo)系,可得到目標(biāo)二維碼的三維坐標(biāo)。若以攝像頭為原點,目標(biāo)二維碼的中心坐標(biāo)為:
(5)
物流無人機在飛行時,需要實時跟蹤目標(biāo)二維碼的坐標(biāo)以保證準(zhǔn)確著陸。當(dāng)路面有許多與目標(biāo)顏色相似的情況下,單方面考慮顏色易導(dǎo)致跟蹤目標(biāo)錯誤檢測,引入跟蹤目標(biāo)的預(yù)測算法來降低跟蹤誤差。
采用基于CamShift的QR碼位置探測圖像算法來確定跟蹤目標(biāo)。CamShift算法增強了跟蹤算法在目標(biāo)遮擋條件下的穩(wěn)定性和跟蹤效率[8]。但CamShift算法直接應(yīng)用于嵌入式系統(tǒng)將大大增加計算量。QR碼的位置探測圖像具備唯一性,提取過程運算量小,形狀穩(wěn)定性強,物流無人機在第一次成功識別并匹配二維碼后,采用基于QR碼的位置探測圖像作為局部特征的CamShift跟蹤算法,可以大大提高運算速度。通過對觀測目標(biāo)幀圖像和位置探測圖像的特征進(jìn)行匹配,根據(jù)相似度可以判斷是否為跟蹤目標(biāo)。圖5為兩者在HSV空間中運算量的對比,結(jié)果顯示改進(jìn)后的CamShift運算量有極大減少。
(a) 二維碼原始圖像
(b) QR碼位置探測圖形圖5 二維碼的H分量直方圖
從無人機攝像頭在空中拍攝到的二維碼圖像如圖6所示,隨機選取連續(xù)的100幀圖像,分別用基于QR碼的位置探測圖像的CamShift跟蹤算法和改進(jìn)前的CamShift跟蹤算法計算平均耗時,比較兩個跟蹤算法復(fù)雜度。
圖6 無人機拍攝到二維碼圖像
跟蹤算法的運算復(fù)雜度比較結(jié)果如圖7所示,處理的圖像為100幀??梢钥闯觯琎R碼位置探測圖像CamShift跟蹤算法的平均運算時間僅為0.017 ms,比改進(jìn)前的CamShift算法的平均運算時間要小得多。因此,QR碼位置探測圖像CamShift跟蹤算法降低了運算復(fù)雜度,提高了運算效率。
圖7 算法復(fù)雜度比較
采用PID控制方法來實現(xiàn)目標(biāo)跟蹤。單級的PID控制結(jié)構(gòu)存在魯棒性問題[9-11]。采用串級PID控制結(jié)構(gòu),外環(huán)為位置PID控制器,內(nèi)環(huán)為角速度PID控制器。外環(huán)根據(jù)攝像頭讀取的實時坐標(biāo)信息作為外環(huán)輸入量,由式(5)得到的坐標(biāo)(Δh,ψ,d)轉(zhuǎn)換為(x,y,z),當(dāng)前三個方向的位置與目標(biāo)位置的差為系統(tǒng)輸入。經(jīng)過位置控制算法解算,轉(zhuǎn)化為角速度輸入量。內(nèi)環(huán)根據(jù)姿態(tài)傳感器提供控制角度信息,為實時姿態(tài)角速度反饋量,利用角速度PID控制器計算控制力矩,最后轉(zhuǎn)化為旋翼轉(zhuǎn)速,控制無人機飛行運動。相比直角坐標(biāo)系建模,采用基于“高度差-航向角-距離”坐標(biāo),可以根據(jù)控制需求先使航向角與目標(biāo)重合,即ψ為0,采樣頻率為1 000 Hz。
根據(jù)系統(tǒng)需求,飛控系統(tǒng)選擇關(guān)鍵元器件如表2所示。采用STM32F407芯片作為處理器,主控芯片綜合控制所有硬件資源,其內(nèi)核具有FPU單元以及DSP指令,以滿足物流無人機飛行控制的浮點計算。采用雙閉環(huán)PID控制姿態(tài)實現(xiàn)自穩(wěn)系統(tǒng)。STM32F407更新姿態(tài)數(shù)據(jù)的頻率為1 000 Hz,通過UART同步衛(wèi)星定位目標(biāo)初步位置。主控芯片內(nèi)部的USART以50 Hz幀率處理圖像信息,對二維碼圖像進(jìn)行預(yù)處理與校正。
表2 飛控系統(tǒng)硬件選型
設(shè)置TIM定時中斷間隔20 ms通過軟件IIC讀取MPU6050、AK8975、MS5611等傳感器的數(shù)據(jù)。IIC總線可以掛接不同地址的IIC設(shè)備,占用的資源少且通訊速率適合嵌入式系統(tǒng)。第一次檢測到二維碼的存在,需要對其進(jìn)行解碼匹配。若匹配成功,采用雙幀圖像測量距離,根據(jù)上述模型,讀取MS5611內(nèi)部的128 bit存儲器,換算成標(biāo)準(zhǔn)氣壓值得出距離地面的高度數(shù)值h,且最大分辨率為10 cm級別,測出目標(biāo)距離,計算目標(biāo)的三維坐標(biāo)(Δh,ψ,d)。
通過30 A無刷電調(diào)連接三相無刷電機,設(shè)置定時器TIM為四路PWM輸出模式。坐標(biāo)作為追蹤運動控制的輸入,系統(tǒng)通過算法控制PWM脈沖占空比來控制電調(diào),實現(xiàn)無人機旋翼的調(diào)速。為了保證穩(wěn)定性,提高效率,主控芯片利用特定圖形挖空算法檢測二維碼的定位標(biāo)志,在運動中實時追蹤計算坐標(biāo)。少量灰度值數(shù)量的閾值大于0.5屬于前景。計算平均100幀圖像處理的時間。最后進(jìn)入50 Hz的時間片輪轉(zhuǎn)調(diào)度主循環(huán)之中,檢測電池電量與遙控范圍。針對電量過低與遙控失效進(jìn)行自動返航設(shè)計保護(hù)。
5.2.1測試方案
定點投放精度測試。在無人機識別到二維碼時,機身相對于二維碼底邊的夾角為初始航向角,范圍在0~180°,按照角度范圍分別以小于90°和90°~180°進(jìn)行分組。無人機采用的攝像頭精度支持最大高度約5 m,根據(jù)相對二維碼的高度范圍分別以小于2 m、2~5 m進(jìn)行分組。由衛(wèi)星進(jìn)行粗范圍定位,設(shè)置初始半徑最大范圍為20 m,初始半徑分別以小于10 m和10~20 m進(jìn)行分組。采用的二維碼大小為48 cm×48 cm,每組進(jìn)行50次測試,計算最終降落點距離目標(biāo)的中心的平均誤差半徑。
5.2.2測試結(jié)果
定點投放精度測試結(jié)果如表3所示??梢钥闯?,在攝像頭識別精度范圍內(nèi)(即飛行器在高度5米內(nèi)),四旋翼無人機定點降落的平均誤差半徑最大不超過20 cm。因此,在充分考慮無人機結(jié)構(gòu)完整、機身良好和光照條件適宜的情況下,無人機精確定位降落準(zhǔn)確性很好。
表3 測試結(jié)果誤差表
本文針對物流無人機物資定點投放定位精度不高的問題,提出一種基于二維碼圖像識別的無人機精準(zhǔn)投放方法。該方法采用挖空算法處理二維碼圖像,結(jié)合光學(xué)測距技術(shù)通過測量目標(biāo)二維碼的距離進(jìn)行精準(zhǔn)定位,實現(xiàn)無人機的精準(zhǔn)投放。該方法不受光線約束、物流成本低,平均每幀圖像處理時間為0.017 ms。實驗結(jié)果表明無人機定點降落的平均誤差半徑最大不超過20 cm,可以應(yīng)用于無人機精確定位降落投放物資。