王焱清,湯旸,楊光友
(1. 湖北工業(yè)大學(xué)農(nóng)機(jī)工程研究設(shè)計(jì)院,武漢市,430068; 2. 湖北省農(nóng)機(jī)裝備智能化工程技術(shù)研究中心,武漢市,430068)
現(xiàn)階段我國(guó)的柑橘采摘主要還是依靠人工,人工采摘耗時(shí)耗力、效率低。機(jī)器人代替人工采摘是未來柑橘采摘的發(fā)展方向,是促進(jìn)采摘作業(yè)機(jī)械化、自動(dòng)化和智能化水平的必由之路。在采摘機(jī)器人硬件平臺(tái)的基礎(chǔ)上,結(jié)合控制系統(tǒng)實(shí)現(xiàn)各類果蔬采摘作業(yè)。采摘機(jī)器人控制系統(tǒng)包括視覺模塊、機(jī)械臂控制模塊、末端執(zhí)行器控制模塊等,因此設(shè)計(jì)穩(wěn)定、高效的控制系統(tǒng)是關(guān)鍵環(huán)節(jié)[1-16],如熊俊濤等[17]以多類型采摘機(jī)器人平臺(tái)為基礎(chǔ),在Window XP開發(fā)環(huán)境下,采用Matlab等編程工具,通過對(duì)RSR232通信總線、運(yùn)動(dòng)控制板以及位控板等進(jìn)行開發(fā),設(shè)計(jì)了機(jī)器人控制系統(tǒng),包括水果圖像信息采集系統(tǒng)、主控制器、運(yùn)動(dòng)控制系統(tǒng);劉靜等[18]基于柑橘類水果采摘機(jī)器人平臺(tái),采用Micopython、keil5編程軟件,Python、C編程語(yǔ)言,通過對(duì)OpenMV機(jī)器視覺模塊進(jìn)行二次開發(fā),同時(shí)編寫單片機(jī)控制程序,設(shè)計(jì)了包括視覺識(shí)別系統(tǒng)、末端執(zhí)行器控制、機(jī)械臂控制、移動(dòng)平臺(tái)控制和升降裝置控制等在內(nèi)的采摘機(jī)器人控制系統(tǒng)。本文面向機(jī)器人柑橘采摘,基于由上位機(jī)、深度相機(jī)、機(jī)械臂和柔性手爪等硬件設(shè)備組成的采摘機(jī)器人平臺(tái),研究了該平臺(tái)控制系統(tǒng)的設(shè)計(jì),包括視覺識(shí)別定位程序模塊、柔性手爪動(dòng)作控制程序模塊、機(jī)械臂運(yùn)動(dòng)控制程序模塊以及采摘控制程序模塊的程序設(shè)計(jì)。
采摘機(jī)器人硬件平臺(tái)如圖1所示。

圖1 采摘機(jī)器人硬件平臺(tái)Fig. 1 Picking robot hardware platform
上位機(jī)為搭載Windows10操作系統(tǒng)的筆記本電腦,主要負(fù)責(zé)運(yùn)行控制系統(tǒng)主體程序,包括獲取、處理平臺(tái)數(shù)據(jù)和控制平臺(tái)設(shè)備。深度相機(jī)為RealSense Camera系列的R200型號(hào)深度相機(jī),主要負(fù)責(zé)提供場(chǎng)景物體實(shí)時(shí)的圖像數(shù)據(jù)和包含在深度圖像數(shù)據(jù)中的距離信息。由于相機(jī)的最小深度測(cè)量距離為0.5 m,因此采用“眼在手外”的方式,利用支架將相機(jī)固定在機(jī)械臂旁,同時(shí)面向正前方。機(jī)械臂為VS-6556型號(hào)的垂直多關(guān)節(jié)工業(yè)用機(jī)械臂,主要負(fù)責(zé)帶動(dòng)柔性手爪到達(dá)指定位置并配合其完成相應(yīng)動(dòng)作,其配備有RC7M型控制器。三指柔性手爪主要負(fù)責(zé)抓取,其具有能夠彈性形變、表面粗糙、手指間距可調(diào)等特性,能夠有效降低抓取柑橘造成的損傷,使抓取更加牢固,提高手爪的定位容錯(cuò)能力,其配備的控制器以Arduino UNO為控制核心,采用氣壓驅(qū)動(dòng)方式控制手爪的抓取動(dòng)作。
采摘控制系統(tǒng)的程序框架如圖2所示。

