宋鵬飛,和瑞林,苗金鐘,單東日
(1. 山東輕工業(yè)學(xué)院 機械與汽車工程學(xué)院,濟南 250000;2. 濟南奧圖自動化工程有限公司,濟南 250000)
工業(yè)自動化水平的高低在很大程度上受工業(yè)機器人發(fā)展水平的制約。隨著現(xiàn)今工業(yè)領(lǐng)域產(chǎn)品的小批量多樣化以及專業(yè)化趨勢,使得工業(yè)機器人應(yīng)用范圍持續(xù)擴大的同時工作復(fù)雜程度也不斷增加。工業(yè)機器人是一個可編程的機械裝置,其功能的靈活性和智能性很大程度取決于機器人的編程能力[1]。
目前,機器人編程主要有在線示教編程和離線編程兩種方式,在線示教編程為絕大多數(shù)工業(yè)機器人所采用。在線示教編程要求機器人執(zhí)行新的作業(yè)任務(wù)時需停機示教,造成現(xiàn)場生產(chǎn)線停工的同時還可能使編程人員身處危險的現(xiàn)場壞境中。離線編程方式可以實現(xiàn)在遠(yuǎn)離工作現(xiàn)場的情況下完成機器人編程作業(yè),實現(xiàn)運動仿真等一系列功能,大幅提高編程工作效率。國內(nèi)外研究人員在離線編程方面做了大量研究。其中Kuka,ABB,F(xiàn)ANUC等知名專業(yè)機器人生產(chǎn)廠家都有自己的一套成熟的仿真軟件,可離線編程[2]。奇瑞公司機器人項目組也在離線編程方面取得一定進(jìn)展,可對機器人生產(chǎn)過程仿真。陳煥明等完成了基于VC++的弧焊機器人離線編程系統(tǒng)的設(shè)計[3],可讀出任務(wù)曲線作業(yè)點并生成程序。J.Swider等完成了基于DXF文件的機器人離線編程系統(tǒng),實現(xiàn)了工業(yè)機器人對二維圖形的離線編程仿真功能[4]。絕大多數(shù)的離線編程模式都不能將可視化三維仿真環(huán)境與精確地編程方式相結(jié)合。隨著三維繪圖軟件功能日趨強大,完全可以勝任創(chuàng)建工業(yè)機器人及其工作環(huán)境模型的任務(wù),在三維軟件環(huán)境下完成機器人的離線編程仿真將是實現(xiàn)可視化離線編程簡捷有效的途徑。
本文在Solidworks環(huán)境下對工業(yè)機器人及其工作環(huán)境進(jìn)行三維實體建模,利用Solidworks提供的VC++二次開發(fā)向?qū)wizard.swx,完成機器人離線編程系統(tǒng)的開發(fā)。
完成機器人離線編程作業(yè)包括三個方面的內(nèi)容:
1)三維建模。在Solidworks環(huán)境下建立機器人及其工作環(huán)境三維仿真模型。
2)任務(wù)點選取。根據(jù)實際任務(wù)軌跡要求選取機器人任務(wù)點(可由鼠標(biāo)拖動機器人J6軸到達(dá)任務(wù)點)。
3)調(diào)用離線編程系統(tǒng)。由菜單欄調(diào)用此系統(tǒng),通過位姿計算模塊及逆運動學(xué)計算模塊完成
任務(wù)點的位姿計算及各軸輸入角度的計算。4)生成作業(yè)程序及離線仿真。
圖1 離線編程系統(tǒng)的工作流程及組成
FUNAC機器人在國內(nèi)工業(yè)自動化領(lǐng)域有著廣泛的應(yīng)用,本文以自動化生產(chǎn)線中物料搬運常用的FANUCM-900iA/350型機器人為研究對象,建立機器人及其工作環(huán)境聯(lián)線控制模型,以此為基礎(chǔ)進(jìn)行離線編程系統(tǒng)的設(shè)計研發(fā)。
通過對機器人結(jié)構(gòu)及技術(shù)參數(shù)的研究,繪制機器人零部件模型,按照既定裝配關(guān)系組成裝配體。三維建模時,為保證離線編程系統(tǒng)的運行效率,在保留機器人所有關(guān)鍵特征及尺寸的前提下,盡量簡化模型結(jié)構(gòu)。如圖2所示:將J1軸J2軸復(fù)雜的曲面以簡單的平面模型代替。將五軸回轉(zhuǎn)機構(gòu)簡化成“C”字形結(jié)構(gòu)等。圖2中前者為簡化前的模型,后者為簡化后的模型。
圖2 機器人模型簡化前后對比
完成機器人各零件的裝配后,對各相對運動關(guān)節(jié)正確定義運動角屬性,即確定“配合”中各轉(zhuǎn)動副的轉(zhuǎn)動范圍。保證各關(guān)節(jié)在允許的范圍內(nèi)可自由運動。
離線編程結(jié)果精度的高低,很大程度上取決于機器人及其工作環(huán)境的正確建模及精確的工作位置關(guān)系。本系統(tǒng)中,首先確認(rèn)機器人與工作環(huán)境的位置關(guān)系,即機器人底座中心(基座坐標(biāo)系原點O0)與工作中心(板料中心)的距離關(guān)系。其次規(guī)劃機器人的工作任務(wù),確定機器人在兩工位間經(jīng)過的關(guān)鍵位置,即準(zhǔn)確確定機器人的任務(wù)點。建立的機器人工作環(huán)境及工作狀態(tài)如圖3所示。機器人將板料從右側(cè)工作臺移動到左側(cè),圖中所示位置為兩工作臺之間一任務(wù)點。與初始位置相比第六軸關(guān)節(jié)坐標(biāo)系O6相對于基座坐標(biāo)系O0繞X0軸旋轉(zhuǎn)180度,其余軸相對于基座坐標(biāo)系O0均為平行移動。
圖3 機器人離線編程系統(tǒng)工作狀態(tài)圖
Solidworks具有超強建模功能和方便的二次開發(fā)接口,通過OLE/COM技術(shù)提供強大的二次開發(fā)接口API,這些接口包含數(shù)百個函數(shù),為二次開發(fā)提供強有力的支持。我們可以用VB,Visual C++和其他支持OLE的開發(fā)語言接口調(diào)用其API函數(shù)[5]。本文利用Visual C++通過對對象屬性的設(shè)置和方法的調(diào)用對Solidworks進(jìn)行二次開發(fā),將開發(fā)的模塊以DLL插件文件的形式實現(xiàn)與Solidworks無縫銜接。
在VC++中新建工作空間,選擇工程向?qū)olidWorks Add-in Appwizard,新建離線仿真工程。
離線編程系統(tǒng)以插件的形式在菜單欄中被調(diào)用,點擊“開始計算”子菜單,即可顯示所設(shè)計的離線編程系統(tǒng)對話框。如圖4所示。
圖4 離線編程系統(tǒng)的位置與調(diào)用
本離線編程對話框可完成位姿計算、逆運動學(xué)計算以及對作業(yè)生成模塊、離線仿真模塊的調(diào)用。
位姿計算模塊實現(xiàn)的關(guān)鍵在于對solidworks二次開發(fā)函數(shù)GetSelectionPoint及函數(shù)IEnumEagesOriented的調(diào)用。以獲得點的位置坐標(biāo)為例,通過調(diào)用函數(shù)GetSelectionPoint,得到當(dāng)前所選目標(biāo)點在模型空間坐標(biāo)系中的三維坐標(biāo)值。值得注意的是在定義對話框的時候一定要聲明為非模式對話框,通過調(diào)用“Cdialog::Create”函數(shù)來啟動對話框。以保證不關(guān)閉主程序的情況下,對目標(biāo)點的連續(xù)選取。在定義pSelectMgr指針及retval[3]雙精度數(shù)組的基礎(chǔ)上,通過調(diào)用Selectpoint函數(shù)獲得任務(wù),并將任務(wù)點的坐標(biāo)以數(shù)組的形式輸出。部分程序代碼如下:
void MenuItemCB(void)
{
LPMODELDOC pModelDoc=NULL;
//定義pModelDoc指針
LPSELECTIONMGR pSelectMgr=NULL;
//定義pSelectMgr指針
double retval[3];//雙精度數(shù)組
long nSelCount=0;//選擇數(shù)
TheApplication->GetSWApp()->get_IActiveDoc(&pModelDoc);
//獲得pModelDoc指針
if(!pModelDoc) return;
//如果沒獲得pModelDoc指針,則返回。
…
pSelectMgr->Get
SelectedObjectCount(&nSelCount);
if(nSelCount!=0){
pSelectMgr->IGetSelectionPoint(1,retval);//獲得所選點
}
string.Format(_T("Selected
point(%.4f,%.4f,%.4f)"),
retval[0],retval[1],retval[2]);
//輸出所選點的坐標(biāo)
利用string.Format(_T("%.4f"),retval[i])函數(shù)將上述得到的字符串?dāng)?shù)組以單個元素的形式輸出,同時利用UpdateData(FALSE)函數(shù)將上述結(jié)果同步輸出到對話框。即可完成目標(biāo)點位置的讀取。
首先對機器人進(jìn)行正運動學(xué)分析,建立如圖5所示的FANUCM-900iA/350型機器人的D-H坐標(biāo)系[6]。根據(jù)機器人結(jié)構(gòu)參數(shù)(如表1所示),求出機器人各坐標(biāo)系間的齊次變換矩陣,得到機器人正運動學(xué)方程。確定目標(biāo)點位姿坐標(biāo)后,得到12個常系數(shù)非線性方程。對于正交旋轉(zhuǎn)矩陣P及向量u,v,利用變換矩陣中旋轉(zhuǎn)子矩陣的正交特型及矢量運算矢量運算,得到含有不同未知變量的4個常系數(shù)非線性方程,最終得到機器人逆運算的封閉解[7]。按此方法生成機器人逆運算模塊。
圖5 機器人連桿D-H坐標(biāo)
表1 FANUC M-900iA/350機器人結(jié)構(gòu)參數(shù)表
Solidworks提供的運動仿真模塊完全可勝任機器人的運動仿真任務(wù)。以機器人逆運算模塊得到的各關(guān)節(jié)轉(zhuǎn)角角度做為輸入值,點擊“開始仿真”按鈕,直接進(jìn)入Solidworks自帶的Cosmosmotion運動仿真模塊,根據(jù)所建機器人運行環(huán)境實際情況設(shè)置約束、速度、力等參數(shù),實現(xiàn)運動仿真。
利用VC++對話框Edit控件功能,在點擊“生成作業(yè)”按鈕后彈出子對話框顯示作業(yè)文件。利用CEdit.SetSel(start,end)函數(shù)設(shè)置要插入文本的位置,用CEdit.Replace(string)函數(shù)向該位置插入字符串string[8],將作業(yè)點位置和姿態(tài)坐標(biāo)以數(shù)組的形式(以備現(xiàn)場機器人位姿的手動快速定位)賦予任務(wù)點P[i]?!拔蛔擞嬎恪蹦K每計算一個作業(yè)點點擊“生成作業(yè)”按鈕手動完成i++。
生成的作業(yè)代碼如下:
J P[2] 100% FINE !
P[2]=-46.58,212.46,99.55,90,0,0
其中“!”為FANUC程序注釋符。此作業(yè)文件符合FANUC機器人程序格式。
Roboguide是由FANUC研發(fā)的機器人仿真軟件,功能強大,可靠性強。在Roboguide中建立與本研究環(huán)境相同的工作空間,并將本離線編程系統(tǒng)生成的作業(yè)程序?qū)隦oboguide中,運行程序,得出仿真結(jié)果如圖6所示。
由上述仿真結(jié)果可知,與Solidworks環(huán)境下運行的離線仿真結(jié)果對比,J6軸位置坐標(biāo)Z向坐標(biāo)值相差較大,其余值均在誤差范圍之內(nèi)。這是由于Fanuc將底座中心線與過J1、J2軸軸線,且與底座平行的面的交點作為機器人坐標(biāo)原點,而Solidworks是將底座中心點作為坐標(biāo)原點,兩坐標(biāo)原點不重合導(dǎo)致兩輸出結(jié)果相差J1軸的高度,該值大小約為640mm。
圖6 Roboguide環(huán)境下仿真結(jié)果
本文利用SolidworksAPI二次開發(fā)函數(shù)及VC++編程語言,在Solidworks環(huán)境下實現(xiàn)了工業(yè)機器人離線編程仿真系統(tǒng)的設(shè)計。本系統(tǒng)實現(xiàn)了工業(yè)機器人位姿坐標(biāo)的精確計算,機器人逆運算及作業(yè)程序自動生成三大功能的系統(tǒng)集成,并對計算結(jié)果進(jìn)行了運動仿真,通過與FANUC的Roboguide仿真軟件仿真結(jié)果比較證明:本離線編程系統(tǒng)正確率,可靠性均可以達(dá)到到實際生產(chǎn)要求。為今后實現(xiàn)功能更全面的離線編程仿真系統(tǒng)打下良好的基礎(chǔ),為我國工業(yè)自動化水平的進(jìn)一步提高提供支持和幫助。
[1] 鄭榮.機器人離線編程系統(tǒng)設(shè)計與研究[J].世界制造技術(shù)與裝備市場,2010,(5):90-92.
[2] 曹金學(xué).工業(yè)點焊機器人離線編程軟件的國產(chǎn)化開發(fā)及應(yīng)用[J].計算機應(yīng)用與軟件,2011,28(12):99-100.
[3] 陳煥明,熊震宇.基于VC++的弧焊機器人離線編程系統(tǒng)設(shè)計[J].電焊機,2009,39(1):20-23.
[4] J.Swider,K.Foit,G.Wszolek,D.Mastrowski. The system for simulation and off-line, remote programming of the Mitsubishi Movemaster RV-M1 robot[J].Journal,2007,30(2):7-13.
[5] 曹巖,方舟.Solidworks開發(fā)篇[M].化學(xué)工業(yè)出版社,2010.
[6] 孟慶鑫,王曉東.機器人技術(shù)基礎(chǔ)[M].哈爾濱工業(yè)大學(xué),2006.
[7] 程永倫,朱世強,劉松國.基于旋轉(zhuǎn)子矩陣正交的6R機器人運動學(xué)逆解研究[J].機器人ROBOT,2008,30(2):160-164.
[8] 陳煥明,胡中華,熊震宇,江淑園.MOTOMAN-UP系列機器人離線編程系統(tǒng)[J].機床與液壓,2007,35(9):201-203,207.