□ 陳葉凱 □ 梁冬泰 □ 陳特歡 □ 彭文飛 □ 崔 杰
1.寧波大學(xué) 機械工程與力學(xué)學(xué)院 浙江寧波 315211 2.浙江華朔科技股份有限公司 浙江寧波 315000
在現(xiàn)代化制造業(yè)中,復(fù)雜零件廣泛用于自動化設(shè)備,結(jié)構(gòu)特征復(fù)雜多樣,在機器中價值高,品種多,并且要求在機器運行過程中穩(wěn)定安全可靠。對于該類零件,須嚴格保證每個零件的質(zhì)量,即須對每個零件的每個特征進行檢測。
由于復(fù)雜零件特征多樣且分布不均勻,使得檢測任務(wù)繁重,僅依靠常規(guī)的人工檢測,通常導(dǎo)致檢測效率低下,同時由于零件種類繁多,使得檢測過程復(fù)雜。設(shè)計一種機器人視覺檢測系統(tǒng),替代人工對零件特征進行檢測,能夠在很大程度上提升檢測效率。
機器人視覺檢測的關(guān)鍵點在于獲得無碰撞最優(yōu)路徑,需要對機器人的檢測路徑進行規(guī)劃。機器人路徑規(guī)劃過程主要包括檢測目標建模、優(yōu)化目標函數(shù)定義、目標點遍歷尋優(yōu)三個部分。
對檢測目標在空間中的位姿進行建模,常用的建模方法有可視圖法、拓撲網(wǎng)絡(luò)法、柵格法等。其中,柵格法將檢測目標分割成一系列的網(wǎng)格,根據(jù)網(wǎng)格內(nèi)是否包含檢測目標,對網(wǎng)格進行劃分。張瑋等[1]采用均勻柵格法進行二維平面建模,這種方法空間利用率低下,過多占用無障礙物空間,若將柵格劃分過細,則會導(dǎo)致計算效率低下。優(yōu)化目標函數(shù)在不同場景下有不同定義,王宇等[2]將總行程作為三維地形下的優(yōu)化目標函數(shù)。機器人視覺檢測路徑不同于三維地形中的移動,需同時考慮位姿變換,總行程無法準確描述目標點之間的變化。
對目標點遍歷尋優(yōu)為典型的旅行商問題,解決算法主要有遺傳算法、蟻群算法等[3-12]。蟻群算法廣泛用于解決旅行商問題、避障、約束滿足條件問題等。在求解旅行商問題時,隨著目標點數(shù)量的增加,計算效率下降,為此,不少研究者對蟻群算法做出了改進。卜新蘋等[7]采用非均勻柵格法對環(huán)境進行建模,用閔可夫斯基距離對障礙物進行邊界拓展后,將移動物體視為質(zhì)點,根據(jù)建模結(jié)果應(yīng)用蟻群算法進行路徑規(guī)劃。使用非均勻柵格法對障礙物進行二維投影,忽略了障礙物的高度特征,難以適用于三維空間避障環(huán)境。Duan Haibin等[9]使用差分進化算法改進蟻群算法規(guī)劃三維路徑,將螞蟻分成若干組,使用各組螞蟻產(chǎn)生的信息素矩陣,對路徑上信息素的更新策略進行改進,但是只對三維路徑中的歐氏距離進行優(yōu)化,優(yōu)化過程中沒有考慮物體姿態(tài)的變化。
在綜合上述研究優(yōu)缺點后,筆者提出一種基于分組蟻群算法的復(fù)雜零件視覺檢測機器人路徑規(guī)劃算法。首先基于非均勻二叉樹原理和檢測目標的投影與高度特征,對機器人運動的三維空間進行建模。然后根據(jù)目標點位姿變換的特點,采用一種優(yōu)化目標函數(shù)。最后基于分組蟻群算法求解圖像采集的最優(yōu)路徑,根據(jù)手眼標定結(jié)果獲得各采集點的機器人末端位姿,實現(xiàn)零件的圖像采集。這一算法能夠?qū)崿F(xiàn)機器人在三維空間中位姿變換的路徑規(guī)劃,相比基本蟻群算法具有更高的計算效率,相比均勻柵格法具有更優(yōu)的目標空間建模?;诜纸M蟻群算法的復(fù)雜零件視覺檢測機器人路徑規(guī)劃流程如圖1所示。
▲圖1 復(fù)雜零件視覺檢測機器人路徑規(guī)劃流程
為避免機器人在遍歷過程中與檢測目標碰撞,對檢測目標建模,在空間中描述檢測目標。筆者基于二叉樹分割六面體包絡(luò)法對檢測目標進行建模,具體思路為,將檢測目標在高度、長度方向分解為多個實體,用多個六面體對各實體進行包絡(luò)。
目標空間A為目標在高度方向上的最小外接六面體。獲得最小外接六面體的具體方法為,獲得檢測目標在高度方向上的投影,使用外接矩形包圍投影,并通過不斷變換外接矩形方向,共得到q個外接矩形。取最小的外接矩形作為目標空間底面,以此底面從目標高度最低點到最高點掃掠,得到六面體目標空間。
目標空間不應(yīng)占用過多的機器人運動空間,以體積占比ρ來衡量所獲目標空間的質(zhì)量。
ρ=V1/V2
(1)
式中:V1為檢測目標體積;V2為目標空間體積。
檢測目標體積包括填補內(nèi)部特征。
為得到滿足體積占比要求的目標空間A,在高度和長度方向上用非均勻二叉樹分割,不斷對模型進行分割,計算分割后的體積占比,以體積占比作為分割結(jié)束指標。設(shè)置最大分割次數(shù),直到體積占比滿足要求或到達最大分割次數(shù)。
目標空間為參數(shù)已知的六面體,定義障礙物路徑為穿過目標一個或多個面的路徑。
根據(jù)建模過程,所獲六面體各面不一定與坐標系各面平行,存在角度δ旋轉(zhuǎn)及Y軸方向yp偏置。在進行障礙物判斷時,對平面及目標點同時旋轉(zhuǎn)-δ。障礙物路徑判斷如圖2所示。圖2中,A1為某個面,A2為旋轉(zhuǎn)-δ,并平移-yp后得到的平面,b1、b2為a1、a2跟隨A1平面變換后的目標點,zmin、zmax分別為A1平面Z軸方向的最小值和最大值,xmin、xmax分別為A2平面X軸方向的最小值和最大值。
▲圖2 障礙物路徑判斷
在旋轉(zhuǎn)變換以后,只需根據(jù)簡單的坐標關(guān)系,即可確定路徑與目標空間平面的關(guān)系。
(1) 根據(jù)目標點b1、b2確定路徑方程:
(x-x1)/U=(y-y1)/V=(z-z1)/W
(2)
式中:U、V、W依次為路徑在X軸、Y軸、Z軸方向上的向量;(x,y,z)為路徑上點b1和點b2之間點的坐標;(x1,y1,z1)為點b1的坐標。
(2) 令路徑方程中y為0,求出路徑與目標空間平面所在平面的交點坐標(x,y,z)。
(3) 若xmin 利用路徑與目標空間平面的關(guān)系,依次判斷路徑與目標空間六面的關(guān)系。路徑與某個面相交,則判定當前路徑為障礙物路徑。路徑與六個面都不相交,則判定為無障礙物路徑。 機器人的遍歷過程同時存在位置變換和姿態(tài)變換,并共同影響路徑結(jié)果。筆者提出采用向量和優(yōu)化目標函數(shù)來描述檢測裝置在機器人基坐標系下目標點之間的變換。 檢測裝置在兩個目標點之間變換的直線歐氏距離d(ai,aj)為位置變換單目標函數(shù),ai、aj為檢測裝置在目標點i處、j處的中心,向量pij為位置變換方向。 (3) pij=[xi-xjyi-yjzi-zj]T (4) 式中:(xi,yi,zi)、(xj,yj,zj)分別為ai和aj在機器人基坐標系下的坐標。 檢測裝置在每個目標點具有特定的姿態(tài),為描述檢測裝置的姿態(tài),檢測裝置在目標點i處的姿態(tài)向量λi定義為從檢測目標上檢測點中心αi指向檢測裝置中心ai方向上的單位向量。 λi=[xi-xαiyi-yαizi-zαi]T/ηi (5) (6) 式中:(xαi,yαi,zαi)為檢測目標上檢測點αi在機器人基坐標系下的坐標;ηi為姿態(tài)向量的模。 檢測裝置在目標點姿態(tài)相同的情況下,目標點i、j之間的歐氏距離即可表示優(yōu)化目標。在綜合考量位姿變換后,將各目標點在姿態(tài)向量方向偏移k個單位長度,得到新的目標點a′i,k為姿態(tài)變換相對程度。當檢測裝置在目標點i處、j處的姿態(tài)一致時,pij等于p′ij,相當于只進行位置變換。目標點間姿態(tài)相同時向量和如圖3所示。 存在λi、λj與歐氏向量夾角同時為銳角的情況,此時滿足銳角條件,對λi、λj同時取反向,以避免總優(yōu)化 ▲圖3 目標點間姿態(tài)相同時向量和 目標減小。λj為檢測裝置在目標點j處的姿態(tài)向量。滿足銳角條件時向量和如圖4所示。 ▲圖4 滿足銳角條件時向量和 (7) (8) p′ij=[xa′i-xa′jya′i-ya′jza′i-za′j]T (9) (10) 式中:(xa′i,ya′i,za′i)、(xa′j,ya′j,za′j)分別為新目標點a′i和a′j的坐標。 求ya′i、za′i、xa′j、ya′j、za′j與xa′i類似,當位置變換較大時,k取較小值,反之,k取較大值。在得到向量和后,使用目標向量和的模γij作為優(yōu)化目標。 路徑規(guī)劃的核心在于獲取最優(yōu)的遍歷路徑?;谏鲜瞿繕丝臻g建模和優(yōu)化目標函數(shù),筆者提出一種分組蟻群算法來找尋最優(yōu)路徑。分組蟻群算法在相同的條件下,經(jīng)驗證具有更快的尋優(yōu)速度。 蟻群算法中,螞蟻在當前節(jié)點選擇下一節(jié)點,依據(jù)路徑上的信息素濃度和啟發(fā)因子進行選擇,在比較選擇各未訪問節(jié)點的概率γij后,采用輪盤賭選擇下一訪問節(jié)點。 (11) ξij=1/γij (12) 式中:τij為檢測裝置從目標點i到j(luò)路徑上的信息素濃度;ξij為檢測裝置從目標點i到j(luò)路徑上的啟發(fā)因子;s、t分別為選擇路徑時信息素和啟發(fā)因子的相對重要度;T為當前檢測裝置的目標點集合。 在蟻群算法中,螞蟻在每次遍歷過程中會在轉(zhuǎn)移路徑上留下信息素。螞蟻在路徑上留下的信息素濃度與路徑長度成反比,每輪迭代完成后,信息素更新為上一輪信息素和本輪迭代蟻群留下的信息素的疊加。 (13) Δτh(i,j)=Q/Lh (14) 應(yīng)用前述障礙物路徑判斷對路徑分類后,設(shè)置障礙物路徑上的啟發(fā)因子為0,即螞蟻在選擇該路徑時的概率為0,以避開對障礙物路徑的訪問。 在蟻群算法中,設(shè)置蟻群規(guī)模為m后,螞蟻根據(jù)路徑上的信息素和啟發(fā)因子,各自完成對目標點的遍歷。在此基礎(chǔ)上,筆者提出分組蟻群算法,蟻群以分組的方式完成遍歷。將螞蟻分為g組,各組中各螞蟻各自完成迭代,g組螞蟻完成遍歷表示一輪迭代完成。與基本蟻群算法相比,在消耗相同資源的情況下,分組蟻群算法具有更高的尋優(yōu)效率。 各組蟻群完成尋優(yōu)以后,根據(jù)路徑長度對信息素矩陣進行排序,得到各組信息素矩陣τ1、τ2、...、τg,滿足L1 τ=v1τ1+v2τ2+...+vgτg (15) v1+v2+...+vg=1 (16) v1>v2>...>vg>0 (17) 式中:τ為最終信息素矩陣;v1、v2、...、vg為各組信息素矩陣獎懲因子。 分組蟻群算法具體流程為:將螞蟻分為g組后,各組獨立進行目標點遍歷;在各組完成一輪迭代后,進行信息素更新,并重新開始迭代,直到迭代次數(shù)達到最大迭代次數(shù)I。 適度函數(shù)用于評價算法對于應(yīng)用場景的適用性。針對多樣性復(fù)雜零件檢測過程,評價指標主要為遍歷路徑長度和算法運算效率。遍歷路徑長度決定單次遍歷的時間,算法運算效率決定對單個檢測進行路徑規(guī)劃的時間。在綜合考慮上述因素以后,將適度函數(shù)S定義為: (18) w1+w2=1 (19) 式中:w1、w2分別為路徑長度權(quán)重和尋優(yōu)時間權(quán)重,L、T分別為得到的路徑長度和尋優(yōu)時間,轉(zhuǎn)換至相同數(shù)量級;C1、C2分別為路徑長度適度常數(shù)和運算時間適度常數(shù)。 ▲圖5 手眼標定 筆者選用發(fā)動機缸體作為算例檢測目標,硬件平臺為戴爾臺式機,內(nèi)存為8 GiByte。對發(fā)動機缸體表面特征進行分析以后,采用所提出的檢測目標空間進行建模,應(yīng)用目標函數(shù)、分組蟻群算法對發(fā)動機缸體表面的122個檢測點進行路徑規(guī)劃。發(fā)動機缸體如圖6所示。 ▲圖6 發(fā)動機缸體 發(fā)動機缸體表面檢測目標空間建模通過非均勻二叉樹分割得到。為驗證方法的可行性,與均勻柵格法進行對比。為準確且高效地計算障礙物路徑,設(shè)置體積占比為0.6,最大分割次數(shù)為5,旋轉(zhuǎn)步長為1°。非均勻二叉樹分割的結(jié)果為,在長度方向上非均勻分割六份,在高度方向上均勻分割四份。均勻柵格法分割結(jié)果為,在長度方向上均勻分割五份,在高度方向上均勻分割四份。發(fā)動機缸體非均勻二叉樹分割法建模如圖7所示,發(fā)動機缸體均勻柵格法建模如圖8所示,發(fā)動機缸體不同建模方法結(jié)果對比見表1。 ▲圖7 發(fā)動機缸體非均勻二叉樹分割法建?!鴪D8 發(fā)動機缸體均勻柵格法建模 在完成檢測目標空間建模后,對檢測目標點之間的7 381條路徑按障礙物進行分類。筆者采用非接觸式檢測,不需要考慮檢測裝置存在一定體積與檢測目標發(fā)生碰撞的情況,直接將檢測裝置作為質(zhì)點。在當前目標空間中,障礙物路徑數(shù)量為4 752條,無障礙物路徑數(shù)量為2 659條。無障礙物路徑如圖9所示。 表1 發(fā)動機缸體不同方法建模結(jié)果對比 ▲圖9 無障礙物路徑 設(shè)置算法參數(shù),蟻群規(guī)模m為20,信息素重要度s為5,啟發(fā)因子重要度t為5,分組數(shù)量g為5,信息素蒸發(fā)率σ為0.1,信息素增強因子Q為11,最大迭代次數(shù)I為200,路徑長度權(quán)重w1為0.4,計算時間權(quán)重w2為0.6,路徑長度適度常數(shù)C1為105,計算時間適度常數(shù)C2為102,獎懲因子v1為0.5,v2為0.2,v3為0.2,v4為0.1,v5為0,姿態(tài)變換相對程度k為10。 發(fā)動機缸體表面檢測路徑規(guī)劃分組蟻群算法與基本蟻群算法對比見表2。由表2數(shù)據(jù)可知,分組蟻群算法在計算時間上縮短了19.5%,且獲得的路徑相對于基本蟻群算法在長度上更優(yōu)。同時,分組蟻群算法的適度比基本蟻群算法高21.6%,即相對于基本蟻群算法,分組蟻群算法更適合用于多品種零件檢測的路徑規(guī)劃?;鞠伻核惴ê头纸M蟻群算法路徑規(guī)劃結(jié)果分別如圖10、圖11所示。 ▲圖10 基本蟻群算法路徑規(guī)劃結(jié)果 ▲圖11 分組蟻群算法路徑規(guī)劃結(jié)果 表2 發(fā)動機缸體表面檢測路徑規(guī)劃算法對比 為驗證分組蟻群算法的實際使用效果和針對不同零件的通用性,另外選取某壓鑄件為檢測目標進行實例驗證。使用UR5機器人,檢測裝置由工業(yè)相機和四個條形光源組成,條形光源從四個方向給予照明,工業(yè)相機的鏡頭為55 mm焦距遠心鏡頭,試驗平臺如圖12所示。在完成相機和UR5機器人手眼標定后,通過分組蟻群算法運算得到路徑,在示教器上編程完成路徑遍歷,同時完成檢測目標點的圖像獲取。 ▲圖12 試驗平臺 壓鑄件的目標空間建模參數(shù)與發(fā)動機缸體相同,壓鑄件目標空間建模結(jié)果如圖13所示,數(shù)據(jù)見表3。 ▲圖13 壓鑄件目標空間建模結(jié)果 表3 壓鑄件建模數(shù)據(jù) 在完成檢測目標空間建模后,對檢測目標點之間的1 225條路徑按是否有障礙物進行分類。在當前目標空間中,障礙物路徑的數(shù)量為189條,無障礙物路徑的數(shù)量為1 036條,障礙物路徑如圖14所示。 ▲圖14 壓鑄件目標空間障礙物路徑 在對壓鑄件上的目標檢測點進行路徑規(guī)劃時,設(shè)置信息素增強因子C為1,其余參數(shù)與發(fā)動機缸體相同。在運算得到路徑點的運動順序后,在UR5機器人上編程,完成目標點的遍歷試驗。分組蟻群算法尋優(yōu)結(jié)果為,最優(yōu)路徑長度為17 515 mm。壓鑄件目標點路徑規(guī)劃結(jié)果如圖15所示。 ▲圖15 壓鑄件目標點路徑規(guī)劃結(jié)果 機器人遍歷過程未與壓鑄件發(fā)生碰撞,即分組蟻群算法能夠在實際使用中高效地計算出最優(yōu)路徑,并且能夠保證路徑無碰撞,同時在各個位置獲得的圖像清晰,手眼標定結(jié)果準確。 在完成手眼標定后,逐一計算在各目標點上機器人的末端位姿,并在UR5機器人示教器上編程控制機器人運動。UR5機器人遍歷過程及圖像獲取結(jié)果如圖16所示。由圖16可以看出,在目標點獲得的圖片較清晰,標定結(jié)果準確。 ▲圖16 UR5機器人運動過程和圖像獲取結(jié)果 筆者研究了復(fù)雜零件視覺檢測機器人路徑規(guī)劃問題,主要包括檢測目標空間建模、優(yōu)化目標函數(shù)定義、路徑規(guī)劃三部分。在檢測目標建模階段,采用非均勻二叉樹分割檢測目標,將檢測目標轉(zhuǎn)換為六面體,描述檢測空間中的障礙物區(qū)域,增加機器人可運動的范圍。 筆者提出應(yīng)用向量和優(yōu)化目標函數(shù),同時考慮位置變換和姿態(tài)變換在不同度量下對路徑的影響。在路徑規(guī)劃中,通過分組蟻群算法規(guī)劃檢測路徑,在綜合考量路徑結(jié)果和計算效率的前提下,有效找到機器人無碰撞檢測的最優(yōu)路徑。算例和實例結(jié)果表明,分組蟻群算法在計算效率上明顯優(yōu)于基本蟻群算法,在規(guī)劃最短路徑的長度上也優(yōu)于基本蟻群算法,并且不易陷入局部最優(yōu)。3 優(yōu)化目標函數(shù)
3.1 位置變換單目標函數(shù)
3.2 姿態(tài)向量
3.3 向量和目標函數(shù)
4 路徑規(guī)劃
4.1 路徑點選擇策略
4.2 信息素更新策略
4.3 避障
4.4 分組尋優(yōu)
4.5 分組信息素更新策略
4.6 適度函數(shù)
5 手眼標定
6 試驗分析
6.1 路徑規(guī)劃算例檢驗
6.2 檢測目標空間建模與障礙物判斷
6.3 蟻群尋優(yōu)
6.4 實例驗證
7 結(jié)束語