圖2 采摘控制系統(tǒng)程序框架Fig. 2 Picking control system program framework
工作流程如圖3所示。

圖3 采摘控制系統(tǒng)程序工作流程圖Fig. 3 Workflow chart of picking control system program
工作原理是通過視覺識(shí)別定位模塊控制深度相機(jī)采集柑橘圖像數(shù)據(jù),并結(jié)合算法對(duì)柑橘進(jìn)行識(shí)別和定位,獲取柑橘的空間位置信息,再通過機(jī)械臂運(yùn)動(dòng)控制模塊、柔性手爪動(dòng)作控制模塊以及采摘控制模塊,確定柑橘采摘點(diǎn)的位置信息,確定由機(jī)械臂和柔性手爪組成的機(jī)械手的采摘姿態(tài),規(guī)劃采摘路徑,并控制機(jī)械手沿著指定軌跡運(yùn)動(dòng),執(zhí)行柑橘抓取和果梗分離動(dòng)作,最終將柑橘放置到收集點(diǎn)。
在Windows10開發(fā)環(huán)境下,采用Visual Studio 2015、PyCharm和Arduino IDE編程工具,C++和Python編程語(yǔ)言,借助相應(yīng)的軟件開發(fā)工具包、函數(shù)庫(kù),設(shè)計(jì)控制系統(tǒng)程序。根據(jù)其工作原理、流程的需要,為控制系統(tǒng)設(shè)計(jì)了視覺識(shí)別定位模塊、機(jī)械臂運(yùn)動(dòng)控制模塊、柔性手爪動(dòng)作控制模塊,用于控制深度相機(jī)、機(jī)械臂、柔性手爪等硬件設(shè)備。同時(shí)設(shè)計(jì)了采摘控制模塊,用于實(shí)現(xiàn)需要視覺、機(jī)械臂與柔性手爪之間相互配合的機(jī)器人自主采摘功能和一些特定的采摘輔助功能,使采摘機(jī)器人能夠更好地完成柑橘采摘作業(yè)。
視覺識(shí)別定位模塊的具體工作流程如圖4所示。

