離線編程是利用計算機圖形學知識建立起工業機器人的工作環境,附以智能、高效的優化算法收集并處理相關數據,進而自動生成代碼,再利用三維圖形動畫仿真,選取最為合理的運動方案,最終將編程語言傳至機器人控制器,完成相應工作[1,2]。用于離線編程的仿真軟件主要有三類:一是各個機器人廠家自帶的離線編程系統,這種模式下的編程軟件可以與機器人良好的接合,但CAD/CAM功能不強;二是通過對三維圖形軟件二次開發完成的具有離線編程功能的軟件,這種模式下的編程軟件特點是系統過于龐大[3];三是通用的離線編程軟件,這種軟件的具體應用針對性不強。無論是通用的還是專有化的離線編程軟件,這些商品化的軟件大都成本高昂,并且在實際加工過程中的路徑和刀位點的設置等具體環節中存在不足。
SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系統,它采用的是全面非約束建模,可以在任何階段修改設計[4];功能強大,組件繁多,可為用戶提供更多高質量的不同設計方案。SolidWorks有成千上萬個API(Application program Interface,應用程序接口)函數供用戶選擇[5],用戶可通過二次開發完成建模、裝配等相關功能模塊。目前,SolidWorks二次開發技術廣泛應用于機械設計行業,提高了設計效率,縮短產品開發周期,還可以滿足我國國內工程設計標準的特殊要求[6]。本文通過SolidWorks二次開發技術完成了在砂帶磨拋環境下磨拋工件路徑信息提取過程,實現了在自由曲面下樣條曲線“目標點”位姿矩陣的確定與在離線編程環節中磨拋加工軌跡“目標點”的工業機器人運行代碼的自動生成。其中生成的位姿矩陣文件可用于逆運動學的計算分析及驗證從而對磨拋路徑再次優化,而生成的RAPID代碼可直接上傳至仿真軟件進行仿真操作。
本文將SolidWorks二次開發生成的RAPID代碼首先在Robotstudio上進行初步仿真,無碰撞干涉后,以ABB IRB4400工業機器人和砂拋機為平臺,進行銅合金水龍頭現場磨拋試驗。
智能化、柔性化、集成化是現代化工業生產的發展趨勢,同時在工業機器人磨拋領域發展前景更為可觀。文獻[7,8]分別針對復雜曲面的機器人磨拋系統進行了研究。由工業機器人、砂拋機以及控制柜配合使用,可以形成一個完整的砂帶磨拋系統,進一步取代傳統的手工磨拋作業。工業機器人磨拋作業一般流程如圖1所示。

圖1 工業機器人磨拋作業流程圖
磨削過程中機器人通過夾具夾持水龍頭首先在安全位置調整水龍頭的姿態,再將待加工作業點與砂帶表面貼合,砂帶磨削是一種彈性磨削,磨拋過程可看作面與面接觸的加工方式,此時工具坐標系與待加工點坐標系是重合的,如圖2、圖3所示。為便于在離線編程中更準確的描繪出機器人磨拋時的運動關系及介紹軌跡信息提取的方法,這里引入5個笛卡爾坐標系和4個相應的位姿轉換矩陣[9]:

圖2 砂帶磨拋系統坐標系

圖3 仿真和現場環境下局部坐標系對比
Base坐標系:基座標系,機器人安裝所在位置的坐標系,也可認作大地坐標系。Tool0坐標系:工業機器人末端法蘭盤坐標系,其坐標系位姿矩陣的n、o、a、p值完全由機器人關節轉角和各個桿長決定,末端可連接相應的工件或工具,此次磨拋試驗連接的是工裝夾具。Wobj坐標系:為工件坐標系,為便于計算,可建立在工件與夾具交界圓心處。Work坐標系:待加工點坐標系,磨拋過程中與工具坐標系重合。Tool坐標系:工具坐標系,砂帶上用于磨拋的位置。
實現磨拋加工作業時各個坐標系間的關系為:待加工點坐標系(Work坐標系)的確定成為離線編程過程的關鍵任務,Work坐標系的選取直接關系到水龍頭磨拋效率和磨拋后的表面質量。將水龍頭的原點設在tool0位置處,可減少在提取軌跡信息位姿矩陣轉換時的計算量,從而使SolidWorks二次開發程序更加簡潔,運行效率也得以提高。
就RAPID的主程序而言可分為聲明部分、主程序和例行程序。此次SolidWorks二次開發過程主要以RAPID代碼的聲明部分的工件刀位點聲明指令來敘述,其他的工具、工件數據可通過標定得到,這里不再加以論述。
下面為3路徑第2刀位點的目標點數據:

