離線編程是利用計算機圖形學(xué)知識建立起工業(yè)機器人的工作環(huán)境,附以智能、高效的優(yōu)化算法收集并處理相關(guān)數(shù)據(jù),進而自動生成代碼,再利用三維圖形動畫仿真,選取最為合理的運動方案,最終將編程語言傳至機器人控制器,完成相應(yīng)工作[1,2]。用于離線編程的仿真軟件主要有三類:一是各個機器人廠家自帶的離線編程系統(tǒng),這種模式下的編程軟件可以與機器人良好的接合,但CAD/CAM功能不強;二是通過對三維圖形軟件二次開發(fā)完成的具有離線編程功能的軟件,這種模式下的編程軟件特點是系統(tǒng)過于龐大[3];三是通用的離線編程軟件,這種軟件的具體應(yīng)用針對性不強。無論是通用的還是專有化的離線編程軟件,這些商品化的軟件大都成本高昂,并且在實際加工過程中的路徑和刀位點的設(shè)置等具體環(huán)節(jié)中存在不足。
SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系統(tǒng),它采用的是全面非約束建模,可以在任何階段修改設(shè)計[4];功能強大,組件繁多,可為用戶提供更多高質(zhì)量的不同設(shè)計方案。SolidWorks有成千上萬個API(Application program Interface,應(yīng)用程序接口)函數(shù)供用戶選擇[5],用戶可通過二次開發(fā)完成建模、裝配等相關(guān)功能模塊。目前,SolidWorks二次開發(fā)技術(shù)廣泛應(yīng)用于機械設(shè)計行業(yè),提高了設(shè)計效率,縮短產(chǎn)品開發(fā)周期,還可以滿足我國國內(nèi)工程設(shè)計標(biāo)準(zhǔn)的特殊要求[6]。本文通過SolidWorks二次開發(fā)技術(shù)完成了在砂帶磨拋環(huán)境下磨拋工件路徑信息提取過程,實現(xiàn)了在自由曲面下樣條曲線“目標(biāo)點”位姿矩陣的確定與在離線編程環(huán)節(jié)中磨拋加工軌跡“目標(biāo)點”的工業(yè)機器人運行代碼的自動生成。其中生成的位姿矩陣文件可用于逆運動學(xué)的計算分析及驗證從而對磨拋路徑再次優(yōu)化,而生成的RAPID代碼可直接上傳至仿真軟件進行仿真操作。
本文將SolidWorks二次開發(fā)生成的RAPID代碼首先在Robotstudio上進行初步仿真,無碰撞干涉后,以ABB IRB4400工業(yè)機器人和砂拋機為平臺,進行銅合金水龍頭現(xiàn)場磨拋試驗。
智能化、柔性化、集成化是現(xiàn)代化工業(yè)生產(chǎn)的發(fā)展趨勢,同時在工業(yè)機器人磨拋領(lǐng)域發(fā)展前景更為可觀。文獻[7,8]分別針對復(fù)雜曲面的機器人磨拋系統(tǒng)進行了研究。由工業(yè)機器人、砂拋機以及控制柜配合使用,可以形成一個完整的砂帶磨拋系統(tǒng),進一步取代傳統(tǒng)的手工磨拋作業(yè)。工業(yè)機器人磨拋作業(yè)一般流程如圖1所示。
圖1 工業(yè)機器人磨拋作業(yè)流程圖
磨削過程中機器人通過夾具夾持水龍頭首先在安全位置調(diào)整水龍頭的姿態(tài),再將待加工作業(yè)點與砂帶表面貼合,砂帶磨削是一種彈性磨削,磨拋過程可看作面與面接觸的加工方式,此時工具坐標(biāo)系與待加工點坐標(biāo)系是重合的,如圖2、圖3所示。為便于在離線編程中更準(zhǔn)確的描繪出機器人磨拋時的運動關(guān)系及介紹軌跡信息提取的方法,這里引入5個笛卡爾坐標(biāo)系和4個相應(yīng)的位姿轉(zhuǎn)換矩陣[9]:
圖2 砂帶磨拋系統(tǒng)坐標(biāo)系
圖3 仿真和現(xiàn)場環(huán)境下局部坐標(biāo)系對比
Base坐標(biāo)系:基座標(biāo)系,機器人安裝所在位置的坐標(biāo)系,也可認(rèn)作大地坐標(biāo)系。Tool0坐標(biāo)系:工業(yè)機器人末端法蘭盤坐標(biāo)系,其坐標(biāo)系位姿矩陣的n、o、a、p值完全由機器人關(guān)節(jié)轉(zhuǎn)角和各個桿長決定,末端可連接相應(yīng)的工件或工具,此次磨拋試驗連接的是工裝夾具。Wobj坐標(biāo)系:為工件坐標(biāo)系,為便于計算,可建立在工件與夾具交界圓心處。Work坐標(biāo)系:待加工點坐標(biāo)系,磨拋過程中與工具坐標(biāo)系重合。Tool坐標(biāo)系:工具坐標(biāo)系,砂帶上用于磨拋的位置。
實現(xiàn)磨拋加工作業(yè)時各個坐標(biāo)系間的關(guān)系為:待加工點坐標(biāo)系(Work坐標(biāo)系)的確定成為離線編程過程的關(guān)鍵任務(wù),Work坐標(biāo)系的選取直接關(guān)系到水龍頭磨拋效率和磨拋后的表面質(zhì)量。將水龍頭的原點設(shè)在tool0位置處,可減少在提取軌跡信息位姿矩陣轉(zhuǎn)換時的計算量,從而使SolidWorks二次開發(fā)程序更加簡潔,運行效率也得以提高。
就RAPID的主程序而言可分為聲明部分、主程序和例行程序。此次SolidWorks二次開發(fā)過程主要以RAPID代碼的聲明部分的工件刀位點聲明指令來敘述,其他的工具、工件數(shù)據(jù)可通過標(biāo)定得到,這里不再加以論述。
下面為3路徑第2刀位點的目標(biāo)點數(shù)據(jù):
其中[Px,Py,Pz]為刀位點Wobj坐標(biāo)系下的位置常量,[S,O,P,Q]為四元數(shù),表示與砂帶接觸時姿態(tài),[cf1,cf4,cf6,cf0]為軸配置參數(shù),[9E9,9E9,9E9,9E9,9E9,9E9]為無外伸軸情況。
位置常量可通過GetSketchPoints2()函數(shù)直接獲取目標(biāo)點位置信息,四元數(shù)則需滿足以下條件四元數(shù)中選擇第一列最大者作為四元數(shù)最終結(jié)果[10]:
此次SolidWorks二次開發(fā)過程主要采用第一列或第四列四元數(shù)生成的代碼,其結(jié)果滿足在磨拋前路徑規(guī)劃的設(shè)計需求。
工業(yè)機器人以某一姿態(tài)運動到同一位置時有多種方式,因此為消除機器人運動的歧義性,就必須增設(shè)軸配置加以約束。IRB4400型工業(yè)機器人的軸配置參數(shù)為[cf1,cf4,cf6,cfx],cf1、cf4、cf6代表1、4、6軸關(guān)節(jié)角所在象限,cfx由5軸的關(guān)節(jié)角度判定,這里cfx默認(rèn)為零,只需確定前三者的取值。
由:
可得:
即:
通過式(3)可得到θ1、θ4、θ6,再根據(jù)θ1、θ4、θ6的大小來確定所在象限值即為軸配置參數(shù),軸配置參數(shù)的選取宜遵循兩個相鄰刀位點角度值之差最小的原則。
笛卡爾坐標(biāo)系下的磨拋路徑可由約束函數(shù)、直線或者空間曲線構(gòu)成,磨拋路徑可離散成一系列點,相鄰刀位點用直線或圓弧插補,刀位點的數(shù)量與曲率有關(guān),曲率越大刀位點的數(shù)量越多[11,12]。信息提取過程需要對三維零件模型添加點、線、坐標(biāo)系等元素,因此整個操作在草圖(3DSketch)環(huán)境中進行。刀位路徑和刀位點可通過面部曲線函數(shù)(SketchConvertIsoCurves())和均勻分布(InsertReferencePoint(2,2,2,k))的方式初步建立,根據(jù)加工設(shè)計的需求還可以在刀位路徑上新增或刪除刀位點,函數(shù)(GetLength2())可以得到待加工路徑的長度,函數(shù)(GetSketchPoints2())用于獲取的x,y,z可作為位置矩陣的(px,py,pz,1)T,刀位點坐標(biāo)系的建立有以下兩種方案。
分別創(chuàng)建待磨拋路徑的兩條等距曲線,兩條曲線可視為無數(shù)個x點、z點的集合,將曲面外的曲線z點作為z軸所在方位,將曲面內(nèi)的曲線上x點作為x軸所在方位。三點法確定的刀位點(wobj1)與砂帶貼合時,z軸方向垂直于砂帶,y軸方向為走刀方向,在點(wobj1)時,y軸與該條磨拋路徑相切,x軸方向則為砂帶寬度方向。為減少砂帶粗磨拋后表面條紋的形成,實際加工過程為砂帶在沿y軸運動的同時,機器人挾持水龍頭有少量的x軸方向的運動,如圖4所示。
圖4 三點法建立的刀位點坐標(biāo)系
等距曲線法可以更為便捷的獲取y與z的坐標(biāo)值,確定缺點是建模復(fù)雜,適合平面、圓柱面、球面等較為規(guī)則的曲面,曲線與刀位點之間的間距不宜過大,通常設(shè)為1mm。水龍頭為對稱實體,表面部分曲率分布情況如圖5(a)所示。在不規(guī)則曲面上創(chuàng)建1mm范圍內(nèi)的等距曲線,y與y'間有小的夾角,z與z'間夾角較大如圖5(b)所示,在曲率較大位置隨機獲取40個刀位點,并進行初步統(tǒng)計,結(jié)果如圖5(c)所示,夾角大小均分布在25°以內(nèi)。課題組成員之前采用“三點法”確定的位姿矩陣和加工路徑,水龍頭經(jīng)磨拋后表面均無棱角、過磨現(xiàn)象,面與面之間過渡平緩,表面質(zhì)量基本符合加工要求。但采取該方案獲取刀位點信息步驟繁瑣,對SolidWorks二次開發(fā)較為困難,且不適合表面曲率大、曲率變化快的工件。
第二種方案是直接創(chuàng)建加工面垂線和磨拋路徑切線,垂線作為z軸,切線為y軸。與等距曲線方法相比,第二種方案的z與z'、y與y'間完全重合,與曲面曲率無關(guān),加工效果僅與加工點數(shù)量有關(guān),刀位點數(shù)目需根據(jù)曲率變化做相應(yīng)調(diào)整,因此,采用第二種方案對SolidWorks二次開發(fā)。以水龍頭為例,圖6為不同加工面上7個刀位點處的曲面垂線與磨拋路徑的切線,分別作為z軸和y軸,oy和oz軸的長度為刀位點到原點的距離。
圖5 水龍頭加工路徑曲率分布
圖6 刀位點切線(y軸)、垂線(z軸)
獲取軌跡信息過程可以與建模同時進行,即確定一個坐標(biāo)系輸出一個相應(yīng)的刀位點位姿矩陣和一條相應(yīng)的RAPID代碼;也可以將兩過程分開進行,即先建立整條加工路徑上所有的刀位點坐標(biāo)系,再確定每一個刀位點的位姿矩陣和代碼。通過邊建模邊獲取路徑信息,可以更大程度利用程序的二次開發(fā)完成任務(wù),但程序運行效率不高,且隨著程序的復(fù)雜化,程序容錯率也會降低;分開進行可以使程序大幅度簡化,從而保證了運行效率,且刀位點坐標(biāo)系在需要修改時可以先進行修改,修改后的坐標(biāo)系不影響位姿矩陣與RAPID代碼的生成,選用分開進行的方案更佳。由于建模過程使用了Extension.SelectByID2函數(shù),因此需要先選中一加工軌跡為走刀方向。
建模與路徑信息提取同時進行的主要程序和思路如下:
以上為通過SolidWorks二次開發(fā)來獲取路徑信息的實現(xiàn)方法,其中省略的API函數(shù)可通過宏錄制或查閱手冊得到。
以上生成的RAPID代碼的正確性和磨拋效果需要仿真和現(xiàn)場磨拋驗證。 試驗樣品為已經(jīng)過粗拋的銅合金水龍頭,水龍頭通過氣動夾具固定,砂帶選用600#鹿牌砂帶,速度為25m/s進行磨拋試驗,如圖7(a)所示。磨拋后的水龍頭表面,每個面都磨拋均勻,刀位點間過渡圓滑,均無棱角和過度磨、未磨現(xiàn)象,效果基本滿足磨削要求。由于不同面之間的磨拋路徑數(shù)量不同,每個面的磨拋時間存在差異,因此面與面間的過渡仍需優(yōu)化,如圖7(b)所示。
圖7 磨拋試驗及磨拋效果
離線編程操作步驟多,為了便于用戶操作,可將各部分功能整合在一起形成一個.exe的執(zhí)行程序。SolidWorks本身提供了宏錄制功能,宏代碼的語法與VB語法相似,采用VB對SolidWorks二次開發(fā)具有天然優(yōu)勢。VB是一種面向?qū)ο蟮目梢暬绦蛟O(shè)計語言,VB引入窗體和控件等概念,以“畫”程序代替編程序,
【】【】開發(fā)周期短,代碼效率高。為了在獲取刀位路徑信息操作方便,可利用VB編寫成可執(zhí)行程序(.exe程序),如圖8所示,這樣以SolidWorks為服務(wù)器,通過調(diào)用API函數(shù)操控SolidWorks,同時也避免了.dll程序可能引起的SolidWorks崩潰等問題。
圖8 離線編程(.exe)整體界面
基于VB平臺的SolidWorks二次開發(fā),需要加載如“SolidWorks2016 Type Library”等相關(guān)庫。SolidWorks二次開發(fā)過程中定義宜采用早綁定的方式,早綁定可以增加代碼的可讀性,代碼編寫過程可以檢查代碼的正誤,并且可以提升程序的運行效率[5],因此在定義對象或變量時,應(yīng)盡量避免使用Object、Variant。
1)本文對工業(yè)機器人砂帶磨拋系統(tǒng)進行了模型分析,闡述了各個坐標(biāo)系之間的轉(zhuǎn)化關(guān)系。
2)采用直接創(chuàng)建切垂線的方案,得出的位姿矩陣更為精確,對于處于壓縮狀態(tài)的零件建模和分析更為方便;通過砂拋機的磨拋效果對比,單條磨拋路徑間略有改善。
3)通過VB對SolidWorks二次開發(fā)并生成可視化界面,離線編程更為直觀、便捷。
參考文獻:
[1]盧正君.基于CAD離線編程與仿真系統(tǒng)設(shè)計[D].南京:東南大學(xué),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]劉楚輝,姚寶國,柯映林.工業(yè)機器人切削加工離線編程研究[J].浙江大學(xué)學(xué)報(工學(xué)版),2010,44(3):426-431.
[4]江洪,魏崢,王濤威,等.SolidWorks二次開發(fā)實例解析[M].北京:機械工業(yè)出版社,2004.2.
[5](美)SolidWorks公司,杭州新迪數(shù)字工程系統(tǒng)有限公司.SolidWorks高級教程:二次開發(fā)與API[M].北京:機械工業(yè)出版社,2009.
[6]熊文波,劉宇,謝侃,廖慧.SolidWorks二次開發(fā)在燃面計算中的應(yīng)用[J].航空動力學(xué)報,2008,23(8):1536-1540.
[7]洪云飛,李成群,贠超.用于復(fù)雜空間曲面加工的機器人磨削系統(tǒng)[J].中國機械工程,2006,(Z2):150-153.
[8]王瑞芳,徐方.機器人研磨拋光工藝研究與實現(xiàn)[J].新技術(shù)新工藝,2008,30(9):19-22.
[9]齊立哲,甘中學(xué),贠超,湯青,孫云權(quán).機器人砂帶磨削系統(tǒng)作業(yè)精度分析與誤差補償[J].機器人,2010,32(6):787-791.
[10]鄭軍.四元數(shù)和旋轉(zhuǎn)矩陣相互轉(zhuǎn)化的算法實現(xiàn)[J].陰山學(xué)刊:自然科學(xué)版,2012,26(3):11-14.
[11]王偉,贠超,張令.機器人砂帶磨削的曲面路徑優(yōu)化算法[J].機械工程學(xué)報,2011,47(7):9-15.
[12]王衛(wèi)忠,趙杰,高永生,蔡鶴皋.機器人的平面曲線軌跡規(guī)劃方法[J].哈爾濱工業(yè)大學(xué)學(xué)報.2008,40(3):389-392.