圖4 視覺識(shí)別定位模塊的工作流程圖Fig. 4 Workflow chart of visual identification and positioning module
根據(jù)工作流程的需要,在視覺識(shí)別定位模塊中設(shè)計(jì)了圖像數(shù)據(jù)采集、視覺識(shí)別、視覺定位功能模塊,用于柑橘的識(shí)別定位,獲取柑橘的位置信息。程序設(shè)計(jì)采用Intel librealsense軟件開發(fā)工具包提供的編程接口rs命名空間中的類函數(shù)和OpenCV計(jì)算機(jī)視覺庫(kù)的圖像處理函數(shù),對(duì)R200相機(jī)進(jìn)行二次開發(fā),同時(shí)采用Python中TensorFlow-GPU、Keras深度學(xué)習(xí)框架的函數(shù)庫(kù)。
2.1.1 圖像采集功能
上位機(jī)通過圖像采集功能函數(shù)CamPicData()啟動(dòng)相機(jī),獲取實(shí)時(shí)的彩色RGB圖像和深度圖像數(shù)據(jù),便于后續(xù)圖像識(shí)別和定位。
其中CamPicData()會(huì)調(diào)用rs的類函數(shù)和OpenCV的圖像處理函數(shù),分別用于功能實(shí)現(xiàn)過程中的相機(jī)操作和圖像處理。
2.1.2 視覺識(shí)別功能
上位機(jī)通過視覺識(shí)別功能函數(shù)PicDetect()對(duì)采集到的彩色圖像進(jìn)行柑橘識(shí)別,用于后續(xù)的柑橘定位。
其中柑橘識(shí)別所采用的是基于改進(jìn)YOLOv3-tiny[19]輕量化深度卷積網(wǎng)絡(luò)模型的識(shí)別方法,該模型在YOLOv3-tiny深度卷積網(wǎng)絡(luò)模型的基礎(chǔ)上,采用MobileNetv3-Small[20]網(wǎng)絡(luò)替換主干特征提取網(wǎng)絡(luò),使模型更加輕量化,提高識(shí)別速度。
在MobileNetv3-Small中加入新的殘差結(jié)構(gòu),使主干網(wǎng)絡(luò)能夠更好地保留之前提取出的特征信息,減少特征信息的損失,提升模型對(duì)特征的學(xué)習(xí)能力,提高模型的識(shí)別精度。
在加強(qiáng)特征提取網(wǎng)絡(luò)中加入簡(jiǎn)化的空間金字塔池化SPP(Spatial Pyramid Pooling)[21]網(wǎng)絡(luò)、深度可分離卷積層集、兩個(gè)尺度層之間的下采樣層以及替換hard-Swish激活函數(shù),提升模型提取特征信息的能力,減少特征信息的損失,使模型能夠充分學(xué)習(xí)特征信息,進(jìn)一步提高模型的識(shí)別精度。
采用DIOU(Distance Intersection over Union)[22]損失函數(shù)改進(jìn)損失函數(shù),進(jìn)一步提高模型的識(shí)別定位精度。
通過1 144張柑橘圖像數(shù)據(jù)集的訓(xùn)練、測(cè)試,改進(jìn)的YOLOv3-tiny網(wǎng)絡(luò)模型平均識(shí)別精度mAP、F1值分別達(dá)到了96.52%、0.92,平均識(shí)別單幅圖像所耗時(shí)間、模型權(quán)重大小僅為47 ms、16.9 MB。
由于功能實(shí)現(xiàn)過程中YOLOv3-tiny網(wǎng)絡(luò)模型的搭建和運(yùn)行需要借助Python中TensorFlow-GPU、Keras深度學(xué)習(xí)框架的函數(shù),因此PicDetect()會(huì)調(diào)用Python設(shè)計(jì)編寫的Detect()識(shí)別程序。
2.1.3 視覺定位功能
上位機(jī)通過視覺定位功能函數(shù)Positioning()對(duì)圖像中識(shí)別到的柑橘進(jìn)行定位,獲取其相機(jī)坐標(biāo)系下的空間位置坐標(biāo)。
圖像采集、視覺識(shí)別、視覺定位功能模塊的實(shí)現(xiàn)過程如圖5所示。

(a) 圖像采集功能

(b) 視覺識(shí)別功能

(c) 視覺定位功能圖5 視覺功能模塊的實(shí)現(xiàn)過程Fig. 5 Implementation of visual function module
機(jī)械手控制模塊的具體工作流程如圖6所示。

(a) 機(jī)械臂控制模塊