其中[Px,Py,Pz]為刀位點Wobj坐標系下的位置常量,[S,O,P,Q]為四元數,表示與砂帶接觸時姿態,[cf1,cf4,cf6,cf0]為軸配置參數,[9E9,9E9,9E9,9E9,9E9,9E9]為無外伸軸情況。
位置常量可通過GetSketchPoints2()函數直接獲取目標點位置信息,四元數則需滿足以下條件四元數中選擇第一列最大者作為四元數最終結果[10]:

此次SolidWorks二次開發過程主要采用第一列或第四列四元數生成的代碼,其結果滿足在磨拋前路徑規劃的設計需求。
工業機器人以某一姿態運動到同一位置時有多種方式,因此為消除機器人運動的歧義性,就必須增設軸配置加以約束。IRB4400型工業機器人的軸配置參數為[cf1,cf4,cf6,cfx],cf1、cf4、cf6代表1、4、6軸關節角所在象限,cfx由5軸的關節角度判定,這里cfx默認為零,只需確定前三者的取值。
由:

可得:

即:

通過式(3)可得到θ1、θ4、θ6,再根據θ1、θ4、θ6的大小來確定所在象限值即為軸配置參數,軸配置參數的選取宜遵循兩個相鄰刀位點角度值之差最小的原則。
笛卡爾坐標系下的磨拋路徑可由約束函數、直線或者空間曲線構成,磨拋路徑可離散成一系列點,相鄰刀位點用直線或圓弧插補,刀位點的數量與曲率有關,曲率越大刀位點的數量越多[11,12]。信息提取過程需要對三維零件模型添加點、線、坐標系等元素,因此整個操作在草圖(3DSketch)環境中進行。刀位路徑和刀位點可通過面部曲線函數(SketchConvertIsoCurves())和均勻分布(InsertReferencePoint(2,2,2,k))的方式初步建立,根據加工設計的需求還可以在刀位路徑上新增或刪除刀位點,函數(GetLength2())可以得到待加工路徑的長度,函數(GetSketchPoints2())用于獲取的x,y,z可作為位置矩陣的(px,py,pz,1)T,刀位點坐標系的建立有以下兩種方案。
分別創建待磨拋路徑的兩條等距曲線,兩條曲線可視為無數個x點、z點的集合,將曲面外的曲線z點作為z軸所在方位,將曲面內的曲線上x點作為x軸所在方位。三點法確定的刀位點(wobj1)與砂帶貼合時,z軸方向垂直于砂帶,y軸方向為走刀方向,在點(wobj1)時,y軸與該條磨拋路徑相切,x軸方向則為砂帶寬度方向。為減少砂帶粗磨拋后表面條紋的形成,實際加工過程為砂帶在沿y軸運動的同時,機器人挾持水龍頭有少量的x軸方向的運動,如圖4所示。

圖4 三點法建立的刀位點坐標系
等距曲線法可以更為便捷的獲取y與z的坐標值,確定缺點是建模復雜,適合平面、圓柱面、球面等較為規則的曲面,曲線與刀位點之間的間距不宜過大,通常設為1mm。水龍頭為對稱實體,表面部分曲率分布情況如圖5(a)所示。在不規則曲面上創建1mm范圍內的等距曲線,y與y'間有小的夾角,z與z'間夾角較大如圖5(b)所示,在曲率較大位置隨機獲取40個刀位點,并進行初步統計,結果如圖5(c)所示,夾角大小均分布在25°以內。課題組成員之前采用“三點法”確定的位姿矩陣和加工路徑,水龍頭經磨拋后表面均無棱角、過磨現象,面與面之間過渡平緩,表面質量基本符合加工要求。但采取該方案獲取刀位點信息步驟繁瑣,對SolidWorks二次開發較為困難,且不適合表面曲率大、曲率變化快的工件。
第二種方案是直接創建加工面垂線和磨拋路徑切線,垂線作為z軸,切線為y軸。與等距曲線方法相比,第二種方案的z與z'、y與y'間完全重合,與曲面曲率無關,加工效果僅與加工點數量有關,刀位點數目需根據曲率變化做相應調整,因此,采用第二種方案對SolidWorks二次開發。以水龍頭為例,圖6為不同加工面上7個刀位點處的曲面垂線與磨拋路徑的切線,分別作為z軸和y軸,oy和oz軸的長度為刀位點到原點的距離。

圖5 水龍頭加工路徑曲率分布

圖6 刀位點切線(y軸)、垂線(z軸)
獲取軌跡信息過程可以與建模同時進行,即確定一個坐標系輸出一個相應的刀位點位姿矩陣和一條相應的RAPID代碼;也可以將兩過程分開進行,即先建立整條加工路徑上所有的刀位點坐標系,再確定每一個刀位點的位姿矩陣和代碼。通過邊建模邊獲取路徑信息,可以更大程度利用程序的二次開發完成任務,但程序運行效率不高,且隨著程序的復雜化,程序容錯率也會降低;分開進行可以使程序大幅度簡化,從而保證了運行效率,且刀位點坐標系在需要修改時可以先進行修改,修改后的坐標系不影響位姿矩陣與RAPID代碼的生成,選用分開進行的方案更佳。由于建模過程使用了Extension.SelectByID2函數,因此需要先選中一加工軌跡為走刀方向。
建模與路徑信息提取同時進行的主要程序和思路如下:


