楊 利,陳柳松,謝永超
(1.湖南鐵道職業(yè)技術(shù)學(xué)院,湖南 株洲 412000;2.中車(chē)株洲所電氣技術(shù)與材料工程研究院,湖南 株洲 412000)
由于工業(yè)機(jī)器人占地面積小、分揀效率高,且工作時(shí)不知疲倦,能節(jié)省人力成本和管理成本,已成為工業(yè)生產(chǎn)過(guò)程中分揀生產(chǎn)線的主角。工業(yè)機(jī)器人智能分揀生產(chǎn)線是將工業(yè)機(jī)器人技術(shù)與自動(dòng)識(shí)別技術(shù)相結(jié)合,讓工業(yè)機(jī)器人“聰明”起來(lái),能根據(jù)工件種類(lèi)進(jìn)行分類(lèi)分揀。目前,自動(dòng)識(shí)別分揀有傳感器識(shí)別和機(jī)器視覺(jué)識(shí)別兩種[1]。傳感器識(shí)別是用特定傳感器識(shí)別工件的顏色、形狀或材質(zhì)等特性[1],但當(dāng)工件更換時(shí),傳感器也要相應(yīng)調(diào)整。機(jī)器視覺(jué)識(shí)別是用工業(yè)相機(jī)代替人眼接收和處理真實(shí)物體圖像,以獲得所需物體信息或控制機(jī)器人運(yùn)動(dòng)的技術(shù)[2-3]。
本文研究的是基于機(jī)器視覺(jué)識(shí)別技術(shù)的芯片智能分揀生產(chǎn)線,根據(jù)機(jī)器視覺(jué)識(shí)別結(jié)果引導(dǎo)工業(yè)機(jī)器人將芯片分揀至不同區(qū)域。由于智能分揀生產(chǎn)線模塊較多,各模塊節(jié)拍需反復(fù)調(diào)試,導(dǎo)致研發(fā)周期較長(zhǎng)。利用工業(yè)機(jī)器人虛擬仿真技術(shù)能夠縮短研發(fā)周期。本文將基于RobotStudio仿真軟件進(jìn)行芯片智能分揀生產(chǎn)線的設(shè)計(jì)。
文獻(xiàn)[5-20]基于RobotStudio軟件,對(duì)輸送鏈跟蹤、生產(chǎn)線下料、輪轂打磨、焊接工藝、手電筒裝配、異形軸加工等工業(yè)應(yīng)用進(jìn)行了仿真研究,為本智能分揀生產(chǎn)線的實(shí)現(xiàn)提供了技術(shù)參考,但均未涉及智能分揀。孫立新[1]基于RobotStudio搭建了機(jī)器人分揀工作站,但采用的是傳感器分揀識(shí)別,而非機(jī)器視覺(jué)分揀識(shí)別;管菊花[4]基于RobotStudio 搭建了瓷磚智能識(shí)別分類(lèi)仿真工作站,但對(duì)于機(jī)器視覺(jué)識(shí)別仿真過(guò)程描述較簡(jiǎn)單,且未提及生產(chǎn)節(jié)拍協(xié)調(diào)問(wèn)題。
一個(gè)完整的芯片智能分揀生產(chǎn)線由芯片下料機(jī)、輸送鏈、工業(yè)相機(jī)及工業(yè)機(jī)器人等模塊構(gòu)成,如圖1所示。其中下料機(jī)為震動(dòng)下料機(jī),利用震動(dòng)電機(jī)激勵(lì)原理完成芯片下料工作,因此下料后芯片的位姿不固定;輸送鏈由步進(jìn)電機(jī)驅(qū)動(dòng),完成芯片傳輸工作。在輸送鏈上方設(shè)置兩個(gè)工位:拍照工位和抓取工位。工位下方各安裝一個(gè)光電傳感器,當(dāng)芯片達(dá)到工位時(shí),輸送鏈停止工作,觸發(fā)相機(jī)拍照或工業(yè)機(jī)器人抓??;工業(yè)相機(jī)完成芯片檢測(cè)工作,檢測(cè)出合格品和瑕疵品;工業(yè)機(jī)器人為分揀機(jī)器人,將芯片分類(lèi)分揀至合格品輸送鏈或瑕疵品輸送鏈。
圖1 工作站布局圖
由于芯片體積小、質(zhì)量輕,產(chǎn)量高,生產(chǎn)線對(duì)分揀速度要求高,因此選取ABB IRB360并聯(lián)型工業(yè)機(jī)器人(也稱(chēng)高速蜘蛛手機(jī)器人)為分揀機(jī)器人,其活動(dòng)范圍為800 mm,抓取重量達(dá)1 kg;工業(yè)相機(jī)選取Integrated Vision camera Cam00X;除此以外,本系統(tǒng)還需要先在Solidworks建模軟件中完成芯片等物體模型的建立,如圖2所示。圖(a)為芯片模型,選擇常見(jiàn)的塑料方扁平式封裝芯片;由于芯片體積小,且不能承受重力,機(jī)器人夾具采用圖(b)所示的雙吸盤(pán)工具;圖(c)為對(duì)射式光電傳感器模型;圖(d)為分揀盒模型,放置于合格品輸送鏈或瑕疵品輸送鏈下方。模型文件格式選擇STEP AP203或AP214[4-6]。模型建好后導(dǎo)入RobotStudio軟件中,按照?qǐng)D1合理布局。
圖2 模型圖
系統(tǒng)工作流程如圖3所示,分為三大流程。1)首先總輸送鏈完成初始化后輸出芯片,并且芯片的位置和姿態(tài)(位姿)在輸送鏈范圍內(nèi)可隨機(jī)變化。這是模擬現(xiàn)實(shí)工業(yè)環(huán)境下芯片位姿隨機(jī)的情況。當(dāng)芯片滑動(dòng)至拍照工位時(shí)停止滑動(dòng),等相機(jī)拍照完成后繼續(xù)滑動(dòng)至抓取工位,等待工業(yè)機(jī)器人來(lái)抓取。抓取完成后下一塊芯片接著滑動(dòng)。同一時(shí)刻輸送鏈上有多個(gè)芯片滑動(dòng);2)相機(jī)在檢測(cè)到芯片到達(dá)拍照工位后打開(kāi)光源并觸發(fā)拍照,把檢測(cè)到的芯片位姿信息發(fā)送給工業(yè)機(jī)器人,發(fā)送完成信號(hào)給輸送鏈;3)分揀工業(yè)機(jī)器人初始化后進(jìn)入Home點(diǎn)等待,當(dāng)收到芯片到達(dá)抓取工位的信號(hào)后,根據(jù)相機(jī)發(fā)送的芯片位姿信息調(diào)整合適的姿態(tài)去抓取芯片,最后將合格品放置在合格品輸送鏈,瑕疵品放置在瑕疵品輸送鏈。
圖3 系統(tǒng)工作流程
利用RobotStudio 軟件中的機(jī)械裝置功能,可實(shí)現(xiàn)芯片下料機(jī)下料效果。首先在Solidworks軟件中建立下料機(jī)模型,后導(dǎo)入RobotStudio軟件中創(chuàng)建成“設(shè)備”類(lèi)型的機(jī)械裝置。由于下料機(jī)是震動(dòng)下料機(jī),機(jī)械裝置的震動(dòng)盤(pán)以基座中心為核心,進(jìn)行±180°的旋轉(zhuǎn)運(yùn)動(dòng),“接點(diǎn)”參數(shù)設(shè)置如圖4所示。
圖4 下料機(jī)機(jī)械裝置創(chuàng)建
在 RobotStudio 軟件中,除機(jī)器人和機(jī)械裝置之外的動(dòng)態(tài)功能是通過(guò)Smart組件實(shí)現(xiàn)的,Smart組件設(shè)計(jì)是工作站設(shè)計(jì)核心內(nèi)容之一[4-10]。本文中設(shè)計(jì)了2個(gè)Smart組件:輸送鏈Smart組件和抓取Smart組件。其中輸送鏈Smart組件完成芯片下料、芯片位姿變換、芯片傳輸、相機(jī)檢測(cè)等功能。抓取Smart組件完成機(jī)器人抓取和釋放芯片的功能。
2.3.1 輸送鏈Smart組件
實(shí)際產(chǎn)線中輸送鏈?zhǔn)怯蒔LC通過(guò)步進(jìn)電機(jī)驅(qū)動(dòng)的,本系統(tǒng)中用輸送鏈Smart組件模擬相關(guān)功能,設(shè)計(jì)連接圖如圖4所示。
首先Source子組件在輸送鏈的起點(diǎn)復(fù)制出一個(gè)新芯片,這模擬芯片下料機(jī)動(dòng)作。在輸送鏈的范圍內(nèi),輸出芯片的位姿可隨機(jī)變化,這與實(shí)際產(chǎn)線工況是一致的。其中位置變化實(shí)現(xiàn)過(guò)程為:Random子組件輸出兩個(gè)隨機(jī)值x和y,經(jīng)VectorConverter子組件轉(zhuǎn)換為矩陣后賦給Soure子組件的position屬性。姿態(tài)變化實(shí)現(xiàn)過(guò)程為:Random子組件輸出一個(gè)隨機(jī)值z(mì),經(jīng)VectorConverter子組件轉(zhuǎn)換為矩陣后賦給Soure子組件的Orientation屬性。識(shí)別結(jié)果變化實(shí)現(xiàn)過(guò)程為:Random子組件輸出一個(gè)布爾型隨機(jī)值result,輸出0代表瑕疵品,1代表合格品。由于輸送鏈寬度有限,芯片的輸出位置范圍很小,x和y的隨機(jī)范圍取-0.1~0.1。z的單位是弧度,隨機(jī)范圍為-1.57~1.57,利用公式(1)換算為姿態(tài)即-90~90°。
(1)
由于輸送鏈上會(huì)同時(shí)出現(xiàn)多個(gè)芯片,因此利用Queue子組件將芯片存入隊(duì)列。當(dāng)Queue隊(duì)列中有芯片時(shí),觸發(fā)LinerMover子組件使芯片沿著X軸的正方向以100 mm/s的速度滑動(dòng)。當(dāng)滑動(dòng)到抓取工位時(shí),該處的面?zhèn)鞲衅鱌laneSensor檢測(cè)到芯片后置位輸出信號(hào)DoInPos,并將芯片移出Queue隊(duì)列,暫停Soure輸出芯片。
在實(shí)際產(chǎn)線中,通常相機(jī)數(shù)據(jù)是通過(guò)網(wǎng)絡(luò)以socket通訊協(xié)議發(fā)送給工業(yè)機(jī)器人。在本仿真系統(tǒng)中通過(guò)RapidVariable子組件將芯片姿態(tài)值發(fā)送給工業(yè)機(jī)器人的angle變量,將芯片位置值發(fā)送給工業(yè)機(jī)器人的pos_XY變量,將芯片識(shí)別結(jié)果發(fā)送給工業(yè)機(jī)器人的result變量。
圖5 輸送鏈Smart組件連接圖
2.3.2 抓取Smart組件
實(shí)際產(chǎn)線中芯片的抓取和釋放是通過(guò)電磁閥連接氣管實(shí)現(xiàn)的,本系統(tǒng)中用抓取Smart組件模擬該操作,DiGet為輸入信號(hào),DoGetOK為輸出信號(hào)。LineSensor傳感器安裝在機(jī)器人夾具中間,當(dāng)夾具夾到芯片時(shí),LineSensor檢測(cè)到芯片。此時(shí)開(kāi)啟DiGet信號(hào),Attacher子組件便將芯片安裝到夾具上,并將DoGetOK輸出1。當(dāng)機(jī)器人抓取芯片到目標(biāo)位置后,DiGet信號(hào)復(fù)位,Detacher子組件將芯片從夾具上卸下,DoGetOK輸出0。
工作站系統(tǒng)設(shè)計(jì)完后后,機(jī)器人、Smart組件之間需要通過(guò)I/O信號(hào)進(jìn)行連接,以實(shí)現(xiàn)機(jī)器人、輸送鏈、相機(jī)、傳感器等模塊的無(wú)縫鏈接[9-15]。本系統(tǒng)中I/O信號(hào)連接如表1所示。其中System2為機(jī)器人系統(tǒng),添加了di1、di2兩個(gè)輸入信號(hào)和do1、do2兩個(gè)輸出信號(hào);SC_Move為輸送鏈Smart組件,SC_Get為抓取Smart組件。
表1 I/O信號(hào)連接表
系統(tǒng)抓取和放置一塊芯片的流程為:機(jī)器人輸出do1信號(hào)觸發(fā)SC_Move組件輸出芯片,待芯片滑動(dòng)至抓取工位時(shí)SC_Move組件輸出DoInPos信號(hào)告知機(jī)器人開(kāi)始運(yùn)動(dòng)。機(jī)器人運(yùn)動(dòng)到抓取點(diǎn)后,輸出do2信號(hào)啟動(dòng)SC_Get組件開(kāi)始抓取芯片,待機(jī)器人成功放置芯片后,關(guān)閉SC_Get組件釋放芯片。
芯片智能分揀生產(chǎn)線的路徑規(guī)劃非常重要。如圖6所示,工業(yè)機(jī)器人需示教7個(gè)工作點(diǎn),具體為1個(gè)原點(diǎn)Phome、1個(gè)抓取點(diǎn)Ppick及1個(gè)抓取預(yù)備點(diǎn)PpickReady、1個(gè)合格品放置點(diǎn)PplaceNormal、1個(gè)瑕疵品放置點(diǎn)PplaceBbad、2個(gè)放置預(yù)備點(diǎn)PplaceBReady和PplaceBReady。其中Ppick隨芯片位姿變化,PplaceBReady和PplaceBReady可通過(guò)偏移實(shí)現(xiàn)。機(jī)器人分揀流程在1~11之間循環(huán)。分揀一個(gè)合格品流程為:1→2→3→4→5→6→7;分揀一個(gè)瑕疵品流程為:1→2→3→8→9→10→11。抓取點(diǎn)或放置點(diǎn)之前都示教了預(yù)備點(diǎn),在達(dá)到預(yù)備點(diǎn)之前由于工業(yè)機(jī)器人運(yùn)動(dòng)區(qū)域較大,不存在碰撞可能,可采用MoveJ線性運(yùn)動(dòng)指令。而預(yù)備點(diǎn)到抓取點(diǎn)或預(yù)備點(diǎn)到放置點(diǎn)時(shí),由于距離較小,機(jī)器人需降速20%,以避免碰撞或速度過(guò)快而擠壓芯片。
圖6 工業(yè)機(jī)器人軌跡規(guī)劃圖
在工業(yè)機(jī)器人系統(tǒng)中,工作坐標(biāo)系用來(lái)確定工件的位姿。工件坐標(biāo)系由uframe(用戶(hù)坐標(biāo)框架)和oframe(目標(biāo)坐標(biāo)框架)組成,oframe可根據(jù)需要實(shí)時(shí)調(diào)整。創(chuàng)建工作坐標(biāo)系時(shí),需確定坐標(biāo)原點(diǎn)和坐標(biāo)方向[15-20]。
為了完成芯片的分類(lèi)分揀,首先工業(yè)機(jī)器人要知道待抓取芯片的位姿信息,以保證準(zhǔn)確地抓取芯片;其次要知道芯片被抓取后的目標(biāo)位姿,以保證能夠準(zhǔn)確地放置芯片[1]。由于芯片位置不固定,因此機(jī)器人抓取芯片前必須先知道抓取點(diǎn)Ppick的位置,以調(diào)整合適的姿態(tài)完成任務(wù)。
本系統(tǒng)中創(chuàng)建了兩個(gè)工件坐標(biāo):Workobject_1和Workobject_2。Workobject_1是基本工件坐標(biāo),工件坐標(biāo)uframe和oframe框架不需要調(diào)整,作為除抓取點(diǎn)外其他點(diǎn)的基準(zhǔn),可取輸送鏈上固定的一點(diǎn)為坐標(biāo)原點(diǎn),方向與大地坐標(biāo)系方向一致。對(duì)應(yīng)的工件坐標(biāo)數(shù)據(jù)位為:
Workobject_1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[399.364,-305.36,162.956],[1,0,0,0]]];
Workobject_2是抓取點(diǎn)Ppick的工作坐標(biāo),可取輸送鏈末端抓取工位中點(diǎn)為坐標(biāo)原點(diǎn),方向與大地坐標(biāo)系方向一致。對(duì)應(yīng)的工件坐標(biāo)數(shù)據(jù)為:
Workobject_2:=[FALSE,TRUE,"",[[455.263,-292.836,151.141],[0.347709,0.465871,-0.808289,0.0934435]],[[148.132,-50.1861,0],[0.999663,0,0,0.025956]]];
Ppick不是一個(gè)固定點(diǎn),隨待抓取芯片位姿的變化而變化。因此Workobject_2坐標(biāo)框架需要根據(jù)相機(jī)識(shí)別出的芯片位姿信息實(shí)時(shí)更新。在Smart組件設(shè)計(jì)時(shí)通過(guò)RapidVariable子組件已經(jīng)將芯片位姿數(shù)據(jù)發(fā)送給機(jī)器人的pos_xy和angle變量。pos_xy變量用于更新Workobject_2的工作坐標(biāo)框架,angle變量用于機(jī)器人使用MoveL的RelTool功能更新旋轉(zhuǎn)姿態(tài)。由于angle是弧度值,需先利用公式(1)轉(zhuǎn)換為姿態(tài)值。 坐標(biāo)框架Workobject_2的更新代碼見(jiàn)3.3節(jié)。
以機(jī)器人分揀一塊合格品芯片為例,部分關(guān)鍵代碼及說(shuō)明如下:
PROC Path_10()
MoveJ Phome,v200,z0,GripWObj:=Workobject_1;
WaitTime 1;
//輸出信號(hào)觸發(fā)輸送鏈輸出芯片
PulseDOPLength:=0.2, do1;
WaitDI di1, 1;//等待芯片滑動(dòng)至抓取工位
//運(yùn)動(dòng)到PpickReady點(diǎn),準(zhǔn)備抓取
MoveJ PpickReady,v200,z0,GripWObj:=Workobject_1;
SetDO do2,1;//觸發(fā)抓取Smart組件
WaitDI do2, 1;
WaitTime 2;
//通過(guò)更新工件坐標(biāo)來(lái)更新抓取點(diǎn)位置
Workobject_2u.oframe.trans := pos_xy;
//弧度轉(zhuǎn)換為姿態(tài)
angle:= angle*180/3.14;
//根據(jù)芯片姿態(tài)更新抓取的姿態(tài)
MoveL RelTool(Ppick,0,0,0Rz:=angle), v200, z0, GripWObj:=Workobject_2; WaitTime 0.5;
MoveL PpickReady,v200,z0,GripWObj:=Workobject_1;
// 放置芯片
If(result == 1){//合格品
MoveJ PplaceNReady,v200,z0,GripWObj:=Workobject_1;
MoveL PplaceNormal,v200,z0,GripWObj:=Workobject_1;
MoveL PplaceNReady,v200,z0,GripWObj:=Workobject_1;
}else
{
MoveJ PplaceNReady,v200,z0,GripWObj:=Workobject_1;
MoveL PplaceNormal,v200,z0,GripWObj:=Workobject_1;
MoveL PplaceNReady,v200,z0,GripWObj:=Workobject_1;
}
//回到home點(diǎn)
MoveL Phome,v200,z0,GripWObj:=Workobject_1;
ENDPROC
編寫(xiě)機(jī)器人分揀代碼、設(shè)置好工作站邏輯后,點(diǎn)擊仿真開(kāi)始按鈕,系統(tǒng)能夠?qū)崿F(xiàn)自動(dòng)分揀芯片的功能[12-18]。但芯片下料速度、輸送鏈傳輸速度、相機(jī)檢測(cè)速度、工業(yè)機(jī)器人分揀速度之間不合理,導(dǎo)致機(jī)器人長(zhǎng)時(shí)間等待的現(xiàn)象,因此需要對(duì)系統(tǒng)各模塊間節(jié)拍進(jìn)行調(diào)節(jié)。
如前所示,芯片下料效果是通過(guò)Smart組件的Source子組件實(shí)現(xiàn)的,速度由開(kāi)始信號(hào)DiMove決定;輸送鏈傳輸效果是通過(guò)LineMover子組件實(shí)現(xiàn)的,速度可調(diào)節(jié);相機(jī)檢測(cè)速度及數(shù)據(jù)發(fā)送是通過(guò)RapidVariable子組件實(shí)現(xiàn)的,速度由發(fā)送信號(hào)DiTransmit決定;機(jī)器人分揀速度主要由機(jī)器人移動(dòng)速度和程序運(yùn)行速度決定,速度可調(diào)節(jié)。仿真發(fā)現(xiàn),設(shè)置芯片下料速度為500 ms/塊,設(shè)置輸送鏈傳輸速度為1 000 mm/s,設(shè)置相機(jī)檢測(cè)周期及數(shù)據(jù)發(fā)送周期為50 ms,機(jī)器人分揀周期為500 ms時(shí),總輸送鏈長(zhǎng)度為1 m。分揀生產(chǎn)線的效率是最高的。當(dāng)機(jī)器人分揀完上一塊芯片時(shí),下一塊芯片剛好達(dá)到抓取工位。生產(chǎn)中可根據(jù)按比例調(diào)節(jié)各模塊速度。
利用仿真成果指導(dǎo)現(xiàn)場(chǎng)生產(chǎn):
1)將工業(yè)機(jī)器人代碼下載至現(xiàn)場(chǎng)機(jī)器人;
2)由于仿真和現(xiàn)場(chǎng)的區(qū)別,需要根據(jù)現(xiàn)場(chǎng)布局重新示教機(jī)器人的7個(gè)工作點(diǎn);
3)修改工件坐標(biāo)Workobject_1和Workobject_2至輸送鏈起點(diǎn)處。
4)根據(jù)仿真節(jié)拍調(diào)節(jié)現(xiàn)場(chǎng)各模塊速度:下料機(jī)速度為500 ms/塊,PLC控制輸送鏈傳輸速度為1 000 mm/s,相機(jī)拍照速度為80 fps,相機(jī)數(shù)據(jù)發(fā)送周期為50 ms,機(jī)器人TCP速度為1 000 mm/s;
如圖7所示,機(jī)器人能夠根據(jù)相機(jī)識(shí)別結(jié)果將瑕疵品分揀至瑕疵品輸送鏈,將合格品分揀至合格品輸送鏈。經(jīng)多次實(shí)驗(yàn)得到表2數(shù)據(jù),可以看出生產(chǎn)線的分揀正確率均在99.5%以上,達(dá)到工業(yè)生產(chǎn)要求。當(dāng)瑕疵品數(shù)量增加時(shí),系統(tǒng)分揀正確率有所下降,經(jīng)分析發(fā)現(xiàn)是機(jī)器視覺(jué)對(duì)瑕疵品的識(shí)別率降低導(dǎo)致。因此后續(xù)還需要進(jìn)一步完善機(jī)器視覺(jué)算法以提高分揀效率。
圖7 實(shí)驗(yàn)結(jié)果
瑕疵品數(shù)量/塊合格品數(shù)量/塊分揀時(shí)間/秒分揀正確率/%20050035599.830060045899.640070055999.5
本文利用虛擬仿真技術(shù)對(duì)芯片智能分揀生產(chǎn)線進(jìn)行設(shè)計(jì),在RobotStudio軟件中建立了工作站模型、通過(guò)smart組件設(shè)計(jì)和機(jī)械裝置創(chuàng)建、機(jī)器人路徑規(guī)劃和程序設(shè)計(jì)等工作實(shí)現(xiàn)了芯片下料、芯片傳輸、相機(jī)檢測(cè)、智能分揀等生產(chǎn)過(guò)程。解決了生產(chǎn)過(guò)程中工業(yè)機(jī)器人與芯片位姿不一致、生產(chǎn)線節(jié)拍協(xié)調(diào)等問(wèn)題。最后利用虛擬仿真成果指導(dǎo)現(xiàn)場(chǎng)生產(chǎn):將仿真代碼下載至現(xiàn)場(chǎng)工業(yè)機(jī)器人,根據(jù)仿真節(jié)拍調(diào)整現(xiàn)場(chǎng)生產(chǎn)節(jié)拍。實(shí)驗(yàn)結(jié)果表明,生產(chǎn)線的分揀正確率達(dá)到99.5%以上,滿(mǎn)足工業(yè)生產(chǎn)要求。