(b) 手爪控制模塊圖6 機(jī)械手控制模塊的工作流程圖Fig. 6 Workflow chart of robot arm control module
2.2.1 柔性手爪動(dòng)作控制模塊程序設(shè)計(jì)
根據(jù)工作流程的需要,在柔性手爪動(dòng)作控制模塊中設(shè)計(jì)了數(shù)據(jù)通信、動(dòng)作控制功能模塊,用于上位機(jī)與手爪控制器之間的數(shù)據(jù)通信,包括數(shù)據(jù)傳遞、接收控制指令等,以及控制手爪動(dòng)作,而由于控制器采用Arduino UNO,因此需要分別設(shè)計(jì)功能模塊的上位機(jī)程序部分和Arduino程序部分。程序設(shè)計(jì)采用SerialPort串口通信軟件開發(fā)工具包提供的SerialPort類函數(shù)和Arduino IDE函數(shù)庫(kù)的串口通信Serial類函數(shù)等。
1) 數(shù)據(jù)通信功能。上位機(jī)和Arduino通過設(shè)計(jì)的通信連接功能函數(shù)RobotGripConn()和Setup()、數(shù)據(jù)傳遞功能函數(shù)RobotGripSendData()和RobotGripReceiveData()建立USB串口通信連接,實(shí)現(xiàn)數(shù)據(jù)通信,為后續(xù)的手爪動(dòng)作控制傳遞控制指令等。
其中上位機(jī)程序RobotGripConn()和Arduino程序Setup()分別借助SerialPort類函數(shù)和Serial類函數(shù),調(diào)用InitPort()、StartMonitoring()和Serial.begin()指定串口參數(shù),包括串口號(hào)、波特率、檢驗(yàn)位、數(shù)據(jù)位、停止位,建立上位機(jī)與控制器之間的連接。
2) 動(dòng)作控制功能。上位機(jī)和Arduino通過設(shè)計(jì)的釋放動(dòng)作功能函數(shù)RobotGripRelease()、抓取動(dòng)作功能函數(shù)RobotGripGrab()以及動(dòng)作執(zhí)行功能函數(shù)RobotGripAction()控制手爪執(zhí)行各類動(dòng)作。
2.2.2 機(jī)械臂運(yùn)動(dòng)控制模塊程序設(shè)計(jì)
根據(jù)工作流程的需要,在機(jī)械臂運(yùn)動(dòng)控制模塊中設(shè)計(jì)了數(shù)據(jù)通信、運(yùn)動(dòng)控制功能模塊,用于上位機(jī)與機(jī)械臂控制器之間的數(shù)據(jù)通信,包括接收柑橘的位置信息、接收控制指令、傳遞位姿信息等,以及控制機(jī)械臂運(yùn)動(dòng)。程序設(shè)計(jì)采用ORIN2機(jī)械臂控制軟件開發(fā)工具包,借助其提供的編程接口Cao類函數(shù),和通信驅(qū)動(dòng)組件CaoProv.DENSO.NetwoRC結(jié)合,實(shí)現(xiàn)對(duì)機(jī)械臂的二次開發(fā)。
1) 數(shù)據(jù)通信功能。上位機(jī)通過設(shè)計(jì)的通信連接功能函數(shù)RobotArmConn()、獲取位姿變量功能函數(shù)GetRobotArmPosVar()以及發(fā)送位姿變量功能函數(shù)SaveRobotArmPosVar(),建立上位機(jī)與控制器之間的以太網(wǎng)通信連接,實(shí)現(xiàn)數(shù)據(jù)通信,為后續(xù)的機(jī)械臂運(yùn)動(dòng)控制傳遞目標(biāo)位姿變量、控制指令等,目標(biāo)位姿變量包括末端位姿變量和關(guān)節(jié)位姿變量,末端位姿變量由機(jī)械臂基準(zhǔn)坐標(biāo)系末端法蘭中心位置(x,y,z)、末端工具坐標(biāo)系各軸旋轉(zhuǎn)角度(Rx,Ry,Rz)以及關(guān)節(jié)形態(tài)Fig組成,關(guān)節(jié)位姿變量由機(jī)械臂各關(guān)節(jié)旋轉(zhuǎn)角度組成。其中RobotArmConn()調(diào)用Cao類函數(shù)m_pICtrls->Add()指定控制器型號(hào)、機(jī)械臂通信驅(qū)動(dòng)組件名以及控制器IP地址,建立上位機(jī)與控制器之間的連接。
2) 運(yùn)動(dòng)控制功能。上位機(jī)通過設(shè)計(jì)的軌跡運(yùn)動(dòng)功能函數(shù)RobotArmMove()、關(guān)節(jié)旋轉(zhuǎn)運(yùn)動(dòng)功能函數(shù)RobotArmRotate()、機(jī)械臂復(fù)位功能函數(shù)RobotArmGoHome()以及中止運(yùn)動(dòng)功能函數(shù)RobotArmStop()等控制機(jī)械臂執(zhí)行各類運(yùn)動(dòng)。
這些運(yùn)動(dòng)控制功能函數(shù)的實(shí)現(xiàn)過程類似,分別調(diào)用不同的Cao類函數(shù),向控制器發(fā)送相應(yīng)的運(yùn)動(dòng)控制指令,控制器接收到控制指令后,通過RobSlave程序?qū)⑵滢D(zhuǎn)換成PAC(DENSO機(jī)械臂專用的編程語(yǔ)言)控制指令,并執(zhí)行該指令以實(shí)現(xiàn)對(duì)機(jī)械臂的運(yùn)動(dòng)控制。
根據(jù)采摘控制系統(tǒng)工作流程的需要,基于視覺識(shí)別定位模塊、機(jī)械臂運(yùn)動(dòng)控制模塊以及柔性手爪動(dòng)作模塊的部分功能模塊,在采摘控制模塊中設(shè)計(jì)機(jī)器人自主采摘功能模塊和其他為了實(shí)現(xiàn)自主采摘功能而設(shè)計(jì)的輔助功能,包括機(jī)械手坐標(biāo)轉(zhuǎn)換、采摘點(diǎn)篩選、采摘姿態(tài)確認(rèn)、采摘軌跡規(guī)劃、機(jī)械手采摘控制、分離果實(shí)果梗動(dòng)作控制功能模塊,以及與之對(duì)應(yīng)的功能函數(shù)RobotPick()、RobotArmCoordinateTrans()、FilterPoint()、RobotArmPickPos()、PickTrajectPlan()、RobotArmPick()、RobotArmPickAction(),用于實(shí)現(xiàn)采摘過程中的各個(gè)環(huán)節(jié)和硬件設(shè)備之間的協(xié)調(diào)控制。
分離果實(shí)果梗動(dòng)作控制、機(jī)械手采摘控制以及機(jī)器人自主采摘功能模塊的實(shí)現(xiàn)過程如圖7所示。

