趙鳳申
(南通航運(yùn)職業(yè)技術(shù)學(xué)院 機(jī)電系,南通 226010)
工業(yè)機(jī)器人以其高效、焊接質(zhì)量穩(wěn)定等特點(diǎn),在工業(yè)生產(chǎn)中代替人力完成焊接、搬運(yùn)、噴涂等繁重、重復(fù)性勞動(dòng)工作。為提高作業(yè)效率,多采用在線(xiàn)示教編程,該方式主要針對(duì)圓弧、直線(xiàn)等簡(jiǎn)單作業(yè)軌跡,對(duì)復(fù)雜曲線(xiàn)(如相貫線(xiàn)等)只能通過(guò)人為設(shè)定多個(gè)控制點(diǎn)實(shí)現(xiàn)運(yùn)動(dòng)軌跡的近似擬合,其實(shí)際運(yùn)動(dòng)軌跡與理論曲線(xiàn)的重合度受控制點(diǎn)數(shù)量和插補(bǔ)方式的影響,而較多的控制點(diǎn)則需要較多的設(shè)備調(diào)整和程序錄入時(shí)間,造成實(shí)際焊接效率低下,且焊接質(zhì)量受到操作人員主觀因素、技術(shù)水平的影響。為解決在線(xiàn)示教對(duì)復(fù)雜曲線(xiàn)等作業(yè)任務(wù)適用性一般的問(wèn)題,需要借助離線(xiàn)編程方法,即由計(jì)算機(jī)完成工件、機(jī)器人的三維模型構(gòu)建,并采用適當(dāng)?shù)乃惴ㄍ瓿陕窂揭?guī)劃并生成作業(yè)文件,傳送至計(jì)算機(jī)執(zhí)行,提高作業(yè)質(zhì)量和效率。
本文在UG中利用UG/Open二次開(kāi)發(fā)功能,建立安川工業(yè)機(jī)器人和工件的三維模型,通過(guò)在UG中拾取關(guān)鍵點(diǎn)并獲取精確坐標(biāo),計(jì)算出曲線(xiàn)的解析式,然后經(jīng)由通訊協(xié)議驅(qū)動(dòng)機(jī)器人連續(xù)運(yùn)轉(zhuǎn),完成焊接過(guò)程。
UG軟件功能強(qiáng)大,能夠接受多種格式的三維工件模型,并提供了高效的UG/Open二次開(kāi)發(fā)接口,因而對(duì)于工件與機(jī)器人模型建立和虛擬仿真十分方便。
UG/Open有外部和內(nèi)部?jī)煞N運(yùn)行模式,內(nèi)部模式在程序被加載到UG系統(tǒng)分配內(nèi)存后,作為子進(jìn)程長(zhǎng)駐內(nèi)存,并可以通過(guò)UG的交互界面獲取和創(chuàng)建模型,通過(guò)圖形窗口查看運(yùn)行結(jié)果,外部模式則為一個(gè)獨(dú)立的可執(zhí)行程序,多用于數(shù)據(jù)管理而非幾何操控。本設(shè)計(jì)采用內(nèi)部模式,在Visual C++中利用向?qū)Ы⑤敵鰹镈LL的工程文件,并修改入口函數(shù)名為ufusr()作為入口函數(shù)[1]。
用戶(hù)界面采用可視化工具UIStyler模塊,UIStyler提供了強(qiáng)大的UG風(fēng)格界面設(shè)計(jì),系統(tǒng)可以自動(dòng)生成與對(duì)話(huà)框?qū)?yīng)的C語(yǔ)言模板文件,方便用戶(hù)調(diào)用,實(shí)現(xiàn)UG與用戶(hù)程序的無(wú)縫銜接。
通過(guò)UG的用戶(hù)界面編輯器進(jìn)入U(xiǎn)IStyle模塊,點(diǎn)擊添加各種控件圖標(biāo)并修改其位置參數(shù)即可完成用戶(hù)界面的構(gòu)建。通過(guò)設(shè)置控件的標(biāo)識(shí)符并在控件屬性對(duì)話(huà)框中設(shè)置回調(diào)函數(shù),即可實(shí)現(xiàn)在控件的各種事件響應(yīng)。保存該用戶(hù)界面后,系統(tǒng)自動(dòng)生成對(duì)話(huà)框、模板和頭文件(.dlg、.c和.h文件),使用UF_STYLER_create_dialog()函數(shù)完成對(duì)話(huà)框調(diào)用,并修改、補(bǔ)充.c文件中的對(duì)應(yīng)函數(shù),實(shí)現(xiàn)控件事件響應(yīng)。
在進(jìn)行機(jī)器人運(yùn)動(dòng)仿真前,必須進(jìn)行實(shí)體模型的裝配,在裝配模式下,由于機(jī)器人逆向運(yùn)動(dòng)學(xué)的多解性等原因,實(shí)體模型只能作UG 的Motion Simulation動(dòng)力學(xué)分析, 無(wú)法實(shí)現(xiàn)給定路線(xiàn)運(yùn)動(dòng)仿真,造成視覺(jué)效果偏差。因此,本文按照裝配體的形式用“實(shí)體移動(dòng)法”將各個(gè)部件裝配在一起組成一個(gè)整體[2],通過(guò)程序進(jìn)行坐標(biāo)變換改變每個(gè)關(guān)節(jié)連桿的位姿,實(shí)現(xiàn)當(dāng)前關(guān)節(jié)及其后續(xù)關(guān)聯(lián)關(guān)節(jié)的旋轉(zhuǎn),最終形成一個(gè)整體上視覺(jué)效果和實(shí)體機(jī)器相似的虛擬機(jī)器人,實(shí)現(xiàn)二者的同步運(yùn)轉(zhuǎn)。
首先使用UF_PART_new()生成裝配文件并獲得該裝配文件的標(biāo)識(shí)(tag),然后利用UF_ASSEM_add_part_to_assembly()函數(shù)將各部件添加到裝配體中并獲得各部件實(shí)例(Occurrence),由于部件添加時(shí)是以各自部件的工作坐標(biāo)系為基準(zhǔn),為保持各關(guān)節(jié)的相互關(guān)系有兩種方式:一是若各個(gè)關(guān)節(jié)旋轉(zhuǎn)中心與其工作坐標(biāo)系坐標(biāo)原點(diǎn)重合,在使用前述函數(shù)添加部件時(shí),設(shè)定形參origin[3]和csys_matrix[6]數(shù)值改變部件在裝配文件的初始位置和姿態(tài);二是在UG中建立部件文件時(shí),以實(shí)體機(jī)器人的基座坐標(biāo)系作為UG中各部件的工作坐標(biāo)系,各部件模型與工作坐標(biāo)系的相互位置關(guān)系依據(jù)其在實(shí)體機(jī)器人中與基座坐標(biāo)系的關(guān)系而定,只要添加各部件即自動(dòng)“裝配”成了工業(yè)機(jī)器人。本文采用第二種方式,實(shí)際裝配效果如圖1所示。
圖1 “裝配”出的虛擬機(jī)器人
機(jī)器人各關(guān)節(jié)及其后續(xù)關(guān)節(jié)的運(yùn)動(dòng)采用UF_ASSEM_reposition_part_occurrence()函數(shù)并引用該部件的實(shí)例完成,其參數(shù)xform[4][4]即為部件繞著繞旋轉(zhuǎn)中心點(diǎn)各個(gè)軸旋轉(zhuǎn)特定角度對(duì)應(yīng)的變換矩陣。由于旋轉(zhuǎn)中心和旋轉(zhuǎn)軸線(xiàn)方向受前級(jí)各關(guān)節(jié)運(yùn)動(dòng)的影響,因而必須計(jì)算出前級(jí)各關(guān)節(jié)旋轉(zhuǎn)后新的旋轉(zhuǎn)中心和軸線(xiàn)方向。根據(jù)機(jī)器人正向運(yùn)動(dòng)學(xué)和UG/Open的API函數(shù),按照如下流程實(shí)現(xiàn)矩陣生成和關(guān)節(jié)運(yùn)動(dòng):根據(jù)機(jī)器人DH參數(shù)、旋轉(zhuǎn)中心和旋轉(zhuǎn)角度,由UF_MTX4_rotation()生成旋轉(zhuǎn)矩陣,然后利用UF_MTX4_multiply()將該旋轉(zhuǎn)矩陣與平移矩陣相乘,得到單關(guān)節(jié)最終變換矩陣,然后將該變換矩陣與前級(jí)關(guān)節(jié)最終變換矩陣?yán)肬F_MTX4_multiply()函數(shù)相乘,得出該關(guān)節(jié)的最終變換矩陣,以供后級(jí)關(guān)節(jié)運(yùn)動(dòng)變換使用。由于某關(guān)節(jié)的最終變換矩陣影響了次級(jí)所有關(guān)節(jié)的運(yùn)動(dòng),因而需要在函數(shù)UF_ASSEM_reposition_part_occurrence()中依次引用各次級(jí)關(guān)節(jié)的實(shí)例,完成關(guān)節(jié)位姿變換。
對(duì)于復(fù)雜曲線(xiàn),本設(shè)計(jì)中采取提取若干關(guān)鍵點(diǎn)坐標(biāo),根據(jù)曲線(xiàn)解算出未知幾何參數(shù),進(jìn)而構(gòu)建曲線(xiàn)方程。其中關(guān)鍵點(diǎn)坐標(biāo)的獲取采用uc1616()函數(shù),在彈出點(diǎn)構(gòu)造器后選取關(guān)鍵點(diǎn),其最后一個(gè)參數(shù)的返回值即為該點(diǎn)在工作坐標(biāo)系的坐標(biāo)值。
實(shí)體機(jī)器人型號(hào)為安川SSF2000,該機(jī)器人主控制器與PC機(jī)遵循MotoCom32協(xié)議,可通過(guò)以太網(wǎng)或RS485總線(xiàn)進(jìn)行通訊,用戶(hù)只需要調(diào)用其動(dòng)態(tài)連接庫(kù)(DLL)文件中的相應(yīng)函數(shù)即可與主控制器通訊,實(shí)現(xiàn)機(jī)器人的狀態(tài)讀取和命令發(fā)送。
在示教盒切換至遠(yuǎn)程(REMOTE)模式下,PC機(jī)依次使用BscOpen()、BscSetEther()建立通訊文件、設(shè)定網(wǎng)絡(luò)參數(shù),通過(guò)函數(shù)BscConnect()完成與主控制器的連接,由BscServoOn()、BscServoOf()完成伺服上電、斷電操作,由BscIsLoc()讀取機(jī)器人關(guān)節(jié)碼盤(pán)數(shù)值,使用BscPMovj()指定機(jī)器人以關(guān)節(jié)運(yùn)動(dòng)方式運(yùn)動(dòng)到特定位置,或使用BscImov()使機(jī)器人在直角坐標(biāo)系下以增量方式運(yùn)動(dòng)。通過(guò)BscWriteIO()函數(shù)完成對(duì)主控制器的IO操作,利用BscSelectJob()和BscStartJob()調(diào)用焊接文件實(shí)現(xiàn)起弧、收弧以及焊接參數(shù)設(shè)定[3]。
由于復(fù)雜曲線(xiàn)參數(shù)較多,因而需要根據(jù)其未知參數(shù)數(shù)量指定若干關(guān)鍵點(diǎn),通過(guò)使用uc1616()函數(shù),獲取特征點(diǎn)的坐標(biāo)值,作為已知量,帶入曲線(xiàn)方程,進(jìn)而解出曲線(xiàn)的未知數(shù)。本文以工程中常見(jiàn)的相貫線(xiàn)為例進(jìn)行說(shuō)明,一個(gè)典型的正交相貫線(xiàn)如圖2所示,其中水平圓柱體直徑為R,垂直圓柱體直徑為r,兩圓柱體軸線(xiàn)相交于點(diǎn)O(x0,y0,z0),則在圖示坐標(biāo)系下,相貫線(xiàn)的方程為:
圖2 相貫線(xiàn)示意圖
因而,只需要在UG中獲得其交點(diǎn)O的坐標(biāo)值以及半徑R、r,就可以解算出該相貫線(xiàn)的曲線(xiàn)方程。采用UG Open中的uc1616()函數(shù)產(chǎn)生點(diǎn)構(gòu)造器并拾取交點(diǎn),獲得軸線(xiàn)交點(diǎn)O的坐標(biāo)值。在選定圓柱體后,由函數(shù)UF_MODL_ask_cylinder_parms()獲取其直徑。
由于機(jī)器人接受的基本運(yùn)動(dòng)模式指令只有點(diǎn)位、直線(xiàn)和圓弧,這三種模式都以位置坐標(biāo)作為路徑規(guī)劃參考,因而必須采用一定的插補(bǔ)方式完成相貫線(xiàn)路徑擬合。點(diǎn)位模式下兩點(diǎn)之間的軌跡按照廠(chǎng)家預(yù)設(shè)的優(yōu)化方式實(shí)現(xiàn),用戶(hù)無(wú)法選擇,圓弧運(yùn)動(dòng)指令則需要較多的點(diǎn)才能構(gòu)成圓形軌跡。為提高程序效率,本設(shè)計(jì)采用直線(xiàn)插補(bǔ)模式,即相貫線(xiàn)的一段圓弧之間用直線(xiàn)連接,因而必然產(chǎn)生一定的路徑偏差,且該偏差與圓弧曲率半徑相關(guān),為防止偏差過(guò)大,需要根據(jù)相貫線(xiàn)曲率半徑調(diào)節(jié)擬合圓弧端點(diǎn)位置,曲率半徑與圓心角誤差關(guān)系如圖3所示,以軌跡誤差為0.1為例,則對(duì)應(yīng)的圓心角為:
以R=100為例,α為5.125°,整個(gè)圓周只需要將劃分為約71次即可,具有較高的執(zhí)行效率。以α角作為式(1)中參量t的增量值,求出各關(guān)鍵點(diǎn)的坐標(biāo)。
圖3 圓弧曲率半徑與插補(bǔ)誤差關(guān)系
圖4 相貫線(xiàn)曲率半徑隨r/R變化圖
針對(duì)實(shí)際相貫線(xiàn),需要計(jì)算出其最小曲率半徑值。按照文獻(xiàn)[4]所述方法計(jì)算曲率半徑解析式,由于其極值符號(hào)解較為復(fù)雜,實(shí)用性不強(qiáng)。本設(shè)計(jì)中,依據(jù)不同r/R比值,繪制出曲率半徑圖如圖4所示。圖中R=100,沿著圖中箭頭①②方向r/R的比值依次從0.10~0.95。由圖4可見(jiàn),根據(jù)r/R比值不同,最小曲率半徑出現(xiàn)的位置和寬度各不相同,實(shí)際使用中只要根據(jù)r/R的比值即可估算出最小曲率半徑出現(xiàn)的位置和寬度,在該段范圍內(nèi),使用最小曲率半徑值代入(2)式計(jì)算出角度增量值α。
本實(shí)驗(yàn)室機(jī)器人未配備良好的工裝夾具,機(jī)器人本體與工件間的相對(duì)坐標(biāo)待定,而規(guī)?;?、標(biāo)準(zhǔn)化設(shè)計(jì)的生產(chǎn)線(xiàn)則可避免此類(lèi)問(wèn)題。為克服此問(wèn)題對(duì)實(shí)驗(yàn)效果造成的影響,在將經(jīng)過(guò)線(xiàn)切割的相貫線(xiàn)接口管子放置于V型架后,調(diào)整實(shí)體機(jī)器人末端至管子定位點(diǎn)(本設(shè)計(jì)為切割時(shí)人為切割的中點(diǎn))并獲取該點(diǎn)坐標(biāo),在UG軟件中按照實(shí)際工件位置調(diào)整虛擬工件模型,然后利用前文所述方式拾取模型上的相貫線(xiàn)關(guān)鍵點(diǎn),進(jìn)而生成相貫線(xiàn)模型,并驅(qū)動(dòng)虛擬機(jī)器人和實(shí)體機(jī)器人同步運(yùn)轉(zhuǎn)。
圖5為實(shí)際運(yùn)行截圖,可以看出二者姿態(tài)是一致的。圖6為機(jī)器人實(shí)際焊接的焊縫,可見(jiàn)其軌跡重合度較高,焊縫質(zhì)量較好,證實(shí)了前文方案的有效性,其結(jié)束點(diǎn)的焊瘤是由于收弧時(shí)人為設(shè)定的停留時(shí)間過(guò)長(zhǎng)而造成的,可以避免。
本文開(kāi)發(fā)的基于UG/Open的離線(xiàn)編程系統(tǒng),通過(guò)對(duì)實(shí)體機(jī)器人通訊控制,避免了復(fù)雜曲線(xiàn)在線(xiàn)示教的低效率問(wèn)題,充分利用了虛擬仿真和實(shí)體結(jié)合的手段,實(shí)現(xiàn)了機(jī)器人的遠(yuǎn)程虛擬示教,實(shí)際運(yùn)動(dòng)路徑與理論路徑重合度較好,初步解決了復(fù)雜曲線(xiàn)的路徑規(guī)劃實(shí)現(xiàn)問(wèn)題。
圖5 虛擬、實(shí)體機(jī)器人的同步運(yùn)動(dòng)
圖6 實(shí)際焊縫圖
當(dāng)然,系統(tǒng)還有需要進(jìn)一步完善之處,如焊接參數(shù)、焊槍姿態(tài)調(diào)整和優(yōu)化、避免外置焊槍與工件碰撞、焊槍與機(jī)器人自身干涉、“橫焊”“立焊”策略等問(wèn)題都需要進(jìn)一步研究,以提高系統(tǒng)的適用性。
[1] 侯永濤,丁向陽(yáng).UG/Open二次開(kāi)發(fā)與實(shí)例精解[M].北京:化學(xué)工業(yè)出版社,2007.
[2] 孔凡斌,姜培剛,等.基于UG Open C的FANUC M-16iB/20工業(yè)機(jī)器人動(dòng)態(tài)仿真[J].計(jì)算機(jī)應(yīng)用于軟件,2008,25(6):169-170.
[3] MOTOCOM32 OPERATION MANUAL [Z].Japan:Yaskawa Electric Corporation,2008.
[4] 張學(xué)東.空間曲線(xiàn)的曲率計(jì)算方法[J].塔里木農(nóng)墾大學(xué)學(xué)報(bào),2002,14(2):39.