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