(a) 分離果實(shí)果梗動(dòng)作控制功能

(b) 機(jī)械手采摘控制功能
為了驗(yàn)證采摘機(jī)器人平臺(tái)控制系統(tǒng)程序的可行性,在實(shí)驗(yàn)室環(huán)境下準(zhǔn)備了試驗(yàn)材料,包括:仿真樹、若干個(gè)柑橘、采摘機(jī)器人平臺(tái)、控制系統(tǒng)程序測(cè)試界面、測(cè)量工具等,設(shè)置了平臺(tái)硬件參數(shù),包括:柔性手爪氣壓值100 kPa、機(jī)械臂速度32%等。測(cè)試界面如圖8所示。

圖8 控制系統(tǒng)程序測(cè)試界面Fig. 8 Control system program test interface
3.2.1 視覺定位功能程序測(cè)試
將柑橘隨機(jī)擺放在5個(gè)位置,用測(cè)量工具測(cè)量其實(shí)際位置信息,再通過視覺識(shí)別定位模塊的視覺識(shí)別功能程序和視覺定位功能程序?qū)ζ溥M(jìn)行識(shí)別定位,獲取其位置信息,將實(shí)際測(cè)量的位置信息與視覺定位的位置信息進(jìn)行對(duì)比,結(jié)果如表1所示。