以上為通過SolidWorks二次開發來獲取路徑信息的實現方法,其中省略的API函數可通過宏錄制或查閱手冊得到。
以上生成的RAPID代碼的正確性和磨拋效果需要仿真和現場磨拋驗證。 試驗樣品為已經過粗拋的銅合金水龍頭,水龍頭通過氣動夾具固定,砂帶選用600#鹿牌砂帶,速度為25m/s進行磨拋試驗,如圖7(a)所示。磨拋后的水龍頭表面,每個面都磨拋均勻,刀位點間過渡圓滑,均無棱角和過度磨、未磨現象,效果基本滿足磨削要求。由于不同面之間的磨拋路徑數量不同,每個面的磨拋時間存在差異,因此面與面間的過渡仍需優化,如圖7(b)所示。

圖7 磨拋試驗及磨拋效果
離線編程操作步驟多,為了便于用戶操作,可將各部分功能整合在一起形成一個.exe的執行程序。SolidWorks本身提供了宏錄制功能,宏代碼的語法與VB語法相似,采用VB對SolidWorks二次開發具有天然優勢。VB是一種面向對象的可視化程序設計語言,VB引入窗體和控件等概念,以“畫”程序代替編程序,
【】【】開發周期短,代碼效率高。為了在獲取刀位路徑信息操作方便,可利用VB編寫成可執行程序(.exe程序),如圖8所示,這樣以SolidWorks為服務器,通過調用API函數操控SolidWorks,同時也避免了.dll程序可能引起的SolidWorks崩潰等問題。

圖8 離線編程(.exe)整體界面
基于VB平臺的SolidWorks二次開發,需要加載如“SolidWorks2016 Type Library”等相關庫。SolidWorks二次開發過程中定義宜采用早綁定的方式,早綁定可以增加代碼的可讀性,代碼編寫過程可以檢查代碼的正誤,并且可以提升程序的運行效率[5],因此在定義對象或變量時,應盡量避免使用Object、Variant。
1)本文對工業機器人砂帶磨拋系統進行了模型分析,闡述了各個坐標系之間的轉化關系。
2)采用直接創建切垂線的方案,得出的位姿矩陣更為精確,對于處于壓縮狀態的零件建模和分析更為方便;通過砂拋機的磨拋效果對比,單條磨拋路徑間略有改善。
3)通過VB對SolidWorks二次開發并生成可視化界面,離線編程更為直觀、便捷。
參考文獻:
[1]盧正君.基于CAD離線編程與仿真系統設計[D].南京:東南大學,2010.
[2]S.Mitsi, K.-D.Bouzakis, G.Mansour, D.Sagris and G.Maliaris.Off- line programming of an industrial robot for manufacturing[J].The International Journal of Advanced Manufacturing Technology,2005,26(3):262-267.
[3]劉楚輝,姚寶國,柯映林.工業機器人切削加工離線編程研究[J].浙江大學學報(工學版),2010,44(3):426-431.
[4]江洪,魏崢,王濤威,等.SolidWorks二次開發實例解析[M].北京:機械工業出版社,2004.2.
[5](美)SolidWorks公司,杭州新迪數字工程系統有限公司.SolidWorks高級教程:二次開發與API[M].北京:機械工業出版社,2009.
[6]熊文波,劉宇,謝侃,廖慧.SolidWorks二次開發在燃面計算中的應用[J].航空動力學報,2008,23(8):1536-1540.
[7]洪云飛,李成群,贠超.用于復雜空間曲面加工的機器人磨削系統[J].中國機械工程,2006,(Z2):150-153.
[8]王瑞芳,徐方.機器人研磨拋光工藝研究與實現[J].新技術新工藝,2008,30(9):19-22.
[9]齊立哲,甘中學,贠超,湯青,孫云權.機器人砂帶磨削系統作業精度分析與誤差補償[J].機器人,2010,32(6):787-791.
[10]鄭軍.四元數和旋轉矩陣相互轉化的算法實現[J].陰山學刊:自然科學版,2012,26(3):11-14.
[11]王偉,贠超,張令.機器人砂帶磨削的曲面路徑優化算法[J].機械工程學報,2011,47(7):9-15.
[12]王衛忠,趙杰,高永生,蔡鶴皋.機器人的平面曲線軌跡規劃方法[J].哈爾濱工業大學學報.2008,40(3):389-392.