張驍哲,劉成清
(西南交通大學 土木工程學院,成都 610031)
制藥企業(yè)在藥片的生產(chǎn)加工過程中,不可避免地會產(chǎn)生各種缺陷,例如斷裂、缺角、漏印、異色等,一些生產(chǎn)企業(yè)仍然采用人工肉眼觀察的方法分揀出有缺陷的藥片[1-2]。由于檢驗人員的視覺疲勞,以及對細微部分的識別局限,很容易造成漏檢,并且檢驗速度很慢[3-4]。人工分揀缺陷藥片,不但效率低,而且很難保證產(chǎn)品的整批質量。對缺陷藥片進行高效揀出、高合格率出廠,是目前中小型制藥企業(yè)面臨的低成本智能制造難題。雖然國外已經(jīng)有專用的藥片檢驗設備,但幾百萬元甚至上千萬元的售價過于昂貴。國內專用藥片檢驗設備的技術受到國外核心技術的封鎖,進展較慢,所研發(fā)的專用藥片檢驗與分揀設備同樣也是價格昂貴,而且通用性差、適用范圍也不理想。
研制缺陷藥片智能分揀機器人,代替人工分揀,對于提高生產(chǎn)效率和產(chǎn)品質量具有重要意義。目前專用檢驗設備不能普遍被采用,一個重要瓶頸問題就是設備成本過高問題,所以研制成本低廉的機器人分揀系統(tǒng),對于中小型制藥企業(yè)實現(xiàn)低成本智能制造、代替人工分揀以及降低人工成本,意義重大。已有一般設備雖然可以實現(xiàn)缺陷藥片的檢驗,但其專用性的特點注定了適用產(chǎn)品型號單一[5],而且用戶不能進行二次開發(fā)以滿足不同工況的使用需求。所以,本文提出的智能分揀機器人技術適用范圍廣、通用性好、智能化程度高,對于在中小企業(yè)中推廣低成本應用具有重要意義。
分揀機器人系統(tǒng)由關節(jié)型機器人本體、電動手爪、傳送帶、控制器、驅動器、電機、工業(yè)相機、計算機及視覺軟件系統(tǒng)等組成。視覺系統(tǒng)通過機器視覺[6]來獲取目標物體的特征點,由機器人根據(jù)目標位置,完成快速動態(tài)的抓取任務。將相機布置在藥片輸送帶上方,機器人位于傳送帶側面。藥片在圖像識別區(qū)時,經(jīng)相機采集圖像,圖像經(jīng)視覺處理系統(tǒng)處理后,將得出的輪廓和位置等數(shù)據(jù)結果傳給機器人控制器,機器人對其進行分類抓取,并放在藥片規(guī)定的終檢區(qū)域。智能分揀機器人系統(tǒng)整體原理設計縮比結構圖見圖1所示。
圖1 機器人系統(tǒng)組成原理結構圖
為了對缺陷藥片進行快速定位,對拍攝到的圖像進行預處理是必不可少的工作。基于Halcon視覺開發(fā)平臺[7]進行圖像處理,包括圖像分割、區(qū)域連通、圓擬合、獲得中心等[8-9]。對將要分揀的藥片進行目標檢測時,首先利用gen_rectangle1對需要分析的區(qū)域進行選定。目前,對于目標物體的檢測方法主要有:幀間差分法、光流法、背景減除法和閾值分割法[10-11]。通過對比和結合實際藥片分揀工作環(huán)境,最終選擇了簡單易行的閾值分割法中的固定閾值分割法。采用thread 函數(shù)對圖像進行閾值分割。處理函數(shù):threshold(ho_Image, out ho_Region,grayValueMin,grayValueMax);這個函數(shù)的輸入為圖片即用戶想要處理的圖像,輸出的區(qū)域即想要得到的特征區(qū)域,兩個參數(shù)grayValueMin與grayValueMax 是需設置的最小與最大閾值,這個值的選取通過圖片的灰度直方圖獲得。然后利用物體的圓度和面積腐蝕出圓形結構,最后得到物體的坐標中心點,具體如下:
grab_image(Image,FGHandle) //獲取圖像
dev_display(Image) //顯示圖像
gen_rectangle1 (ROI, Row111, Column111, Row222, Column222) //選擇區(qū)域
reduce_domain (Image, ROI, ImageROI) //減少到選擇的區(qū)域
threshold(ImageROI, write, 131, 255) //閾值分割
fill_up_shape(write, RegionFillUp, 'area', 1, 100) //形狀填充
opening_circle(RegionFillUp, RegionOpening, 1)
connection(RegionOpening,SingleBalls) //區(qū)域連通
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.8, 1.0) //用圓度區(qū)分
select_shape(IntermediateBalls, SelectedRegionsWhite, 'area', 'and', 7000, 10000) //用面積區(qū)分
erosion_circle(SelectedRegionsWhite, RegionErosionWhite, 3.5) //腐蝕一個圓形結構基礎的一個區(qū)域
dev_display(RegionErosionWhite)
count_obj(RegionErosionWhite, NumberWhite) //得到物體的個數(shù)
area_center(RegionErosionWhite, AreaWhite, Row1, Column1) //獲得物體中心點。
分揀機器人系統(tǒng)所設計的關節(jié)型機器人具有4個旋轉關節(jié),從底座至末端依次為0~3關節(jié) ,其中1~3關節(jié)軸線相互平行,0~2的3個關節(jié)由電機驅動,第4個關節(jié)為被動關節(jié),受第2個關節(jié)和第3個關節(jié)電機控制,保持自身姿態(tài)為0°。因此,被動關節(jié)4運動的末端執(zhí)行器工具保持水平,即保持自身與水平面平行。利用D-H坐標變換法[12]研究機器人運動學,確定機器人各連桿之間的坐標系,建立坐標系如下圖2所示。
圖2 機器人連桿坐標系
關節(jié)軸i-1和關節(jié)軸i之間的公垂線的長度為ai,即為連桿長度;垂直于ai所在的平面內的兩軸線之間的夾角用連桿扭角αi表示;兩條公法線ai-1與ai為兩連桿之間的偏置用di表示;兩條公法線ai-1與ai之間的夾角為關節(jié)角,用θi表示。首先對機器人每一個桿件上分別固定一個坐標系進行編號,基座即為桿件0號,坐標系{0},第一個有相對運動的剛體為桿件1,其坐標系為{1},以此類推。
(1)中間連桿坐標系{i}:
坐標軸Zi:與關節(jié)軸i+1共線,指向任意;
坐標軸Xi:沿連桿i兩關節(jié)軸線之公垂線,指向由i關節(jié)到i+l關節(jié);
坐標軸Yi:按照右手法則確定。
(2)首、末連桿坐標系:
基礎坐標系{0}與基座固接,常用它來描述操作臂與其他連桿的運動。
機器人系統(tǒng)原理樣機的縮比機械結構尺寸如圖3所示(單位mm)。
圖3 機器人系統(tǒng)原理縮比結構圖
根據(jù)圖2建立的機器人的連桿坐標系,從而確定連桿參數(shù)表。
表1 連桿參數(shù)表
(1)
其中:ci= cosθi,si=sinθi,cij=cos(θi+θj),sij=sin(θi+θj)。可以求出i關節(jié)相對i+1關節(jié)的變化矩陣。
(5)
可得位姿方程為:
(6)
根據(jù)機器人的D-H參數(shù),建立如下MATLAB程序:L1=link([-pi/2 65 0 90],'standard');
L2=link([0 135 -pi/2 0],'standard');
L3=link([0 170 pi/2 0],'standard');
r=robot({L1 L2 L3 });
r.name='Robot';
drivebot(r)
為了驗證變換矩陣的準確性,在MATLAB中給定初始角度:θ1=0,θ2=-pi/2,θ3= pi/2,得到末端坐標點X=235,Y=0,Z=225,與機器人結構尺寸一致,也驗證了上述算法的正確性。
通過MATLAB機器人工具箱,輸入關節(jié)位置后,得到機器人的仿真圖如圖4所示。
圖4 機器人正解仿真圖
在藥片分揀實際工程中,是根據(jù)視覺系統(tǒng)識別的藥片位置規(guī)劃機器人末端運動位置和姿態(tài),根據(jù)藥片位置計算每個關節(jié)角度的相應值,驅動各個關節(jié)電機運動,完成運動軌跡,求解各個關節(jié)角度值的過程稱為逆運動學。
求解關節(jié)變量θ1,根據(jù)式(6)可得:
(7)
從而得出:
(8)
其中:u14=a3c23+a2c2,u24=a3s23+a2s2,u34=0。
根據(jù)方程兩端的元素(3,4)(1,4)和(2,4)分別對應相等,得出如下方程:
-s1px+c1py=0
(9)
(10)
根據(jù)式(9)得到θ1:
θ1=Atan2(py,px)
(11)
根據(jù)式(10)的聯(lián)立方程,可得到θ2和θ3的值。
得出:
(12)
根據(jù)式(12)已求出θ3的值,將式(10)展開,求解θ2。得到θ2的值:
得出:
(13)
從而得出:
θ4=-(θ2+θ3)
(14)
因此,根據(jù)藥片位置,得到通過運動學逆解計算的機器人各關節(jié)的運動角度θ1、θ2、θ3和θ4的值。
根據(jù)機器人自身結構特征及逆解特點,通過Halcon程序,利用atan2函數(shù)可以確定θ1的運動角度。其次對θ2進行判斷,選擇與上一路徑點相近的關節(jié)變量θ2,確定θ2以后,依次類推求解θ3。利用“最短行程”求解降低機器人運動能量消耗、縮短運動時間。對運動學逆解的實時性選擇優(yōu)化,大大提高了機器人的工作效率。
機器人手爪與機器人末端的位置關系如圖5所示,可以看出,T_03和T_04的位置關系為:
X0=X1-L×cos(β1)
(15)
Y0=Y1-L×sin(β1)
(16)
圖5 機器人手爪與末端的位置關系圖
相機安放于固定位置,當藥片運行到相機視野范圍時,相機進行拍照。經(jīng)實驗,機器人手爪在相機坐標系下像素點為(1 069,1 314)。被抓取的物體位置在視野中是任意的,設為(Row1[0],Column1[0]),同時測得Column方向上65.4個像素代表10 mm,Row方向上63.9個像素代表10 mm。由于機器人電動手爪在圖像中的位置為定值,這樣即可得到物體與手爪在實際坐標系下的相對位置。關系如下:
CharX:=(round( -(Row1[0]-1069)/63.9))*10
CharY:=(round(-(Column1[0]-1314)/65.4))*10
根據(jù)圖3,得到T_04初始的位置為:
X=235+50=285,Y=0,Z=225-14-85=126(其中85是指電動手爪的高度)。在實現(xiàn)物體快速抓取的過程中,相機采集到物體圖像進行分析后,得出CharX和CharY這兩個偏移量,即可計算出:
X1=285+CharX
Y1=0+CharY
根據(jù)式(15)和式(16)得到機器人T_03的位置(X0和Y0),再經(jīng)過逆解求得每個軸當前的角度,記為theta1、theta2、theta3。
根據(jù)電機轉1圈發(fā)20000個脈沖,可以得到電機轉1°發(fā)56個脈沖。每個軸電機應發(fā)的脈沖數(shù)為:
Pulse1=round(theta1*56)
Pulse2=round((90+theta2)*56)
Pulse3=round(theta3*56)
其中,round是取整,theta1-theta3是抓取位置時電機的角度,并不是從原點到抓取位置所需走過角度值。因此需要根據(jù)當前角度值減去建模時的初始值(0,-90,90)。并且根據(jù)機器人特殊的機械結構,theta3等于theta2與theta3的和。發(fā)送給控制器的代碼如下:
send_data (Socket, 'czc', [10,' MOVE',13], To)
send_data (Socket, 'czc', [10,'SH',13], To)
send_data (Socket, 'czc', [10,'AC320,320,320',13], To) //每個軸的加速度值
send_data (Socket, 'czc', [10,'DC320,320,320',13], To) //每個軸的減速度值
send_data (Socket, 'czc', [10,'SP220,220,220',13], To) // 每個軸的速度值
send_data(Socket,'czc', [10,'PR'+ords(Pulse1)+','+ords(-Pulse2)+','+ords(Pulse3),13], To) //發(fā)送每個軸的脈沖數(shù)
send_data (Socket, 'czc', [10,'BGXYZ',13], To) //開始運行
send_data (Socket, 'czc', [10,'AMXYZ',13], To) //等待動作完成
系統(tǒng)上電完成后,機器人末端先到達預設定的位置等待,傳送帶上放置藥片啟動運行,相機開始拍照識別,當進入相機視野范圍并識別出傳送帶上的缺陷藥片后,機器人控制器發(fā)送指令,控制傳送帶停止,機器人開始運行抓取。機器人執(zhí)行端運動到待分揀的藥片位置后,電動手爪閉合抓取。抓取完成后,機器人到達指定藥片放置位置,電動手爪自動松開釋放,機器人回到初始位置,以此循環(huán)抓取缺陷藥片。視野范圍內無缺陷藥片時,機器人運動在初始原點位置等待下一次的識別與抓取。若傳送帶無缺陷藥片,傳送帶一直運行,機器人無動作,完整藥片流放到規(guī)定區(qū)域。
根據(jù)上述的方法研究,機器人分揀缺陷藥片的實現(xiàn)程序在Halcon視覺開發(fā)軟件平臺中完成,整個程序包括圖像識別算法、機器人正逆解算法、電機驅動、數(shù)據(jù)通訊與交互等。PC端與機器人控制器創(chuàng)建通訊連接使用open_socket_connect('192.168.1.2', 3000, 'protocol', 'TCP4', Socket),打開相機使用open_framegrabber('GenICamTL', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'default', 'default', 'default', -1, 1, FGHandle)。
機器人工作時,首先從任意位置回到原點初始位置,傳送帶運行,相機開始采集圖像,在Halcon中利用第2節(jié)圖像分析方法進行圖像處理與分析,缺陷藥片圖像處理算法與檢測分析處理結果如圖6所示。
從圖6右下角可以看出已檢測出缺陷藥片,藥片在圖像坐標系下的位置為(572,1423),從而可以計算得出藥片所在位置處機器人手爪的X1和Y1數(shù)值。
X1=362.778
Y1=-16.6667
根據(jù)式(15),(16)可以計算出機器人末端處的位置,Z0的高度根據(jù)傳送帶的高度得出,按照機器人可抓取到藥片末端的高度為195 mm,由此可得:
X0=314,Y0=-14,Z0=195
經(jīng)逆解式(11),(12),(13)可以得到每個軸相對于初始位置轉動的角度,從而可得每個軸應該發(fā)送的脈沖數(shù),然后根據(jù)第5節(jié)的控制指令,將數(shù)據(jù)發(fā)送到機器人控制器中,驅動電機進行運動,以此計算驅動機器人進行缺陷藥片分揀工作,脈沖數(shù)計算結果如下:
Pulse1=-147,Pulse2=2016,Pulse3=79
經(jīng)實驗驗證與反復測試,通過以上算法,機器人可以準確定位識別抓取藥片,并實現(xiàn)智能分揀功能。
針對中小型制藥企業(yè)對缺陷藥片準確高效且低成本分揀的迫切需求,研究了缺陷藥片視覺智能識別與定位技術、關節(jié)機器人位置和姿態(tài)解算技術、機器人系統(tǒng)結構優(yōu)化設計技術等關鍵技術,研制出具有缺陷藥片智能識別定位與分揀功能的機器人原理縮比樣機,通過對藥片分揀的實際驗證,具有成本低、工作范圍大、智能識別定位準確、通用性好的特點,具備缺陷藥片智能識別定位與分揀功能,為中小型制藥企業(yè)提高藥片分揀效率和藥品質量、降低成本奠定了技術基礎。