表1 視覺定位測(cè)試結(jié)果Tab. 1 Visual location test results
由表1可知:將5組數(shù)據(jù)的定位誤差求和取平均值,最終采摘控制系統(tǒng)視覺識(shí)別定位模塊的平均定位誤差為1.22 cm。
3.2.2 柑橘自主采摘功能程序測(cè)試
分批次布置總共30個(gè)柑橘在仿真樹上,同時(shí)柑橘和仿真樹的位置也隨批次進(jìn)行隨機(jī)放置,避免出現(xiàn)柑橘位置固定的情況,機(jī)器人通過自主采摘功能程序控制模塊來進(jìn)行柑橘采摘,過程如圖9所示。
圖9(b)為采摘過程中采摘機(jī)器人進(jìn)行柑橘定位,定位結(jié)果為相機(jī)坐標(biāo)系下x:6.36 mm、y:237.63 mm、z:848.00 mm,機(jī)械手坐標(biāo)系下x:588.27 mm、y:-236.83 mm、z:627.52 mm,圖9(d)、圖9(e)為采摘機(jī)器人從正前方進(jìn)行柑橘抓取,圖9(f)為采摘機(jī)器人執(zhí)行分離動(dòng)作,成功分離柑橘果實(shí)與果梗,圖9(g)、9(h)為采摘機(jī)器人將采摘后的柑橘放置到收集點(diǎn),完成柑橘采摘,最終測(cè)試結(jié)果如表2所示。

(a) 柑橘識(shí)別

(b) 柑橘定位

(c) 機(jī)械手初始位姿

(d) 采摘準(zhǔn)備點(diǎn)

(e) 采摘點(diǎn)

(g) 柑橘放置點(diǎn)

