劉凱,魏雙羽,白躍偉
(上海第二工業(yè)大學(xué)智能制造與控制工程學(xué)院,上海 201209)
CMM(Coordinate Measurement Machine)是三坐標(biāo)測(cè)量機(jī)的簡(jiǎn)稱,是現(xiàn)代精密測(cè)量領(lǐng)域的重要設(shè)備,借助測(cè)量程序它可以實(shí)現(xiàn)自動(dòng)、復(fù)雜、批量的測(cè)量任務(wù)。合理的測(cè)量程序要保證CMM系統(tǒng)在自動(dòng)測(cè)量過(guò)程中測(cè)量傳感器不會(huì)與被測(cè)工件發(fā)生非法碰撞,否則會(huì)導(dǎo)致測(cè)量任務(wù)執(zhí)行失敗,甚至使測(cè)量設(shè)備受損。所以測(cè)量程序中除測(cè)量點(diǎn)外還須包含路徑控制點(diǎn)(后續(xù)簡(jiǎn)稱為GOTO點(diǎn))信息。
測(cè)量路徑規(guī)劃是創(chuàng)建合理測(cè)量方案的重要內(nèi)容,一直是CMM應(yīng)用領(lǐng)域較熱門的研究方向。其中比較有代表性的研究有:AINSWORTH等提出了基于CAD模型的自由曲面測(cè)量規(guī)劃方法,使用CAD模型生成采樣點(diǎn)并根據(jù)用戶設(shè)置的默認(rèn)參數(shù)為選定實(shí)體生成測(cè)量路徑。龔玉玲等基于點(diǎn)云和幾何特征,優(yōu)化點(diǎn)云數(shù)據(jù)后來(lái)生成DMIS自動(dòng)測(cè)量程序。周開(kāi)俊等構(gòu)建了零件檢測(cè)特征群,并基于此在整體上對(duì)檢測(cè)路徑進(jìn)行優(yōu)化。STOJADINOVIC等提出了一種針對(duì)棱鏡零件模型的智能檢測(cè)路徑規(guī)劃,對(duì)測(cè)點(diǎn)分布、碰撞干涉和路徑規(guī)劃做了研究。潘為民等針對(duì)葉輪進(jìn)行了測(cè)量路徑規(guī)劃研究。葛科迪等提出了一種虛擬夾具離線構(gòu)造和在線迭代更新的示教編程策略。王飛等人針對(duì)飛機(jī)進(jìn)氣管道做了測(cè)量路徑規(guī)劃算法研究。王喬等人提出了基于CAD模型和光學(xué)成像匹配結(jié)合的自動(dòng)路徑規(guī)劃方法。項(xiàng)目組在這個(gè)領(lǐng)域也開(kāi)展了相關(guān)探索,例如文獻(xiàn)[9]提出了基于空間約束平面集的自動(dòng)路徑規(guī)劃方法。
上述文獻(xiàn)總的來(lái)說(shuō)大部分都是基于CAD模型來(lái)規(guī)劃和優(yōu)化測(cè)量路徑,但示教編程過(guò)程中的路徑規(guī)劃鮮有涉及,而且主流CMM測(cè)量軟件(例如瑞典??怂箍档腜C-DMIS等)此功能在某些測(cè)量情景下還存在不足。本文作者針對(duì)這些應(yīng)用場(chǎng)景下如何創(chuàng)建合理測(cè)量路徑的問(wèn)題進(jìn)行了相關(guān)研究,提出了新的路徑規(guī)劃算法,彌補(bǔ)了現(xiàn)有CMM測(cè)量軟件在示教編程時(shí)自動(dòng)路徑規(guī)劃方面的欠缺。
示教編程是由CMM測(cè)量軟件通過(guò)記錄示教人員的系列操作而自動(dòng)生成測(cè)量程序的一種方法,此過(guò)程中主要記錄測(cè)量點(diǎn)、測(cè)頭操作、坐標(biāo)系變換及相關(guān)界面操作等。示教完成后測(cè)量軟件通過(guò)執(zhí)行此測(cè)量程序即可實(shí)現(xiàn)對(duì)該類型零件的自動(dòng)測(cè)量功能。
測(cè)量軟件在示教過(guò)程中無(wú)法判斷哪些GOTO點(diǎn)是重要的路徑拐點(diǎn),所以不會(huì)主動(dòng)記錄此類數(shù)據(jù),要使測(cè)量程序可正確執(zhí)行,添加GOTO點(diǎn)方法主要有以下兩種。
(1)手動(dòng)添加
測(cè)量人員在示教過(guò)程中,利用操作手柄的相關(guān)按鍵,把當(dāng)前測(cè)尖坐標(biāo)位置作為GOTO點(diǎn)數(shù)據(jù)插入到測(cè)量序列中。但這種方法要求示教人員在示教過(guò)程中時(shí)刻注意路徑拐點(diǎn),很容易出現(xiàn)錯(cuò)誤和遺漏,給程序安全帶來(lái)隱患。
(2)動(dòng)態(tài)添加
針對(duì)方法1操作存在的安全隱患,目前主流測(cè)量軟件如PC-DMIS、Rational DMIS等都利用安全平面功能來(lái)解決此問(wèn)題。此功能最大優(yōu)點(diǎn)是不需要在示教過(guò)程中添加GOTO點(diǎn),而是在執(zhí)行自動(dòng)測(cè)量程序時(shí)動(dòng)態(tài)生成GOTO點(diǎn)。
算法邏輯如下:測(cè)量任務(wù)開(kāi)始時(shí),暫不執(zhí)行后續(xù)指令,先將測(cè)量指令后的第一個(gè)點(diǎn)的安全位置點(diǎn)(定義請(qǐng)參考2.1節(jié)內(nèi)容),作為GOTO指令的數(shù)據(jù)發(fā)送給CMM,然后再執(zhí)行后續(xù)指令,以確保在測(cè)量開(kāi)始前,測(cè)頭??吭诒粶y(cè)幾何元素上方的安全位置。測(cè)量任務(wù)結(jié)束后,也暫不執(zhí)行后續(xù)指令,而是將當(dāng)前測(cè)尖位置的安全位置點(diǎn)作為GOTO指令的數(shù)據(jù)發(fā)送給CMM,然后再執(zhí)行后續(xù)指令。
綜上,該算法要保證在單個(gè)幾何元素測(cè)量開(kāi)始前和結(jié)束后,測(cè)頭均位于安全平面上方,從而可保障測(cè)頭在幾何元素間移動(dòng)時(shí)的路徑安全,最大可能地避免了測(cè)頭與工件的非法碰撞,提高了測(cè)量程序的安全性,大大減輕了示教編程的工作量。所以安全平面算法在主流測(cè)量軟件中得到了廣泛地應(yīng)用。
目前該算法將路徑規(guī)劃重點(diǎn)放在了單個(gè)幾何元素測(cè)量開(kāi)始前和測(cè)量結(jié)束后。但如果測(cè)量需求如圖1所示,在測(cè)量單個(gè)幾何元素的過(guò)程中必須經(jīng)過(guò)安全平面來(lái)避開(kāi)與工件的碰撞時(shí),主流測(cè)量軟件都無(wú)法自動(dòng)正確地規(guī)劃路徑,而必須要手動(dòng)插入GOTO點(diǎn)來(lái)解決,從而增加了示教編程的工作量并且給測(cè)量程序安全帶來(lái)了隱患。
如圖1(a)所示,要測(cè)量一個(gè)內(nèi)部包含柱體的內(nèi)球,需要依次測(cè)量~共4個(gè)測(cè)量點(diǎn)。為避免與內(nèi)部結(jié)構(gòu)碰撞,測(cè)量完點(diǎn)后需要將測(cè)頭從安全平面上方繞過(guò)柱體后繼續(xù)測(cè)量。測(cè)量圖1(b)所示的通孔時(shí)也必須在測(cè)量過(guò)程中經(jīng)過(guò)安全平面。
圖1 測(cè)量過(guò)程中要穿過(guò)安全平面的情景舉例
針對(duì)此類測(cè)量情景下現(xiàn)有測(cè)量軟件路徑規(guī)劃算法的不足,設(shè)計(jì)實(shí)現(xiàn)了新的路徑規(guī)劃算法,并將其集成到國(guó)產(chǎn)測(cè)量軟件DirectDMIS中加以驗(yàn)證。
為更方便地闡述此算法,在此先介紹以下幾個(gè)概念(見(jiàn)圖2)。
圖2 相關(guān)概念說(shuō)明
安全平面:指此平面上任意一點(diǎn)沿法矢方向都沒(méi)有實(shí)體遮擋,是安全的,一般情況下指經(jīng)過(guò)被測(cè)工件的最高位置,且平行于CMM臺(tái)面的平面。
安全距離:由于安全平面一般是通過(guò)測(cè)量零件最高位置所在平面生成的,所以它是安全值的下限,為了保證路徑足夠安全,通常要沿安全平面法矢方向再抬高一段距離,這段距離就稱為安全距離。
安全位置點(diǎn):文中特指將給定點(diǎn)向安全平面投影,并將投影點(diǎn)沿安全平面法矢平移一個(gè)安全距離,得到的位置坐標(biāo)點(diǎn)稱為該點(diǎn)的安全位置點(diǎn)。
穿透:文中指測(cè)尖從安全平面的一側(cè)移動(dòng)到另一側(cè)的過(guò)程。判斷方法是計(jì)算兩個(gè)向量的角度值變化——第一個(gè)向量是測(cè)尖位置坐標(biāo)到其投影于安全平面上的點(diǎn)坐標(biāo)的向量,第二個(gè)向量是安全平面的法矢向量。如果這兩個(gè)向量夾角等于0,則測(cè)尖位于安全平面下方,如果該角度等于π則測(cè)尖位于安全平面上方。
它包括有效穿透和無(wú)效穿透,前者指測(cè)尖從安全平面上方穿透到安全平面下方,并在返回安全平面上方之前至少執(zhí)行了一次測(cè)量動(dòng)作;后者指測(cè)尖從安全平面上方穿透到安全平面下方后未進(jìn)行測(cè)量任務(wù),重新返回到安全平面上方的這兩次穿透動(dòng)作集合。限于篇幅,無(wú)效穿透和有效穿透的算法判斷不在文中闡述。
穿透點(diǎn):文中指運(yùn)動(dòng)路徑穿透安全平面時(shí)的坐標(biāo)點(diǎn),即運(yùn)動(dòng)路徑與安全平面的交點(diǎn)。文中算法只考慮有效穿產(chǎn)生的穿透點(diǎn)。
穿透線:文中指經(jīng)過(guò)穿透點(diǎn)且矢量方向與安全平面法矢方向相同的直線。
下面結(jié)合具體測(cè)量案例來(lái)闡述此算法的實(shí)現(xiàn)。如圖3所示,要求測(cè)量通孔的兩端來(lái)確定該通孔的幾何尺寸和公差。假設(shè)測(cè)量過(guò)程包含8個(gè)測(cè)量點(diǎn),并依次命名為~。要滿足上述測(cè)量需求,必須在測(cè)量完點(diǎn)后將測(cè)頭從安全平面上方移動(dòng)到通孔的另一側(cè),然后再測(cè)量剩余的點(diǎn)~,所以此通孔測(cè)量過(guò)程中必須穿過(guò)安全平面。
圖3 測(cè)量和算法過(guò)程示意
算法的設(shè)計(jì)思路是記錄下示教過(guò)程中產(chǎn)生的有效穿透點(diǎn),并將其對(duì)應(yīng)的安全位置點(diǎn)坐標(biāo)作為GOTO點(diǎn)數(shù)據(jù)按順序記錄到測(cè)量序列中。如果該GOTO點(diǎn)與測(cè)量點(diǎn)之間的路徑會(huì)與CAD模型發(fā)生碰撞,則還需要插入其他新的GOTO點(diǎn)指令,用來(lái)避開(kāi)CAD模型。
偽代碼實(shí)現(xiàn)如圖4(a)所示,首先記錄下穿透點(diǎn)坐標(biāo),如圖3所示,設(shè)左側(cè)穿透點(diǎn)為,其安全位置點(diǎn)為,穿透線為,右側(cè)穿透點(diǎn)為,其安全位置點(diǎn)為,穿透線為。如果至路徑與CAD模型沒(méi)有碰撞,則直接將作為GOTO點(diǎn)插入到測(cè)量序列中;如果有碰撞,則利用“尋找安全路徑()”函數(shù)尋找一個(gè)新的GOTO點(diǎn)M。
函數(shù)“尋找安全路徑()” 偽代碼實(shí)現(xiàn)見(jiàn)圖4(b)。算法思路是將測(cè)量點(diǎn)向穿透線投影,然后利用二分法尋找此投影點(diǎn)到其安全位置點(diǎn)之間的一點(diǎn),使得該點(diǎn)與測(cè)量點(diǎn)之間的路徑不與CAD模型發(fā)生碰撞。
圖4 算法的偽碼實(shí)現(xiàn)
右側(cè)路徑規(guī)劃算法與左側(cè)基本相同,首先判斷路徑至是否與CAD模型碰撞,沒(méi)有碰撞則直接將作為GOTO點(diǎn)插入到測(cè)量序列中,再將作為測(cè)量點(diǎn)插入序列,完成此次路徑規(guī)劃;如果有碰撞,則利用“尋找安全路徑()”函數(shù)尋找一個(gè)新的GOTO點(diǎn),然后將、作為GOTO點(diǎn),作為測(cè)量點(diǎn)插入測(cè)量序列,至此完成此次路徑規(guī)劃。
將上述算法集成到國(guó)產(chǎn)測(cè)量軟件DirectDMIS中,并通過(guò)兩個(gè)實(shí)際測(cè)量案例來(lái)驗(yàn)證該算法,是否能在前文所述的條件下自動(dòng)規(guī)劃正確的測(cè)量路徑。實(shí)驗(yàn)參照對(duì)象選擇PC-DMIS(V2013版)測(cè)量軟件,并統(tǒng)一在DMIS標(biāo)準(zhǔn)下來(lái)比較兩款軟件的路徑規(guī)劃結(jié)果。
3.1.1 實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)的測(cè)量需求如圖5所示,要測(cè)量一個(gè)包含內(nèi)部結(jié)構(gòu)的球體,過(guò)程中需要測(cè)量4個(gè)點(diǎn),分別命名為~。示教過(guò)程中要求運(yùn)動(dòng)路徑如圖5所示——在測(cè)量完點(diǎn)后,先操作測(cè)頭向上穿過(guò)安全平面(穿透點(diǎn)為),繞過(guò)內(nèi)部的柱體后,再向下穿過(guò)安全平面(穿透點(diǎn)為)完成測(cè)量任務(wù)。
圖5 測(cè)量?jī)?nèi)球
在此實(shí)驗(yàn)中,DirectDMIS與PC-DMIS兩款測(cè)量軟件都使用如圖5所示同一個(gè)模型,并且均定義上表面為安全平面,安全距離均為30 mm。兩款軟件測(cè)試過(guò)程中軟件截屏如圖6所示。
圖6 兩款測(cè)量軟件測(cè)試界面
3.1.2 實(shí)驗(yàn)結(jié)果
(1)PC-DMIS測(cè)量軟件。軟件導(dǎo)出的DMIS程序如圖7所示,其路徑仿真如圖8所示。可見(jiàn)該軟件并未能在測(cè)量完點(diǎn)后生成必要的GOTO點(diǎn),如果自動(dòng)執(zhí)行該程序會(huì)在測(cè)量點(diǎn)時(shí)發(fā)生非法碰撞,導(dǎo)致測(cè)量任務(wù)失敗。
圖7 PC-DMIS測(cè)量完成后DMIS程序內(nèi)容
圖8 PC-DMIS路徑結(jié)果仿真
(2)國(guó)產(chǎn)DirectDMIS測(cè)量軟件。軟件導(dǎo)出的DMIS程序如圖9所示,其路徑仿真如圖10所示。可見(jiàn)該軟件在測(cè)點(diǎn)和之間生成了兩個(gè)GOTO指令,利用這兩個(gè)GOTO指令在自動(dòng)測(cè)量過(guò)程中可避開(kāi)球內(nèi)的柱體,從而保障了測(cè)量任務(wù)的正確執(zhí)行。
圖9 DirectDMIS測(cè)量完成后的DMIS程序內(nèi)容
圖10 DirectDMIS路徑結(jié)果仿真
3.1.3 實(shí)驗(yàn)分析
(1)PC-DMIS測(cè)量軟件。利用該軟件在測(cè)量完和后,雖然手動(dòng)測(cè)量過(guò)程中從安全平面上方繞過(guò)障礙,但因其未考慮測(cè)量過(guò)程中需要穿過(guò)安全平面來(lái)避開(kāi)工件的情況,所以未能在DMIS程序中規(guī)劃必要GOTO點(diǎn),所以PC-DMIS此測(cè)量情景下需要手動(dòng)插入GOTO點(diǎn)來(lái)解決路徑規(guī)劃問(wèn)題。
(2)國(guó)產(chǎn)DirectDMIS測(cè)量軟件。在應(yīng)用了文中算法后,該軟件可以實(shí)現(xiàn)此測(cè)量情景下的自動(dòng)路徑規(guī)劃。在測(cè)量任務(wù)開(kāi)始并收到第一個(gè)測(cè)量點(diǎn)后,此算法開(kāi)始啟動(dòng),當(dāng)監(jiān)測(cè)到測(cè)量點(diǎn)和之間有穿透點(diǎn),則利用兩個(gè)安全位置點(diǎn)來(lái)自動(dòng)規(guī)劃一條安全路徑。從最終路徑規(guī)劃結(jié)果可以看出此算法自動(dòng)規(guī)劃的測(cè)量路徑是安全、合理的。
3.1.4 實(shí)驗(yàn)結(jié)論
文中算法在不增加測(cè)量軟件設(shè)置和操作的條件下,實(shí)現(xiàn)了測(cè)量過(guò)程中必須穿透安全平面情景下的自動(dòng)路徑規(guī)劃功能,并通過(guò)與PC-DMIS測(cè)量軟件在相同情況下的路徑規(guī)劃結(jié)果對(duì)比,初步驗(yàn)證了該算法的有效性和實(shí)用性。
進(jìn)一步通過(guò)測(cè)量通孔的實(shí)驗(yàn)來(lái)驗(yàn)證此算法,參照對(duì)象依然選擇PC-DMIS測(cè)量軟件。實(shí)驗(yàn)過(guò)程是分別利用DirectDMIS和PC-DMIS測(cè)量同一個(gè)包含通孔的模型,并設(shè)置最上端平面為安全平面,如圖3所示。
3.2.1 實(shí)驗(yàn)內(nèi)容
首先利用星形測(cè)針在通孔的一端取4個(gè)測(cè)量點(diǎn),然后驅(qū)動(dòng)測(cè)頭穿透安全平面到通孔另一側(cè),更換測(cè)針后測(cè)量剩余的4個(gè)測(cè)量點(diǎn),最后分別將兩款軟件自動(dòng)生成的測(cè)量程序?qū)С鰹镈MIS標(biāo)準(zhǔn)格式,并利用路徑仿真來(lái)直觀地比較兩個(gè)結(jié)果的優(yōu)劣。在此需要說(shuō)明的是,完成此測(cè)量任務(wù)后,兩款軟件導(dǎo)出的DMIS程序中都包含更換測(cè)頭指令如“SNSLCT/S(測(cè)頭名稱)”,但該指令不在文中比較范圍,所以作者將其忽略。
3.2.2 實(shí)驗(yàn)結(jié)果與分析
(1)PC-DMIS測(cè)量軟件。測(cè)量完成后,該軟件導(dǎo)出的DMIS程序如圖11所示,其路徑仿真見(jiàn)圖12??梢钥闯鲈撥浖茨苌杀匾腉OTO指令來(lái)規(guī)避測(cè)量過(guò)程中的碰撞。在測(cè)量完前4個(gè)點(diǎn)后,測(cè)量程序會(huì)直接驅(qū)動(dòng)CMM從通孔內(nèi)部運(yùn)動(dòng)到另一側(cè)進(jìn)行測(cè)量,從而會(huì)造成CMM與工件的非法碰撞,導(dǎo)致測(cè)量任務(wù)失敗甚至是設(shè)備的損毀。
圖11 PC-DMIS導(dǎo)出的DMIS數(shù)據(jù)
圖12 PC-DMIS路徑結(jié)果仿真
(2)DirectDMIS測(cè)量軟件。應(yīng)用文中算法后,該軟件導(dǎo)出的DMIS程序如圖13所示,路徑仿真如圖14所示,可見(jiàn)文中算法在此情景下生成的測(cè)量路徑是安全的、合理的。
圖13 DirectDMIS導(dǎo)出的DMIS數(shù)據(jù)
圖14 DirectDMIS路徑結(jié)果仿真
通過(guò)與PC-DMIS測(cè)量軟件在相同情況下的自動(dòng)路徑規(guī)劃對(duì)比實(shí)驗(yàn),驗(yàn)證了文中算法的有效性和實(shí)用性。
針對(duì)主流測(cè)量軟件示教過(guò)程中某些情景下無(wú)法自動(dòng)規(guī)劃測(cè)量路徑的問(wèn)題,提出了新的路徑規(guī)劃算法,并將其集成到了國(guó)產(chǎn)測(cè)量軟件DirectDMIS中。在不增加測(cè)量軟件任何操作和設(shè)置的條件下,實(shí)現(xiàn)了特定情景下的自動(dòng)路徑規(guī)劃,彌補(bǔ)了現(xiàn)在測(cè)量軟件的不足。相較之前須手動(dòng)插入GOTO點(diǎn)來(lái)說(shuō),提升了示教編程的效率并提高了測(cè)量程序的安全性。最后通過(guò)實(shí)際應(yīng)用并與主流測(cè)量軟件PC-DMIS比較,驗(yàn)證了文中算法的有效性與實(shí)用性。
但文中算法也有其弊端——即在示教編程過(guò)程中必須操作測(cè)頭穿透安全平面來(lái)避開(kāi)工件,如果期間從安全平面下方繞過(guò)工件,則文中算法因無(wú)法監(jiān)測(cè)到安全平面的穿透事件而不能生成正確的軌跡規(guī)劃。此情況下的路徑規(guī)劃算法希望能在后續(xù)工作中進(jìn)一步研究后解決。