劉凱,魏雙羽,白躍偉
(上海第二工業大學智能制造與控制工程學院,上海 201209)
CMM(Coordinate Measurement Machine)是三坐標測量機的簡稱,是現代精密測量領域的重要設備,借助測量程序它可以實現自動、復雜、批量的測量任務。合理的測量程序要保證CMM系統在自動測量過程中測量傳感器不會與被測工件發生非法碰撞,否則會導致測量任務執行失敗,甚至使測量設備受損。所以測量程序中除測量點外還須包含路徑控制點(后續簡稱為GOTO點)信息。
測量路徑規劃是創建合理測量方案的重要內容,一直是CMM應用領域較熱門的研究方向。其中比較有代表性的研究有:AINSWORTH等提出了基于CAD模型的自由曲面測量規劃方法,使用CAD模型生成采樣點并根據用戶設置的默認參數為選定實體生成測量路徑。龔玉玲等基于點云和幾何特征,優化點云數據后來生成DMIS自動測量程序。周開俊等構建了零件檢測特征群,并基于此在整體上對檢測路徑進行優化。STOJADINOVIC等提出了一種針對棱鏡零件模型的智能檢測路徑規劃,對測點分布、碰撞干涉和路徑規劃做了研究。潘為民等針對葉輪進行了測量路徑規劃研究。葛科迪等提出了一種虛擬夾具離線構造和在線迭代更新的示教編程策略。王飛等人針對飛機進氣管道做了測量路徑規劃算法研究。王喬等人提出了基于CAD模型和光學成像匹配結合的自動路徑規劃方法。項目組在這個領域也開展了相關探索,例如文獻[9]提出了基于空間約束平面集的自動路徑規劃方法。
上述文獻總的來說大部分都是基于CAD模型來規劃和優化測量路徑,但示教編程過程中的路徑規劃鮮有涉及,而且主流CMM測量軟件(例如瑞典海克斯康的PC-DMIS等)此功能在某些測量情景下還存在不足。本文作者針對這些應用場景下如何創建合理測量路徑的問題進行了相關研究,提出了新的路徑規劃算法,彌補了現有CMM測量軟件在示教編程時自動路徑規劃方面的欠缺。
示教編程是由CMM測量軟件通過記錄示教人員的系列操作而自動生成測量程序的一種方法,此過程中主要記錄測量點、測頭操作、坐標系變換及相關界面操作等。示教完成后測量軟件通過執行此測量程序即可實現對該類型零件的自動測量功能。
測量軟件在示教過程中無法判斷哪些GOTO點是重要的路徑拐點,所以不會主動記錄此類數據,要使測量程序可正確執行,添加GOTO點方法主要有以下兩種。
(1)手動添加
測量人員在示教過程中,利用操作手柄的相關按鍵,把當前測尖坐標位置作為GOTO點數據插入到測量序列中。但這種方法要求示教人員在示教過程中時刻注意路徑拐點,很容易出現錯誤和遺漏,給程序安全帶來隱患。
(2)動態添加
針對方法1操作存在的安全隱患,目前主流測量軟件如PC-DMIS、Rational DMIS等都利用安全平面功能來解決此問題。此功能最大優點是不需要在示教過程中添加GOTO點,而是在執行自動測量程序時動態生成GOTO點。
算法邏輯如下:測量任務開始時,暫不執行后續指令,先將測量指令后的第一個點的安全位置點(定義請參考2.1節內容),作為GOTO指令的數據發送給CMM,然后再執行后續指令,以確保在測量開始前,測頭停靠在被測幾何元素上方的安全位置。測量任務結束后,也暫不執行后續指令,而是將當前測尖位置的安全位置點作為GOTO指令的數據發送給CMM,然后再執行后續指令。
綜上,該算法要保證在單個幾何元素測量開始前和結束后,測頭均位于安全平面上方,從而可保障測頭在幾何元素間移動時的路徑安全,最大可能地避免了測頭與工件的非法碰撞,提高了測量程序的安全性,大大減輕了示教編程的工作量。所以安全平面算法在主流測量軟件中得到了廣泛地應用。
目前該算法將路徑規劃重點放在了單個幾何元素測量開始前和測量結束后。但如果測量需求如圖1所示,在測量單個幾何元素的過程中必須經過安全平面來避開與工件的碰撞時,主流測量軟件都無法自動正確地規劃路徑,而必須要手動插入GOTO點來解決,從而增加了示教編程的工作量并且給測量程序安全帶來了隱患。
如圖1(a)所示,要測量一個內部包含柱體的內球,需要依次測量~共4個測量點。為避免與內部結構碰撞,測量完點后需要將測頭從安全平面上方繞過柱體后繼續測量。測量圖1(b)所示的通孔時也必須在測量過程中經過安全平面。