(h) 放置完成點(diǎn)圖9 采摘過程Fig. 9 Picking process
由表2可知,實(shí)驗(yàn)室環(huán)境下,采摘機(jī)器人的柑橘識(shí)別成功率為100.0%,平均識(shí)別時(shí)間為47 ms,柑橘采摘成功率達(dá)到了80.0%,平均采摘時(shí)間為15.2 s。
如表1所示,柑橘的平均定位誤差僅為1.22 cm,采摘控制系統(tǒng)視覺識(shí)別定位模塊的定位精度高,而之所以還存在定位誤差是由于識(shí)別、定位算法所確定的柑橘中心坐標(biāo)與實(shí)際柑橘中心坐標(biāo)之間存在位置誤差,同時(shí)由于采摘機(jī)器人所采用的深度相機(jī)在進(jìn)行深度測(cè)量時(shí)也存在著一定的系統(tǒng)誤差,因此在柑橘坐標(biāo)轉(zhuǎn)換計(jì)算的過程中產(chǎn)生了定位誤差。
如表2所示,采摘控制系統(tǒng)視覺識(shí)別定位模塊的平均識(shí)別時(shí)間僅為47 ms,實(shí)時(shí)性好,能夠滿足柑橘采摘在線識(shí)別的要求;試驗(yàn)表明即使受到柑橘周圍環(huán)境條件的影響如遮擋、光照等,識(shí)別算法對(duì)30個(gè)柑橘的識(shí)別成功率依然達(dá)到了100.0%,之所以識(shí)別成功率高,其主要原因是識(shí)別算法采用了深度卷積網(wǎng)絡(luò)模型,既能夠提取和學(xué)習(xí)淺層次特征信息,也能夠提取和學(xué)習(xí)深層次特征信息,對(duì)復(fù)雜環(huán)境的適應(yīng)性好。
如表2所示,采摘機(jī)器人的柑橘采摘成功率達(dá)到了80.0%,平均采摘時(shí)間為15.2 s。之所以柑橘采摘成功率高,一定程度上是由于采摘控制系統(tǒng)視覺識(shí)別定位模塊的平均精度誤差小,結(jié)合柔性手爪本身能夠容許柑橘一定位置誤差的特性,使柔性手爪在不受枝葉遮擋的情況下能夠準(zhǔn)確地抓取到柑橘果實(shí);另一方面是由于采摘控制系統(tǒng)的采摘控制模塊在控制機(jī)械手進(jìn)行柑橘采摘的過程中,采摘姿態(tài)確認(rèn)功能和采摘軌跡規(guī)劃功能的控制算法通過預(yù)設(shè)的多個(gè)采摘軌跡點(diǎn),將采摘軌跡分成多段,盡可能保持機(jī)械手與柑橘樹的合理距離,同時(shí)根據(jù)柑橘周圍枝葉的遮擋情況,對(duì)柑橘采取不同的采摘姿態(tài),有效減少機(jī)械手與柑橘枝葉觸碰;再是由于采摘控制模塊果實(shí)果梗分離動(dòng)作控制功能的控制算法發(fā)揮了作用。
試驗(yàn)中6個(gè)柑橘采摘失敗的情況,主要是由于采摘控制系統(tǒng)受到了周圍復(fù)雜環(huán)境的影響。其一,采摘過程中視覺識(shí)別定位模塊由于采摘機(jī)器人自身的深度相機(jī)和所采用的定位算法,受到了橘枝葉遮擋和光照條件等因素的影響,出現(xiàn)了未能準(zhǔn)確測(cè)量出柑橘位置信息的情況,導(dǎo)致柑橘未能成功采摘;其二,機(jī)械手在接近被定位柑橘的過程中,由于環(huán)境復(fù)雜,即使采用了采摘姿態(tài)確認(rèn)功能和采摘軌跡規(guī)劃功能的控制算法,依然發(fā)生了與柑橘周圍枝葉觸碰的情況,致使柑橘脫離了原來的位置,從而導(dǎo)致手爪未能成功抓取到柑橘,柑橘最終未能成功采摘。
本文面向機(jī)器人柑橘采摘,構(gòu)建了以上位機(jī)、RealSense Camera R200深度相機(jī)、VS-6556垂直多關(guān)節(jié)工業(yè)用機(jī)械臂、三指柔性手爪等組成的采摘機(jī)器人硬件平臺(tái),研究了采摘機(jī)器人的控制系統(tǒng)程序設(shè)計(jì),包括視覺識(shí)別定位程序模塊、機(jī)械臂運(yùn)動(dòng)控制程序模塊、手爪動(dòng)作控制程序模塊以及采摘控制程序模塊的程序設(shè)計(jì)。
1) 基于librealsense相機(jī)軟件開發(fā)工具包、OpenCV計(jì)算機(jī)視覺庫(kù)、TensorFlow-GPU和Keras深度學(xué)習(xí)框架,采用Visual Studio 2015、PyCharm編程工具,C++和Python編程語(yǔ)言,設(shè)計(jì)了視覺識(shí)別定位模塊中的圖像采集功能模塊、基于改進(jìn)YOLOv3-tiny輕量化識(shí)別方法的視覺識(shí)別功能模塊以及基于識(shí)別結(jié)果的視覺定位功能模塊。
2) 基于ORIN2機(jī)械臂控制軟件開發(fā)工具包、Arduino IDE自帶函數(shù)庫(kù)以及SerialPort串口通信軟件開發(fā)工具包,采用Visual Studio 2015、Arduino IDE編程工具,C++編程語(yǔ)言,設(shè)計(jì)了柔性手爪動(dòng)作控制模塊、機(jī)械臂運(yùn)動(dòng)控制模塊中上位機(jī)與機(jī)械臂、柔性手爪的數(shù)據(jù)通信功能模塊、柔性手爪的動(dòng)作控制功能模塊以及基于位姿變量的機(jī)械臂運(yùn)動(dòng)控制功能模塊等。
3) 結(jié)合視覺識(shí)別定位模塊、柔性手爪動(dòng)作控制模塊和機(jī)械臂運(yùn)動(dòng)控制模塊,設(shè)計(jì)了采摘控制模塊,包括分離果實(shí)果梗動(dòng)作控制功能、機(jī)械手采摘控制功能以及機(jī)器人自主采摘功能等在內(nèi)的功能模塊。
4) 采摘控制系統(tǒng)程序測(cè)試的結(jié)果表明:視覺識(shí)別定位模塊的平均定位精度誤差為1.22 cm,柑橘的識(shí)別成功率達(dá)到100%,平均識(shí)別時(shí)間約為47 ms,機(jī)器人柑橘采摘成功率達(dá)到80%,平均采摘時(shí)間為15.2 s。驗(yàn)證了采摘機(jī)器人平臺(tái)控制系統(tǒng)程序的可行性,為水果采摘機(jī)器人的控制系統(tǒng)程序設(shè)計(jì)提供參考。