郭聯(lián)金
(東莞職業(yè)技術(shù)學(xué)院 智能制造學(xué)院,廣東東莞 523808)
隨著生鮮電商的發(fā)展,研發(fā)果蔬智能化分揀包裝設(shè)備對(duì)促進(jìn)農(nóng)業(yè)現(xiàn)代化具有重要意義。傳統(tǒng)機(jī)械手在抓取物品時(shí)大多采用剛性?shī)A爪,自由度小,難以適應(yīng)形狀、尺寸和性狀不同的對(duì)象,易造成質(zhì)地柔軟的瓜果等農(nóng)產(chǎn)品表面損傷?,F(xiàn)有機(jī)械手在生產(chǎn)應(yīng)用中,往往只能按照預(yù)設(shè)的程序或者通過(guò)示教,重復(fù)執(zhí)行固定的運(yùn)動(dòng)與動(dòng)作,缺乏對(duì)工作環(huán)境的感知與應(yīng)變,無(wú)法人機(jī)協(xié)作。近年來(lái)新型軟體機(jī)械手因其驅(qū)動(dòng)簡(jiǎn)單、有無(wú)限自由度和可順應(yīng)被抓取對(duì)象的外形等獨(dú)特優(yōu)勢(shì),為果蔬拾取提供了新方法。現(xiàn)有柔性手爪存在結(jié)構(gòu)復(fù)雜或抓取效率不高、穩(wěn)定性不足等問(wèn)題[1],且普遍不具有感知能力,無(wú)法獲知抓取力度信息[2]。為此,本文提出一種基于人工智能的柔性抓取及分揀系統(tǒng),賦予機(jī)械手具有類人的聽(tīng)覺(jué)、視覺(jué)、觸覺(jué)感知能力和學(xué)習(xí)能力,以提高其智能化水平和環(huán)境適應(yīng)性。
為模擬人工分揀動(dòng)作,采用3軸連桿式輕型機(jī)械臂作為分揀機(jī)構(gòu)。該機(jī)械臂主要由底座、回轉(zhuǎn)主體、大臂、小臂及末端手爪組成(圖1)?;剞D(zhuǎn)主體、大臂關(guān)節(jié)和小臂關(guān)節(jié)各由1個(gè)步進(jìn)電機(jī)經(jīng)減速器傳動(dòng),并分別由3個(gè)限位開(kāi)關(guān)確定行程范圍及零點(diǎn)位置。旋轉(zhuǎn)體圍繞機(jī)身可進(jìn)行270 °旋轉(zhuǎn),大臂和小臂在連桿機(jī)構(gòu)帶動(dòng)下分別在90,130 °范圍內(nèi)做俯仰運(yùn)動(dòng),以帶動(dòng)手爪在不同高度及前后位置上執(zhí)行抓取任務(wù)。
圖1 分揀機(jī)械臂的結(jié)構(gòu)Fig.1 The structure of sorting manipulator
機(jī)械臂末端采用Fin Ray結(jié)構(gòu)柔性仿生手爪[3],其開(kāi)合由舵機(jī)驅(qū)動(dòng)。夾爪手指由高回彈硅膠材質(zhì)經(jīng)3D打印一體化成形,構(gòu)成“鰭形效應(yīng)”結(jié)構(gòu)(見(jiàn)圖2),具有良好柔性及自適應(yīng)性。
圖2 Fin Ray手指特性Fig.2 The feature of Fin Ray bionic finger
圖2所示,3個(gè)手指按中心抓取方式布置,結(jié)構(gòu)與裝配簡(jiǎn)單、重量輕、無(wú)間隙和摩擦。3個(gè)手指在舵機(jī)驅(qū)動(dòng)下向手爪中心靠攏,從物品的外周表面貼合、包裹式穩(wěn)定抓取,可避免剛性抓取對(duì)水果等表面脆弱物品的過(guò)壓損傷,對(duì)象適應(yīng)性強(qiáng)且驅(qū)動(dòng)效率高。
機(jī)械臂采用多連桿通過(guò)關(guān)節(jié)鉸接而成的單開(kāi)鏈串聯(lián)式結(jié)構(gòu)。通過(guò)機(jī)械臂運(yùn)動(dòng)學(xué)正逆解,分析其末端手爪在空間中的運(yùn)動(dòng)規(guī)律,以控制機(jī)械臂在不同位置點(diǎn)對(duì)目標(biāo)的精準(zhǔn)抓取。首先,采用D-H坐標(biāo)變換法,以齊次變換矩陣建立機(jī)械臂的運(yùn)動(dòng)學(xué)方程。根據(jù)機(jī)械臂的連桿參數(shù),即各連桿的長(zhǎng)度、距離、扭角、轉(zhuǎn)角大小及范圍,通過(guò)變換矩陣由關(guān)節(jié)變量求解手爪的位置。由此獲得機(jī)械臂的運(yùn)動(dòng)學(xué)正解[4]。然后,對(duì)機(jī)械臂運(yùn)動(dòng)學(xué)進(jìn)行反解,即由機(jī)械臂末端手爪的中心位置,求出各關(guān)節(jié)電機(jī)的轉(zhuǎn)角。在此,采用幾何法對(duì)機(jī)械臂運(yùn)動(dòng)學(xué)逆解。將三自由度關(guān)節(jié)式機(jī)械臂簡(jiǎn)化為平面機(jī)械臂[5],根據(jù)已知 3 根連桿的長(zhǎng)度 L1、L2、L3及手爪的空間坐標(biāo)P(x,y,z)求得3個(gè)關(guān)節(jié)電機(jī)的轉(zhuǎn)角θ1、θ2、θ3[6]:
由逆運(yùn)動(dòng)學(xué)將求解出多個(gè)解,結(jié)合機(jī)械臂的結(jié)構(gòu)限制、關(guān)節(jié)的運(yùn)動(dòng)范圍和運(yùn)動(dòng)軌跡,比較篩選出最優(yōu)解。由此可通過(guò)控制各電機(jī)轉(zhuǎn)角使機(jī)械臂末端手爪按照最優(yōu)路徑平滑地運(yùn)動(dòng)至目標(biāo)位置。
系統(tǒng)主要由單片機(jī)主控模塊、視覺(jué)模塊、語(yǔ)音模塊、壓力檢測(cè)模塊、機(jī)械臂運(yùn)動(dòng)模塊和機(jī)械爪舵機(jī)模塊組成(見(jiàn)圖3)。視覺(jué)模塊采用2套Maix Dock K210套件,分別以“眼在手旁”、“眼在手上”2種方式布置,在單片機(jī)主控模塊的指令下從遠(yuǎn)、近距離分別采集目標(biāo)圖像,運(yùn)行深度學(xué)習(xí)模型的計(jì)算,實(shí)現(xiàn)“粗→精”的目標(biāo)匹配與分類識(shí)別,并將識(shí)別結(jié)果與中心坐標(biāo)發(fā)送給單片機(jī)主控模塊。語(yǔ)音模塊以LD3320為核心,用于采集語(yǔ)音信息,并進(jìn)行語(yǔ)義識(shí)別。壓力檢測(cè)模塊采用柔性薄膜壓力傳感器檢測(cè)機(jī)械手指的抓取力,反饋至主控模塊,從而控制舵機(jī)轉(zhuǎn)角及手爪張角。機(jī)械臂運(yùn)動(dòng)模塊通過(guò)3路脈沖信號(hào)控制DM542步進(jìn)電機(jī)驅(qū)動(dòng)器,對(duì)應(yīng)驅(qū)動(dòng)機(jī)械臂的3個(gè)關(guān)節(jié)電機(jī)轉(zhuǎn)動(dòng),使機(jī)械臂以一定軌跡和速度運(yùn)動(dòng)、定位。機(jī)械爪舵機(jī)模塊接收主控單片機(jī)的PWM信號(hào)并驅(qū)動(dòng)柔性手爪舵機(jī),實(shí)現(xiàn)目標(biāo)物品的抓取。
圖3 系統(tǒng)的總體結(jié)構(gòu)Fig.3 The overall framework of the system
采用Arduino UNO主控板,以低功耗、高性能的8位單片機(jī)ATMEGA328P為主控制器[7]。該單片機(jī)具有32 kB的ROM,2 kB的RAM,13個(gè)數(shù)字口,7個(gè)模擬輸入口,1個(gè)硬件串口,6個(gè)PWM輸出口,2個(gè)硬件中斷口等外設(shè)[8]。在此,利用4路PWM信號(hào)輸出,驅(qū)動(dòng)3個(gè)步進(jìn)電機(jī)和1個(gè)舵機(jī),實(shí)現(xiàn)機(jī)械臂的運(yùn)動(dòng)控制。軟件設(shè)計(jì)使用C語(yǔ)言在免費(fèi)、開(kāi)源的Aduino IDE上編程,利用豐富的支持庫(kù),直接調(diào)用所需的庫(kù)函數(shù),加快應(yīng)用開(kāi)發(fā)。
采用MAIX Dock K210型開(kāi)發(fā)套件,其上搭載勘智K210系統(tǒng)級(jí)芯片,算力0.8 TOPS,具有RISC-V 64位雙核處理器,每個(gè)核心內(nèi)置獨(dú)立FPU,自帶卷積神經(jīng)網(wǎng)絡(luò)處理器KPU和攝像頭[9]。將已訓(xùn)練好的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型YOLOv2移植到K210,經(jīng)過(guò)KPU加速器的卷積、池化、批歸一化和激活運(yùn)算處理,可實(shí)現(xiàn)圖像實(shí)時(shí)采集與識(shí)別(見(jiàn)圖4)。軟件設(shè)計(jì)部分,在MaixPy IDE使用MicroPython語(yǔ)言編程,其API兼容Openmv,可直接調(diào)用封裝好的函數(shù),運(yùn)行神經(jīng)網(wǎng)絡(luò)模型。由于視覺(jué)模塊圖像實(shí)時(shí)采集的分辨率有限(224×224),采集遠(yuǎn)距離目標(biāo)時(shí)圖像不夠清晰,故采用2套視覺(jué)模塊,分別進(jìn)行遠(yuǎn)處目標(biāo)初次定位的“粗檢測(cè)”與近處目標(biāo)再次確認(rèn)的“精檢測(cè)”,通過(guò)2次檢測(cè),提高目標(biāo)定位與識(shí)別的準(zhǔn)確度。
圖4 K210視覺(jué)模塊目標(biāo)識(shí)別的基本流程Fig.4 The basic process of target identification of K210 vision modu
模塊主要由STC11型單片機(jī)、LD3320語(yǔ)音識(shí)別芯片及1個(gè)MP3解碼芯片組成,通過(guò)串口與Arduino主控單片機(jī)進(jìn)行通信。LD3320 基于非特定人語(yǔ)音識(shí)別(SI-ASR)技術(shù)[10],無(wú)需外接輔助Flash、RAM,即可以實(shí)現(xiàn)語(yǔ)音識(shí)別、聲控及人機(jī)對(duì)話。芯片存儲(chǔ)了50多條預(yù)置指令,可以動(dòng)態(tài)編輯關(guān)鍵詞語(yǔ)列表,通過(guò)自定義喚醒詞和關(guān)鍵詞,使模塊工作在口令模式。為降低環(huán)境噪聲干擾,降低誤識(shí)別率,將易混淆的近音詞、擬聲詞等設(shè)置為“垃圾關(guān)鍵詞”[11],識(shí)別后不輸出。本文將2種喚醒詞、4種口令和4種識(shí)別的目標(biāo)名稱預(yù)存儲(chǔ)于芯片中。系統(tǒng)分揀對(duì)象蘋果、獼猴桃、橙子和梨分別以1,2,3,4進(jìn)行編碼。模塊通過(guò)麥克風(fēng)拾取口令信號(hào),對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行預(yù)處理、特征提取和語(yǔ)音識(shí)別。模塊先被喚醒,進(jìn)而對(duì)抓取口令中抓取目標(biāo)的名稱進(jìn)行拼音識(shí)別,并與預(yù)置的關(guān)鍵詞進(jìn)行匹配。當(dāng)匹配值大于設(shè)定閾值,則認(rèn)為匹配成功,模塊返回目標(biāo)代碼,并發(fā)送至ATMEGA328P單片機(jī)。
采用ZD10-100型柔性薄膜壓力傳感器作為力敏元件,張貼于Fin Ray仿生手指內(nèi)側(cè),用于檢測(cè)抓握力。該傳感器采用新型納米壓敏材料制作,耐彎折、靈敏度高、響應(yīng)快。其敏感區(qū)長(zhǎng)度85 mm,寬度10 mm。無(wú)壓力時(shí)傳感器阻值>10 MΩ,近似斷路;當(dāng)傳感器感知到外界壓力時(shí),其電阻值隨表面施加壓力的增大而減少,壓力響應(yīng)點(diǎn)低至200 N以下。為提高電壓測(cè)量分辨率,增大驅(qū)動(dòng)電流,測(cè)量電路采用由分壓和運(yùn)算放大器組成的電阻-電壓轉(zhuǎn)換模塊,將模擬電壓信號(hào)發(fā)送至主控單片機(jī)。
3.5.1 步進(jìn)驅(qū)動(dòng)模塊
使用DM542型步進(jìn)驅(qū)動(dòng)器控制2.8 A兩相混合式步進(jìn)電機(jī)。驅(qū)動(dòng)電壓為24 V DC,細(xì)分設(shè)置為2 000 P/r。3個(gè)步進(jìn)驅(qū)動(dòng)器的外部信號(hào)采用共陰極接法,其脈沖信號(hào)端分別與MEGA328P的脈沖輸出引腳連接。由主控單片機(jī)輸出脈沖控制步進(jìn)電機(jī)的轉(zhuǎn)角位置及轉(zhuǎn)速。
3.5.2 舵機(jī)控制模塊
舵機(jī)的信號(hào)口與單片機(jī)MEGA328P的PWM輸出引腳相連。單片機(jī)輸出占空比可變的方波脈沖以控制手爪舵機(jī)的轉(zhuǎn)角,從而使手爪以不同張角抓握大小不同的物品。
在Arduino IDE環(huán)境中使用C語(yǔ)言對(duì)單片機(jī)MEGA328P進(jìn)行編程,實(shí)現(xiàn)主控模塊與語(yǔ)音識(shí)別模塊之間的串口通信、機(jī)械臂的運(yùn)動(dòng)控制,以及與視覺(jué)模塊的串口通信。在MaixPy IDE開(kāi)發(fā)環(huán)境中采用MicroPython語(yǔ)言進(jìn)行編程,完成圖像采集、基于卷積神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)分類[12]、LCD驅(qū)動(dòng)與顯示等任務(wù)。利用MaixPy與Openmv兼容的API,調(diào)用所需的圖像處理函數(shù)進(jìn)行預(yù)處理等操作。
為實(shí)現(xiàn)目標(biāo)的智能檢測(cè)與識(shí)別,在K210單片機(jī)上部署YOLOv2模型[13]。使用視覺(jué)模塊的攝像頭采集每一類目標(biāo)的樣板圖250張;進(jìn)行數(shù)據(jù)集擴(kuò)張,通過(guò)平移、旋轉(zhuǎn)、模糊和加噪等處理方式擴(kuò)大樣本至每類1 000張;采用labelImg工具對(duì)增強(qiáng)后的圖片進(jìn)行ROI標(biāo)注;使用Mx-yolov3軟件進(jìn)行環(huán)境配置與模型訓(xùn)練,經(jīng)36次迭代(loss為0.002)獲得訓(xùn)練好的tflite文件,并利用模型轉(zhuǎn)換工具ncccase0.1轉(zhuǎn)換得到kmodel文件;將模型加載到K210,采用測(cè)試集運(yùn)行目標(biāo)識(shí)別,并對(duì)錨框中心進(jìn)行標(biāo)識(shí)。
分揀系統(tǒng)程序按功能模塊設(shè)計(jì),主要包括語(yǔ)音識(shí)別模塊、eye-to-hand視覺(jué)模塊1、eye-inhand視覺(jué)模塊2、運(yùn)動(dòng)控制模塊、壓力檢測(cè)與轉(zhuǎn)換模塊。其中,視覺(jué)識(shí)別采用“粗檢測(cè)”+“精檢測(cè)”的2次檢測(cè)方法。視覺(jué)模塊1的攝像頭固定于機(jī)械臂一側(cè)的支架上方,執(zhí)行目標(biāo)初次識(shí)別與中心定位,輸出圖像坐標(biāo)并轉(zhuǎn)換為世界坐標(biāo)。視覺(jué)模塊2安裝于小臂上,近距離采集目標(biāo)的清晰圖像,與第1次的檢測(cè)結(jié)果進(jìn)行比較,確認(rèn)目標(biāo)并計(jì)算精確位置后執(zhí)行抓取任務(wù)。運(yùn)動(dòng)控制模塊根據(jù)目標(biāo)的空間位置驅(qū)動(dòng)手爪運(yùn)動(dòng)至抓取位置。程序設(shè)計(jì)流程如圖5所示。
圖5 自動(dòng)分揀程序的流程圖Fig.5 Flow chart of automatic sorting procedure
在日光燈或自然光環(huán)境下,將蘋果、獼猴桃、橙子和梨等水果放置于不同背景中進(jìn)行分揀測(cè)試。分揀系統(tǒng)接收語(yǔ)音命令并識(shí)別出目標(biāo)關(guān)鍵詞,通過(guò)人機(jī)交互對(duì)分揀目標(biāo)進(jìn)行確認(rèn),運(yùn)行自動(dòng)識(shí)別分類與分揀程序,通過(guò)視覺(jué)引導(dǎo)控制機(jī)械臂執(zhí)行目標(biāo)抓取、轉(zhuǎn)運(yùn)與分揀(見(jiàn)圖6)。
圖6 系統(tǒng)自動(dòng)分揀測(cè)試Fig.6 Automatic sorting test of the system
(1)定位精度。目標(biāo)重復(fù)定位精度為0.3 mm。該誤差主要由坐標(biāo)轉(zhuǎn)換(圖像平面—運(yùn)動(dòng)空間轉(zhuǎn)換)的計(jì)算精度、目標(biāo)圖像處理的圓心位置計(jì)算精度,以及步進(jìn)電機(jī)脈沖丟失、機(jī)械件安裝配合偏差等原因?qū)е隆?/p>
(2)分揀準(zhǔn)確率。從表1的測(cè)試結(jié)果可見(jiàn),分揀系統(tǒng)對(duì)4類目標(biāo)物的識(shí)別率較高(≥86%),且類間存在一定差異。其中,對(duì)梨的識(shí)別率最高,對(duì)獼猴桃的識(shí)別率最低。分揀的平均正確率為92%,驗(yàn)證系統(tǒng)能有效實(shí)現(xiàn)分揀任務(wù)。
表1 自動(dòng)分揀的測(cè)試結(jié)果Tab.1 Test results of automatic sorting
機(jī)械臂的運(yùn)動(dòng)及定位誤差較小,系統(tǒng)分揀的準(zhǔn)確率主要受語(yǔ)音識(shí)別和視覺(jué)識(shí)別的影響。因語(yǔ)音識(shí)別采用人機(jī)交互方式對(duì)指令進(jìn)行糾正和確認(rèn),不存在口令識(shí)別錯(cuò)誤,故系統(tǒng)的分揀準(zhǔn)確率主要取決于視覺(jué)識(shí)別質(zhì)量。經(jīng)多次試驗(yàn),發(fā)現(xiàn)視覺(jué)識(shí)別的效果與水果的尺寸大小和表面顏色的分布特征有關(guān)。由于采用2次視覺(jué)檢測(cè),第1次的誤檢和漏檢會(huì)直接使得第2次檢測(cè)的圖像難以精確匹配和定位(圖7)。在第1次檢測(cè)時(shí),攝像頭高度離目標(biāo)物較遠(yuǎn),視野相對(duì)較大,圖像清晰度不高,故尺寸小的獼猴桃容易在“粗檢測(cè)”中出現(xiàn)誤檢或漏檢,而尺寸較大的梨則未出現(xiàn)誤檢。此外,梨和橙子的表面光滑,且都為均勻的純色,特征明顯;而蘋果的表面含紅、綠2種顏色及過(guò)渡色;獼猴桃表面則并非光滑純綠色,而是綠色中分布著點(diǎn)狀褐色,且?guī)珷罴?xì)點(diǎn)、雜點(diǎn)。相比于梨和橙子,蘋果和獼猴桃的特征更為復(fù)雜,故檢出率不如前2者。
圖7 視覺(jué)模塊的檢測(cè)結(jié)果Fig.7 Detection results of the visual module
(3)壓力檢測(cè)與反饋。圖8展示機(jī)械手臂連續(xù)3次抓取和松放目標(biāo)對(duì)象(蘋果)過(guò)程中手指的壓力變化。機(jī)械手臂抓取物體時(shí),若傳感器輸出的壓力<程序的設(shè)定閾值(1 300 N),手爪舵機(jī)轉(zhuǎn)動(dòng)使張角減少,執(zhí)行抓取動(dòng)作;當(dāng)壓力≥設(shè)定值,此時(shí)手爪舵機(jī)停止運(yùn)動(dòng),表明目標(biāo)已被手指抓取,且承受的抓握力已達(dá)預(yù)設(shè)值。當(dāng)物體被抓取并轉(zhuǎn)運(yùn)至目的地,舵機(jī)張角增大,手爪張開(kāi),物品與手指脫離,手指的抓握力減少至400 N以下。
圖8 壓力傳感器的輸出信號(hào)Fig.8 The output signal of pressure sensor
(4)分揀效率。系統(tǒng)從捕獲語(yǔ)音→識(shí)別→抓取→放下目標(biāo),完成1次分揀的周期約4.5 s,手爪張合的最高頻率可達(dá)96次/min,抓取最大負(fù)載為0.6 kg。工作效率較高,適于流水線上輕質(zhì)物品的分揀。
為適應(yīng)瓜果等農(nóng)產(chǎn)品大小規(guī)格不一、表面易損傷等特點(diǎn),設(shè)計(jì)融合聽(tīng)覺(jué)、視覺(jué)和觸覺(jué)多種感知能力的智能分揀系統(tǒng)。通過(guò)非特定人語(yǔ)音口令和視覺(jué)引導(dǎo),控制機(jī)械臂的自主運(yùn)動(dòng)和定位。使用基于深度學(xué)習(xí)的圖像識(shí)別技術(shù),將目標(biāo)檢測(cè)算法模型YOLOv2部署到K210中,實(shí)現(xiàn)目標(biāo)檢測(cè)與分類。測(cè)試結(jié)果表明,分揀系統(tǒng)具有較高的語(yǔ)音識(shí)別與視覺(jué)檢測(cè)能力,能高效完成分揀作業(yè)。所設(shè)計(jì)的機(jī)械臂采用柔性仿生手指,且?guī)в袎毫z測(cè)與反饋,廣泛適應(yīng)多種形狀、性質(zhì)物品的抓取。通過(guò)學(xué)習(xí)訓(xùn)練,分揀系統(tǒng)可拓展應(yīng)用于“混流”自動(dòng)線上,代替人力完成農(nóng)產(chǎn)品、食品和工藝品等特殊作業(yè)對(duì)象的分揀及裝箱任務(wù)。