圖1 測量過程中要穿過安全平面的情景舉例
針對此類測量情景下現有測量軟件路徑規劃算法的不足,設計實現了新的路徑規劃算法,并將其集成到國產測量軟件DirectDMIS中加以驗證。
為更方便地闡述此算法,在此先介紹以下幾個概念(見圖2)。

圖2 相關概念說明
安全平面:指此平面上任意一點沿法矢方向都沒有實體遮擋,是安全的,一般情況下指經過被測工件的最高位置,且平行于CMM臺面的平面。
安全距離:由于安全平面一般是通過測量零件最高位置所在平面生成的,所以它是安全值的下限,為了保證路徑足夠安全,通常要沿安全平面法矢方向再抬高一段距離,這段距離就稱為安全距離。
安全位置點:文中特指將給定點向安全平面投影,并將投影點沿安全平面法矢平移一個安全距離,得到的位置坐標點稱為該點的安全位置點。
穿透:文中指測尖從安全平面的一側移動到另一側的過程。判斷方法是計算兩個向量的角度值變化——第一個向量是測尖位置坐標到其投影于安全平面上的點坐標的向量,第二個向量是安全平面的法矢向量。如果這兩個向量夾角等于0,則測尖位于安全平面下方,如果該角度等于π則測尖位于安全平面上方。
它包括有效穿透和無效穿透,前者指測尖從安全平面上方穿透到安全平面下方,并在返回安全平面上方之前至少執行了一次測量動作;后者指測尖從安全平面上方穿透到安全平面下方后未進行測量任務,重新返回到安全平面上方的這兩次穿透動作集合。限于篇幅,無效穿透和有效穿透的算法判斷不在文中闡述。
穿透點:文中指運動路徑穿透安全平面時的坐標點,即運動路徑與安全平面的交點。文中算法只考慮有效穿產生的穿透點。
穿透線:文中指經過穿透點且矢量方向與安全平面法矢方向相同的直線。
下面結合具體測量案例來闡述此算法的實現。如圖3所示,要求測量通孔的兩端來確定該通孔的幾何尺寸和公差。假設測量過程包含8個測量點,并依次命名為~。要滿足上述測量需求,必須在測量完點后將測頭從安全平面上方移動到通孔的另一側,然后再測量剩余的點~,所以此通孔測量過程中必須穿過安全平面。

圖3 測量和算法過程示意
算法的設計思路是記錄下示教過程中產生的有效穿透點,并將其對應的安全位置點坐標作為GOTO點數據按順序記錄到測量序列中。如果該GOTO點與測量點之間的路徑會與CAD模型發生碰撞,則還需要插入其他新的GOTO點指令,用來避開CAD模型。
偽代碼實現如圖4(a)所示,首先記錄下穿透點坐標,如圖3所示,設左側穿透點為,其安全位置點為,穿透線為,右側穿透點為,其安全位置點為,穿透線為。如果至路徑與CAD模型沒有碰撞,則直接將作為GOTO點插入到測量序列中;如果有碰撞,則利用“尋找安全路徑()”函數尋找一個新的GOTO點M。
函數“尋找安全路徑()” 偽代碼實現見圖4(b)。算法思路是將測量點向穿透線投影,然后利用二分法尋找此投影點到其安全位置點之間的一點,使得該點與測量點之間的路徑不與CAD模型發生碰撞。

圖4 算法的偽碼實現
右側路徑規劃算法與左側基本相同,首先判斷路徑至是否與CAD模型碰撞,沒有碰撞則直接將作為GOTO點插入到測量序列中,再將作為測量點插入序列,完成此次路徑規劃;如果有碰撞,則利用“尋找安全路徑()”函數尋找一個新的GOTO點,然后將、作為GOTO點,作為測量點插入測量序列,至此完成此次路徑規劃。
將上述算法集成到國產測量軟件DirectDMIS中,并通過兩個實際測量案例來驗證該算法,是否能在前文所述的條件下自動規劃正確的測量路徑。實驗參照對象選擇PC-DMIS(V2013版)測量軟件,并統一在DMIS標準下來比較兩款軟件的路徑規劃結果。
3.1.1 實驗內容
實驗的測量需求如圖5所示,要測量一個包含內部結構的球體,過程中需要測量4個點,分別命名為~。示教過程中要求運動路徑如圖5所示——在測量完點后,先操作測頭向上穿過安全平面(穿透點為),繞過內部的柱體后,再向下穿過安全平面(穿透點為)完成測量任務。

圖5 測量內球
在此實驗中,DirectDMIS與PC-DMIS兩款測量軟件都使用如圖5所示同一個模型,并且均定義上表面為安全平面,安全距離均為30 mm。兩款軟件測試過程中軟件截屏如圖6所示。

