柏宇豪,黃 民,劉相權(quán)
(北京信息科技大學(xué) 機(jī)電工程學(xué)院,北京 100192)
目前自動(dòng)倉(cāng)儲(chǔ)機(jī)器人系統(tǒng)在倉(cāng)庫(kù)管理和倉(cāng)庫(kù)調(diào)度領(lǐng)域中發(fā)揮著關(guān)鍵作用。傳統(tǒng)的物流配送模式效率較低,采用自動(dòng)化搬運(yùn)系統(tǒng)才能高效完成大量貨物的搬運(yùn)工作。在國(guó)外,搬運(yùn)機(jī)器人市場(chǎng)主要被日本、歐美等國(guó)家占據(jù):日本品牌主要有 YASKAWA、FANUC,歐美品牌中主要有 KUKA、COMAU[1]。國(guó)內(nèi)相對(duì)國(guó)外發(fā)展較晚,在“七·五”期間,上海沃迪、沈陽(yáng)新松、鹽城宏達(dá)等公司逐漸占據(jù)了國(guó)內(nèi)物流行業(yè)的大部分市場(chǎng)。自動(dòng)化搬運(yùn)相比于傳統(tǒng)的人工搬運(yùn),具有安全、快速、節(jié)約成本的優(yōu)點(diǎn),所以研究自動(dòng)化搬運(yùn)系統(tǒng)意義深遠(yuǎn)。
設(shè)計(jì)一套完整的機(jī)器人搬運(yùn)自動(dòng)化系統(tǒng)需要視覺(jué)技術(shù)、數(shù)據(jù)庫(kù)技術(shù)、串口傳輸技術(shù)和機(jī)器人編程技術(shù)等。其中視覺(jué)技術(shù)作為自動(dòng)化搬運(yùn)系統(tǒng)中獲取環(huán)境信息的主要手段和關(guān)鍵環(huán)節(jié),可為機(jī)械臂在工作過(guò)程中實(shí)時(shí)提供判斷信息[3]。數(shù)據(jù)庫(kù)技術(shù)的發(fā)展為智能倉(cāng)儲(chǔ)機(jī)器人帶來(lái)了極大的便利,它可以?xún)?chǔ)存?zhèn)}庫(kù)中所有貨物的數(shù)據(jù)信息[4]。機(jī)器人編程技術(shù)作為系統(tǒng)控制的核心,起到承上啟下的作用?;诖耍疚耐ㄟ^(guò)分析實(shí)際搬運(yùn)環(huán)境,編寫(xiě)機(jī)器人工作流程,并將以上技術(shù)進(jìn)行集成,設(shè)計(jì)出一套揀選機(jī)器人自動(dòng)搬運(yùn)系統(tǒng)。
針對(duì)揀選機(jī)器人所要工作的倉(cāng)庫(kù)環(huán)境,以及搬運(yùn)系統(tǒng)所需要的功能,制定了整套系統(tǒng)的搬運(yùn)流程,并將其劃分為5大模塊。
自動(dòng)搬運(yùn)系統(tǒng)首先采用單目攝像機(jī)識(shí)別貨堆中箱體,將其劃分為不同區(qū)域的同時(shí)獲取位置信息。之后控制機(jī)械臂進(jìn)行運(yùn)動(dòng),采用真空吸盤(pán)吸附貨物,將第1層所有貨物搬運(yùn)到指定的位置。接著重新回到拍照位置,獲取第2層貨物的位置信息,重復(fù)搬運(yùn)過(guò)程。當(dāng)兩層貨物搬運(yùn)結(jié)束后,機(jī)械臂回到起始位置。整個(gè)工作流程如圖1所示。
圖1 工作流程
分析工作流程,搬運(yùn)系統(tǒng)應(yīng)具有3種功能。
1)搬運(yùn)功能。機(jī)器人能夠在有限的工作空間內(nèi)將貨物搬運(yùn)到指定地點(diǎn),同時(shí)機(jī)械臂的運(yùn)動(dòng)速度和運(yùn)動(dòng)位置能夠人工調(diào)節(jié)。
2)通訊功能。機(jī)器人作為執(zhí)行機(jī)構(gòu),需要接受位置信息和貨物信息,應(yīng)能控制系統(tǒng)進(jìn)行通訊。
3)識(shí)別功能。每一層的貨物數(shù)量以及每件貨物的位置信息都需精確地辨析出來(lái),這就需要視覺(jué)處理技術(shù)和數(shù)據(jù)庫(kù)技術(shù)相互配合。
結(jié)合工作流程和系統(tǒng)所需要的3種功能,將模塊分為5個(gè):通訊模塊、視覺(jué)模塊、控制模塊、機(jī)器人模塊和數(shù)據(jù)庫(kù)模塊。其模塊結(jié)構(gòu)如圖2所示。其中數(shù)據(jù)庫(kù)模塊儲(chǔ)存著所有貨物的尺寸大小、重量、位置信息和剩余數(shù)量。視覺(jué)模塊通過(guò)圖像處理技術(shù)和數(shù)據(jù)處理技術(shù)獲取貨物的三維坐標(biāo)[5]。數(shù)據(jù)庫(kù)和視覺(jué)模塊共同完成識(shí)別功能。機(jī)器人模塊主要由機(jī)器人控制程序來(lái)控制機(jī)械臂的運(yùn)動(dòng)以及機(jī)械臂末端的吸盤(pán)吸放??刂颇K主要控制視覺(jué)、數(shù)據(jù)庫(kù)、機(jī)器人和視覺(jué)模塊的工作,并實(shí)時(shí)顯示Kinect采集到的位置數(shù)據(jù)。這2個(gè)模塊作為核心共同完成搬運(yùn)功能。通訊模塊作為數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)交換的中心,主要負(fù)責(zé)各模塊之間的數(shù)據(jù)交換,例如視覺(jué)數(shù)據(jù)和機(jī)器人之間的傳輸。
圖2 模塊結(jié)構(gòu)
系統(tǒng)的硬件主要由安川MH-12型機(jī)器人、工控機(jī)、單目相機(jī)和九嘴吸盤(pán)等組成。軟件部分主要負(fù)責(zé)控制相機(jī)拍照、機(jī)器人運(yùn)動(dòng)和吸嘴工作。簡(jiǎn)易控制圖如圖3所示。
圖3 簡(jiǎn)易控制圖
這一套設(shè)備集成了多種應(yīng)用技術(shù),相機(jī)安裝在吸盤(pán)上面,視覺(jué)模塊以Visual Stdio2015為編程軟件,實(shí)現(xiàn)了工件的識(shí)別與定位,并輸出三維坐標(biāo)。以Visual Stdio2015為編程軟件,C++為編程語(yǔ)言,基于安川MH-12機(jī)器人的SDK對(duì)其進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)控制[6]。并將數(shù)據(jù)庫(kù)模塊、視覺(jué)模塊、機(jī)器人控制等模塊集成在一起。確定軟、硬件系統(tǒng)之后,制作的實(shí)驗(yàn)樣機(jī)如圖4所示。
圖4 實(shí)驗(yàn)樣機(jī)
市場(chǎng)上比較流行的抓取工具為氣動(dòng)真空吸盤(pán)。真空吸盤(pán)通過(guò)吸嘴與貨物表面之間的密閉空間形成真空,使真空吸嘴內(nèi)外形成壓力差,實(shí)現(xiàn)吸盤(pán)抓取貨物的功能[7]。所以本文采用九嘴氣動(dòng)吸盤(pán)作為機(jī)械臂末端抓取工具。
吸盤(pán)的尺寸大小需要根據(jù)貨箱的尺寸和重量進(jìn)行設(shè)計(jì)。在滿(mǎn)足搬運(yùn)需求的條件下,應(yīng)該基于小巧化和最危險(xiǎn)尺寸原則。根據(jù)統(tǒng)計(jì),倉(cāng)庫(kù)內(nèi)貨物的長(zhǎng)寬范圍為200 ~500 mm,根據(jù)重量和尺寸范圍將貨物分為4類(lèi)。第一類(lèi)紙箱尺寸:長(zhǎng)度范圍為200 ~310 mm,寬度范圍為200~310 mm,最大質(zhì)量為7.2 kg;第二類(lèi)紙箱尺寸:長(zhǎng)度大于315 mm且寬度范圍為200~225 mm,或者長(zhǎng)度范圍為310~400 mm,寬度大于200 mm,最大質(zhì)量為10.8 kg;第三類(lèi)紙箱尺寸:長(zhǎng)度大于400 mm,寬度范圍為225~310 mm,最大質(zhì)量為10.8 kg;第四類(lèi)紙箱尺寸:長(zhǎng)度大于400 mm,寬度大于310 mm,最大質(zhì)量為16.2 kg?;诮鉀Q最危險(xiǎn)尺寸原則,從4種分類(lèi)中選取尺寸最小(吸嘴吸取面積最小)而且重量最大的箱子確定吸嘴分布。
危險(xiǎn)尺寸統(tǒng)計(jì)如表1所示。
表1 貨箱尺寸統(tǒng)計(jì)表
由于吸盤(pán)的中心要與機(jī)械手末端對(duì)接,所以采用偏心結(jié)構(gòu)。綜上考慮,最終決定分布位置如圖5所示。
圖5 吸嘴整體分布
所有貨物中質(zhì)量最大的箱子為16.2 kg,考慮到安全因素以及吸嘴的老化問(wèn)題,將吸盤(pán)的最大承重增加到18 kg。所以平均每個(gè)吸嘴承擔(dān)的貨物重量要達(dá)到2 kg。每一個(gè)吸嘴產(chǎn)生的吸附力為
(1)
式中:P為吸盤(pán)內(nèi)真空度(相對(duì)壓力);A為吸盤(pán)的有效吸附面積;f為安全系數(shù);
真空度p與吸盤(pán)有效吸附面積A分別是真空發(fā)生器與真空吸盤(pán)選型的關(guān)鍵參數(shù),二者共同影響吸盤(pán)吸附力的產(chǎn)生,一般情況下吸盤(pán)的有效吸附面積為吸盤(pán)面積的80%[8]。安全系數(shù)隨使用條件而異,一般情況下安全系數(shù)取1.5。根據(jù)計(jì)算吸嘴采用piGRIPG.FX55T30. B1.S1.G38 M.01型號(hào),其技術(shù)參數(shù)如下:垂直提升力為54.2 N,垂直位移量為11.6 mm,彎曲半徑為40 mm,重量為34.7 g。
整體結(jié)構(gòu)設(shè)計(jì)完成后,根據(jù)每一類(lèi)貨物中的最危險(xiǎn)尺寸分別設(shè)計(jì)抓取方案,即吸嘴的具體分布。
第一類(lèi)貨物尺寸較小,且最大重量為7.2 kg,所以采用1、2組吸嘴,4個(gè)吸嘴可以吸取8 kg的貨物,可以達(dá)到工作要求;第二類(lèi)和第三類(lèi)貨箱,最大質(zhì)量為10.8 kg,6個(gè)吸嘴可以吸取12 kg貨物,所以第二類(lèi)采用1、2、3組吸嘴;第三類(lèi)采用2、3、4組吸嘴;第四類(lèi)貨物最大質(zhì)量為16.2 kg,且可吸附面積較大,采用全部吸嘴。
4種吸嘴位置分布如圖6所示。
圖6 吸嘴分布
在整個(gè)貨物抓取過(guò)程中,當(dāng)視覺(jué)數(shù)據(jù)傳輸完畢,機(jī)械臂開(kāi)始抓取貨物的時(shí)候,在程序中定義變量xipanzuhe,分別對(duì)4種組合標(biāo)記為1,2,3,4。針對(duì)每次選擇,對(duì)尺寸范圍和參數(shù)xipanzuhe進(jìn)行修改。其中參數(shù)boxlength、boxwidth和boxweight分別代表貨物的長(zhǎng)度、寬度和重量。部分核心代碼如下:
if(boxlength<310 && boxlength>=200)&& (boxwidth<310 &&boxwidth >=200) && boxweight <=7.2)
res=_Command.esOpen();
res=_Command.esSelectJobON1();
res=_Command.esClose();
程序流程如圖7所示。
圖7 程序流程
本文設(shè)計(jì)的自動(dòng)化搬運(yùn)系統(tǒng)采用安川MH-12型機(jī)器人。MH-12機(jī)器人采用流線(xiàn)型手臂設(shè)計(jì),這種設(shè)計(jì)有利于增加機(jī)械臂的動(dòng)作范圍。三維模型如圖8所示,各軸運(yùn)動(dòng)范圍如表2所示。
圖8 MH-12三維圖
表2 各軸運(yùn)動(dòng)范圍
機(jī)器人運(yùn)動(dòng)學(xué)實(shí)際上是為了解決手臂轉(zhuǎn)動(dòng)問(wèn)題,可為兩類(lèi):正運(yùn)動(dòng)學(xué)和逆運(yùn)動(dòng)學(xué)。正運(yùn)動(dòng)學(xué)是用來(lái)判斷機(jī)器人在三維空間中的位置;逆運(yùn)動(dòng)學(xué)解決機(jī)器人如何規(guī)劃路徑到達(dá)工作點(diǎn)。機(jī)器人運(yùn)動(dòng)學(xué)是研究機(jī)器人控制的基礎(chǔ)[9]。
正向運(yùn)動(dòng)學(xué)求解機(jī)器人末端執(zhí)行器相對(duì)于參考坐標(biāo)系的位置和姿態(tài);逆向運(yùn)動(dòng)學(xué)求解機(jī)器人能夠達(dá)到的預(yù)期位姿。運(yùn)動(dòng)學(xué)求解使用機(jī)器人的4個(gè)參數(shù):連桿長(zhǎng)度、偏距、關(guān)節(jié)角度、轉(zhuǎn)角,分別記為a、d、θ、α。確定參數(shù)后可以計(jì)算出變換矩陣Ti。Ti描述了連桿坐標(biāo)系之間旋轉(zhuǎn)和平移的一次坐標(biāo)變換。對(duì)于六自由度機(jī)器人,其機(jī)械手的末端相對(duì)于固定坐標(biāo)系的變換可表示為T(mén)60=T1T2T3T4T5T6,這6個(gè)坐標(biāo)變換矩陣的表達(dá)式為:
(2)
(3)
(4)
(5)
(6)
(7)
運(yùn)動(dòng)學(xué)方程式:
(8)
其中:
nx=c1[c23(c4c5c6-s4s6)-s23s5c6]+
s1(s4c5c6+c4s6)
ny=s1[c23(c4c5c6-s4s6)-s23s5c6]-
c1(s4c5c6+c4s6)
nz=-s23(c4c5c6-s4s6)-c23s5c6
ox=c1[c23(-c4c5s6-s4c6)+s23s5s6]+
s1(c4s6-s4c5s6)
oy=s1[c23(-c4c5s6-s4c6)+s23s5s6]-
c1(c4c6-s4c5c6)
oz=-s23(-c4c5s6-s4c6)+c23s5s6
ax=-c1(c23c4s5+s23c5)-s1s4s5
ay=-s1(c23c4s5+s23c5)+c1s4s5
az=s23c4s5-c23c5
px=c1(a2c2+a3c23-d4s23)-d2s1
py=s1(a2c2+a3c23-d4s23)+d2c1
pz=-a3s23-a2s2-d4c23
如果末端連桿位姿T60已經(jīng)給定了,則可以對(duì)各個(gè)關(guān)節(jié)的變量進(jìn)行逆運(yùn)動(dòng)學(xué)求解,解出θ1~θ6的值。方法是采用相應(yīng)的逆變換的矩陣左乘于方程的左右兩邊,然后可算出機(jī)器人的各關(guān)節(jié)的關(guān)節(jié)角度值:
(9)
θ2=
(10)
(11)
(12)
(13)
在Windows系統(tǒng)下,使用VS2015編寫(xiě)程序Sample,實(shí)現(xiàn)對(duì)機(jī)器人整個(gè)運(yùn)動(dòng)過(guò)程的控制。計(jì)算機(jī)和機(jī)器人之間使用TCP/IP標(biāo)準(zhǔn)協(xié)議進(jìn)行通訊[11]。
當(dāng)機(jī)器人伺服電源接通后,整個(gè)搬運(yùn)系統(tǒng)開(kāi)始工作。機(jī)械臂在取貨之前將首先運(yùn)動(dòng)到示教位置即相機(jī)拍照位置。使用示教器將機(jī)械臂運(yùn)動(dòng)到最佳位置之后,通過(guò)示教器的機(jī)器人當(dāng)前位置顯示功能讀數(shù)據(jù)控制相機(jī)拍照以及傳輸位置數(shù)據(jù)的程序和機(jī)器人控制程序都位于同一個(gè)計(jì)算機(jī)內(nèi),兩個(gè)程序之間采用虛擬接口進(jìn)行通訊,當(dāng)機(jī)器人運(yùn)動(dòng)到示教位置之后,會(huì)發(fā)送指令使得Kinect開(kāi)始傳輸數(shù)據(jù)。在Sample程序中添加按鈕,并命名為示教位置。
其中機(jī)械臂運(yùn)動(dòng)控制函數(shù)esCartMove部分核心代碼如下:
moveType=1;
moveData.moveData.robotNo=1;
moveData.robotPos.axesData.axis[0]=965.610 + x;
moveData.robotPos.axesData.axis[1]=-43.130 + y;
moveData.robotPos.axesData.axis[2]=345.751 + z;
moveData.robotPos.axesData.axis[3]=179.9431;
moveData.robotPos.axesData.axis[4]=2.2516;
moveData.robotPos.axesData.axis[5]=-17.7307 + angle;
程序流程如圖9所示。
圖9 機(jī)器人控制程序流程
貨堆一般分為2層,在程序中設(shè)置變量xipancengshu來(lái)識(shí)別拿取的是第幾層貨物。最后的搬運(yùn)實(shí)驗(yàn)效果如圖10所示。
圖10 搬運(yùn)實(shí)驗(yàn)過(guò)程
本文設(shè)計(jì)的自動(dòng)化搬運(yùn)系統(tǒng)具有控制簡(jiǎn)易、靈活小巧的特點(diǎn),適合在工作空間有限的狹小區(qū)域工作。通過(guò)對(duì)機(jī)器人原有控制系統(tǒng)的二次開(kāi)發(fā),使得機(jī)器人的運(yùn)動(dòng)控制變得更為簡(jiǎn)單,而且可以做到完全自動(dòng)化運(yùn)行。同時(shí),本系統(tǒng)使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)倉(cāng)庫(kù)中的貨物信息,易于修改,為倉(cāng)庫(kù)內(nèi)貨物信息的更新和日后適用不同的范圍帶來(lái)極大便利。經(jīng)過(guò)實(shí)驗(yàn),搬運(yùn)系統(tǒng)可以遠(yuǎn)程控制機(jī)械臂自動(dòng)識(shí)別貨箱,依次對(duì)每層的貨箱進(jìn)行搬運(yùn),并自主選擇放置位置,理論上能夠處理的貨物數(shù)量不限。
北京信息科技大學(xué)學(xué)報(bào)(自然科學(xué)版)2019年2期