李志明
(南京鐵道職業(yè)技術(shù)學(xué)院,江蘇南京,210031)
近年來,我國深入實施黨中央國務(wù)院提出的“藏糧于地,藏糧于技”農(nóng)業(yè)戰(zhàn)略,加快建設(shè)農(nóng)業(yè)強國,推進(jìn)農(nóng)業(yè)科技現(xiàn)代化。農(nóng)業(yè)生產(chǎn)在數(shù)字化、智能化進(jìn)行了全面升級改造。各種農(nóng)業(yè)機器人取代傳統(tǒng)農(nóng)業(yè)勞作,提高了生產(chǎn)效率。在水果采摘領(lǐng)域,也有學(xué)者、工程師不斷進(jìn)行研究開發(fā)各種水果采摘機器人。
許子康老師在論文提出了基于STM32 的六足農(nóng)業(yè)仿生機器人研究[2],主要為了解決農(nóng)業(yè)生產(chǎn)中噴霧,施肥,收割的農(nóng)業(yè)勞作,用仿生的方式解決機器人在勞作區(qū)域穩(wěn)定行走的問題。孫永芳老師提出GPS 位置定位功能為保證實時獲取農(nóng)業(yè)采摘機器人的具體位置,用超聲波控制機械抓手與水果距離,實現(xiàn)水果采摘[1]。但是超聲波在實際應(yīng)用中會受到各種干擾,比如樹葉、樹枝和水果本身的反射、折射等等,給距離估算帶了不可忽略的誤差。閔小翠老師提出[3],為提升農(nóng)業(yè)采摘機器人運動協(xié)作控制性能,降低機器人碰撞概率,利用D-H 法優(yōu)化設(shè)計機器人運動協(xié)作控制系統(tǒng)防止多機器人協(xié)同工作時碰撞問題,這里主要解決了多機器人同時勞作時行走問題??梢钥吹侥壳皩μ岣咚烧实难芯坎皇翘?,并且水果采摘機器人的成功采摘率還都有待提高。
本設(shè)計為基于STM32 單片機的水果采摘機器人設(shè)計。機器人系統(tǒng)通過使用矩陣鍵盤或者遠(yuǎn)程發(fā)出控制指令,用圖像識別方法確定水果位置,通過控制電機操控機械手對目標(biāo)水果進(jìn)行手動或者自動采摘。
本系統(tǒng)機械機構(gòu)如圖1 所示。水果采摘機器人采用STM32 單片機控制機械臂在三條直線導(dǎo)軌上進(jìn)行前后、左右和上下運動,完成三維自由采摘水果。X 軸為左右移動導(dǎo)軌,Y 軸是上下移動的導(dǎo)軌,Z 軸為前后運動的導(dǎo)軌。每一條導(dǎo)軌都采用帶編碼器的直流減速電機驅(qū)動,在導(dǎo)軌兩端部同樣裝有一個防碰撞的行程開關(guān)。
圖1 水果采摘機器人機械結(jié)構(gòu)
圖2 水果采摘機器人系統(tǒng)整體設(shè)計
Z 軸安裝的機械抓手采用舵機作為驅(qū)動源,機械手內(nèi)側(cè)安裝了一個壓力傳感器,測量抓取果實的力量。機器抓手的下部裝有一個攝像頭,系統(tǒng)讀取攝像頭數(shù)據(jù)進(jìn)行圖像分析,判斷果實的顏色和位置,從而驅(qū)動并控制機械抓手采摘水果。
系統(tǒng)還安裝了桿式電位器控制板,通過電線與控制器相連,實現(xiàn)手動控制采摘水果。
本系統(tǒng)主要由微處理器(STM32F103ZET6)控制傳感模塊、輸入輸出模塊、驅(qū)動模塊和無線模塊,整個系統(tǒng)由電源模塊提供穩(wěn)定的直流電。
電源模塊主要完成220V 交流電轉(zhuǎn)化為穩(wěn)定的12V,5V和3.3V 的直流電。
輸入輸出模塊主要由鍵盤、顯示器和語音播報模塊組成。系統(tǒng)可以通過鍵盤輸入控制指令,設(shè)置水果采摘機器人的采摘范圍和工作模式。手動采摘模式下,通過手動控制搖桿驅(qū)動機械臂運動,采摘水果。自動采摘模式下,系統(tǒng)通過掃描設(shè)定采摘范圍,自動識別水果顏色和形狀大小,定位水果實際位置,實現(xiàn)設(shè)備自動采摘水果,如果采摘成功,則可以語音播報當(dāng)前采摘水果的個數(shù)。
驅(qū)動模塊包括直流電機和舵機以及相關(guān)電路,主要是完成機械臂的三維運動和機械手的抓取動作。三臺直流減速電機驅(qū)動分別驅(qū)動機械臂在X 軸,Y 軸和Z 軸的導(dǎo)軌進(jìn)行運動。機械臂的前端安裝機械抓手。系統(tǒng)通過舵機控制機械臂,可以進(jìn)行0~180 度角度旋轉(zhuǎn),方便準(zhǔn)確抓取水果。
傳感模塊主要包括遙感電位器、電容式位移傳感器和OV7725 攝像頭。在手動采摘模式下,微控制器讀取遙感電位器的電位,通過電線與控制器相連,實現(xiàn)手動控制遙感采摘水果。在自動采摘模式下,微控制器實時讀取電容式位移傳感器獲取機械臂的實時位置,并通過OV7725 攝像頭圖像處理模塊分析獲取目標(biāo)水果的位置信息,調(diào)整機械臂的位置。當(dāng)機械臂到達(dá)合適的位置時,機械抓手在Z 軸移動,并通過壓力傳感器反饋機械抓手抓取水果的抓力,保證既能順利采摘水果,又能保證水果不被機械手的抓力破壞。
無線模塊主要是實時系統(tǒng)遠(yuǎn)程控制,系統(tǒng)能在遠(yuǎn)程發(fā)送控制指令,控制水果采摘機器人的工作。由于篇幅有限,本文主要介紹前三個模塊。
(1)形狀識別仿真
因為在實際的水果采摘中,水果和樹葉相差甚大,只需要基本判斷圓形或者方形即可。例如,蘋果,李子,雪梨,石榴等等基本是圓形,還有一些是長橢圓形比如香蕉。在本仿真中,我們主要針對整塊形狀的仿真,特別是針對圓形進(jìn)行仿真識別。
第一步,讀取彩 圖像。仿真配置了一個有許多不規(guī)則物體的圖片,模擬實際環(huán)境的樹枝,樹葉等等,增加仿真的真實性。圖3 是讀取的形狀原圖。
圖3 圖像形狀識別原圖
第二步,將讀取彩 圖像轉(zhuǎn)化為二值圖像。針對圖像中可能有不同形狀的目標(biāo)物體(水果,葉子,樹枝,蟲子),需要進(jìn)行目標(biāo)篩選。系統(tǒng)先通過形狀小大判斷,過濾掉我們不需要的雜質(zhì)物體,極大地提高了圖像識別的效率。圖4 是去掉噪聲之后的二值圖。
圖4 圖像去噪后的二值圖
第三步,計算并識別目標(biāo)。首先進(jìn)行孔洞填充并進(jìn) 白色描邊,最后通過函數(shù)bwboundaries 確定圖像邊界。圖像邊界確定后,求取圖形的面積和周長等關(guān)鍵數(shù)據(jù)。
確定圓形 標(biāo),求取圖形周長,圓,積,并計算根據(jù)公式計算形狀 Y,公式如下:
其中:S 為面積,L 為周長。
標(biāo)準(zhǔn)圓的值是1,在本系統(tǒng)中設(shè)置閾值為0.85,即形狀Y 于這個閾值的就是我們所需要的 標(biāo)物體。
最后一步,可以根據(jù)實際水果的形狀而調(diào)整。首先調(diào)整閾值計算,幾何中心的計算,然后就是閾值的大小。判定為水果后,需要根據(jù)幾何中心找出一個合適的位置確定成熟的水果的位置。顯示如圖5 所示。
圖5 圖像形狀識別結(jié)果
(2)顏色識別仿真
因為正常成熟水果為紅色和黃色,為了能準(zhǔn)確獲取成熟水果,我們對紅色,黃色進(jìn)行顏色識別仿真,以便更好地在系統(tǒng)中實現(xiàn)水果采摘。圖6 是識別原圖,紫色和灰色是干擾形狀。
圖6 圖像顏色識別原圖
識別過程如下:
第一步,計算每個區(qū)域Lab 顏色空間中的樣本顏色。
在圖像中可以看到五種主要顏色:背景色、紅色、紫色、黃色和灰色。眼睛能在視覺上輕松區(qū)分這些顏色,但是對于計算機系統(tǒng)而言就是顏色數(shù)據(jù)。采用Lab 色彩空間能夠量化這些視覺差異,因此先將顏色空間轉(zhuǎn)換為Lab 顏色空間,
本文的算法是為每種顏色選擇一個小樣本區(qū)域,并在Lab 空間中計算每個樣本區(qū)域的平均顏色。您將使用這些顏色標(biāo)記對每個像素進(jìn)行分類。
第二步,使用最近鄰規(guī)則對每個像素進(jìn)行分類。
每個顏色標(biāo)記現(xiàn)在都有一個a 值,b 值。在本圖像中,可以通過計算像素與每個顏色標(biāo)記之間的歐幾里德距離L,來對圖像中的每個像素進(jìn)行分類。最小距離即該像素最匹配的顏色。例如,如果像素與紅色標(biāo)記之間的距離最小,則該像素將被標(biāo)記為紅色像素。因此不管是什么顏色,根據(jù)顏色標(biāo)計之間的歐幾里德距離,所有的顏色會都?xì)w類到距離最小的標(biāo)記顏色中,消除不固定的自然界中顏色多樣性。歐幾里德距離公式如下:
其中:a,b 是固定分類顏色的Lab 顏色空間的a 值和b 值;color.a,color.b 是獲取當(dāng)前圖像像素的a 值和b 值。
創(chuàng)建一個包含顏色標(biāo)簽的數(shù)組,即 0=背景、1=紅色、2=紫色、3=灰色和 4=黃色。
第三步,顯示最近鄰分類的結(jié)果。
標(biāo)簽矩陣包含設(shè)定圖像中每個像素的顏色標(biāo)簽。使用標(biāo)簽矩陣按顏色分隔原始設(shè)定圖像中的對象。圖7 就是把紅色(圖7(a)),黃色(圖7(c))分離出來的結(jié)果。圖7(d)是原圖的二值圖,圖7(b)是除了黃色,紅色物體之外的其他物體圖。
圖7 圖像顏色識別
這樣分離對后續(xù)識別非常有幫助。比如,如果是紅色成熟水果,則可以用紅色的Lab 顏色空間的a 值和b 值進(jìn)行顏色緊鄰分類,分類后則系統(tǒng)只保留了紅色的形狀,其余形狀都已經(jīng)過濾,這給形狀識別帶來便利。
如圖7 所示,圖7(d)是原圖的二值圖像,如果本次采摘水果是紅色蘋果,則可以采用圖7(a)的分離結(jié)果進(jìn)行形狀識別,減少了非常多的干擾項,效率大大提高。如果本次采摘水果是黃色芒果,則可以采用圖7(c)的分離結(jié)果進(jìn)行形狀識別,效率和準(zhǔn)確率大大提高。
系統(tǒng)軟件設(shè)計移植了Matlab 圖像識別的算法,并實現(xiàn)水果采摘機器人的智能化設(shè)計。
(1)首先主程序的主要功能是循環(huán)按鍵掃描根據(jù)不同按鍵值讀取進(jìn)入不同子程序繼續(xù)執(zhí)行掃描;
(2)如果按鍵為1,則進(jìn)入?yún)^(qū)域設(shè)定功能,完成設(shè)定后繼續(xù)進(jìn)行按鍵掃描;
(3)如果按鍵為2,則進(jìn)入手動采摘功能。通過手工控制遙桿,單片機通過讀取電容位移傳感器和壓力傳感器數(shù)據(jù)實現(xiàn)與遙桿實現(xiàn)聯(lián)動。輸出PWM 信號驅(qū)動直流電機和舵機控制機械抓手實現(xiàn)手動采摘水果。
(4)如果按鍵為3,則進(jìn)入位置控制功能。通過電容位移傳感器實時獲取機械抓手位置,并通過PWM 輸出驅(qū)動直流電機,配合鍵盤輸入信息完成機械抓手位置設(shè)定和調(diào)整。
(5)如果按鍵為4,則進(jìn)入自動采摘功能。系統(tǒng)在設(shè)定區(qū)域進(jìn)行圖像掃描,通過攝像頭模塊采集當(dāng)前圖像數(shù)據(jù),通過圖像識別算法分析是否遇到水果以及確定水果位置。如果沒有遇到水果則繼續(xù)掃描,直到遇到水果或者掃描完整個設(shè)定區(qū)域為止。
(6)如果掃描到水果,則利用電容傳感器實時獲取當(dāng)前機械抓手位置,輸出PWM 信號驅(qū)動直流電機控制機械手位置、舵機轉(zhuǎn)動控制機械抓手。系統(tǒng)實時獲取機械手的壓力傳感器數(shù)據(jù),調(diào)整機械手抓力大小,準(zhǔn)確無傷地實現(xiàn)水果采摘并放到系統(tǒng)指定位置。
(7)系統(tǒng)的所有控制也可以通過無線模塊接收遠(yuǎn)程指令并控制。系統(tǒng)總體工作流程所圖8 所示。
圖8 系統(tǒng)流程圖
本系統(tǒng)在實驗室環(huán)境下,在位置數(shù)據(jù)測試調(diào)整完畢后,進(jìn)行了水果采摘測試實驗。實驗數(shù)據(jù)表明,系統(tǒng)能根據(jù)圖像采集數(shù)據(jù)進(jìn)行分析并確定水果實際位置,驅(qū)動電機控制機械抓手順利完成水果采摘實驗。系統(tǒng)能有效區(qū)分紅,黃,綠三種顏色的水果,并在實驗室模擬條件下,根據(jù)設(shè)定數(shù)據(jù)準(zhǔn)確采摘指定顏色的水果,很好地完成了水果采摘任務(wù)。采摘實驗如表1 所示。易采壞成熟的水果,這樣達(dá)不到替代人工采摘的設(shè)計初衷。另外,在實驗室模擬條件下不能完全模擬在農(nóng)場中實際采摘時的噪聲,因此圖像識別算法還要在實際農(nóng)場采摘中優(yōu)化和改進(jìn)。
表1 水果采摘成功率