圖6 兩款測量軟件測試界面
3.1.2 實驗結果
(1)PC-DMIS測量軟件。軟件導出的DMIS程序如圖7所示,其路徑仿真如圖8所示。可見該軟件并未能在測量完點后生成必要的GOTO點,如果自動執行該程序會在測量點時發生非法碰撞,導致測量任務失敗。

圖7 PC-DMIS測量完成后DMIS程序內容

圖8 PC-DMIS路徑結果仿真
(2)國產DirectDMIS測量軟件。軟件導出的DMIS程序如圖9所示,其路徑仿真如圖10所示。可見該軟件在測點和之間生成了兩個GOTO指令,利用這兩個GOTO指令在自動測量過程中可避開球內的柱體,從而保障了測量任務的正確執行。

圖9 DirectDMIS測量完成后的DMIS程序內容

圖10 DirectDMIS路徑結果仿真
3.1.3 實驗分析
(1)PC-DMIS測量軟件。利用該軟件在測量完和后,雖然手動測量過程中從安全平面上方繞過障礙,但因其未考慮測量過程中需要穿過安全平面來避開工件的情況,所以未能在DMIS程序中規劃必要GOTO點,所以PC-DMIS此測量情景下需要手動插入GOTO點來解決路徑規劃問題。
(2)國產DirectDMIS測量軟件。在應用了文中算法后,該軟件可以實現此測量情景下的自動路徑規劃。在測量任務開始并收到第一個測量點后,此算法開始啟動,當監測到測量點和之間有穿透點,則利用兩個安全位置點來自動規劃一條安全路徑。從最終路徑規劃結果可以看出此算法自動規劃的測量路徑是安全、合理的。
3.1.4 實驗結論
文中算法在不增加測量軟件設置和操作的條件下,實現了測量過程中必須穿透安全平面情景下的自動路徑規劃功能,并通過與PC-DMIS測量軟件在相同情況下的路徑規劃結果對比,初步驗證了該算法的有效性和實用性。
進一步通過測量通孔的實驗來驗證此算法,參照對象依然選擇PC-DMIS測量軟件。實驗過程是分別利用DirectDMIS和PC-DMIS測量同一個包含通孔的模型,并設置最上端平面為安全平面,如圖3所示。
3.2.1 實驗內容
首先利用星形測針在通孔的一端取4個測量點,然后驅動測頭穿透安全平面到通孔另一側,更換測針后測量剩余的4個測量點,最后分別將兩款軟件自動生成的測量程序導出為DMIS標準格式,并利用路徑仿真來直觀地比較兩個結果的優劣。在此需要說明的是,完成此測量任務后,兩款軟件導出的DMIS程序中都包含更換測頭指令如“SNSLCT/S(測頭名稱)”,但該指令不在文中比較范圍,所以作者將其忽略。
3.2.2 實驗結果與分析
(1)PC-DMIS測量軟件。測量完成后,該軟件導出的DMIS程序如圖11所示,其路徑仿真見圖12。可以看出該軟件未能生成必要的GOTO指令來規避測量過程中的碰撞。在測量完前4個點后,測量程序會直接驅動CMM從通孔內部運動到另一側進行測量,從而會造成CMM與工件的非法碰撞,導致測量任務失敗甚至是設備的損毀。

圖11 PC-DMIS導出的DMIS數據

圖12 PC-DMIS路徑結果仿真
(2)DirectDMIS測量軟件。應用文中算法后,該軟件導出的DMIS程序如圖13所示,路徑仿真如圖14所示,可見文中算法在此情景下生成的測量路徑是安全的、合理的。

圖13 DirectDMIS導出的DMIS數據

圖14 DirectDMIS路徑結果仿真
通過與PC-DMIS測量軟件在相同情況下的自動路徑規劃對比實驗,驗證了文中算法的有效性和實用性。
針對主流測量軟件示教過程中某些情景下無法自動規劃測量路徑的問題,提出了新的路徑規劃算法,并將其集成到了國產測量軟件DirectDMIS中。在不增加測量軟件任何操作和設置的條件下,實現了特定情景下的自動路徑規劃,彌補了現在測量軟件的不足。相較之前須手動插入GOTO點來說,提升了示教編程的效率并提高了測量程序的安全性。最后通過實際應用并與主流測量軟件PC-DMIS比較,驗證了文中算法的有效性與實用性。
但文中算法也有其弊端——即在示教編程過程中必須操作測頭穿透安全平面來避開工件,如果期間從安全平面下方繞過工件,則文中算法因無法監測到安全平面的穿透事件而不能生成正確的軌跡規劃。此情況下的路徑規劃算法希望能在后續工作中進一步研究后解決。