喻 敏,李成剛,李富中,王正軍,馬越民
(南京航空航天大學(xué)機電學(xué)院,江蘇南京 210016)
當前工業(yè)機器人的應(yīng)用越來越廣泛,但是存在機器人的控制仿真不具開放性和運動精度低等問題。世界上主要機器人生產(chǎn)商都相應(yīng)提供了機器人編程軟件以適應(yīng)實際生產(chǎn),同時隨著對機器人運動精度關(guān)注度的提高,也相繼出現(xiàn)了各種機器人標定軟硬件設(shè)備。美國Dynalog公司提供的機器人單元校正系統(tǒng)DynaCal,可以一次測量并校準中心點、連桿長度、各夾角角度、home點,并減少人為運算的時間和誤差,一般校準一個機器人在20min左右[1];德國 Teconsult公司提供的測量校正系統(tǒng)ROSY,利用校準球和照相機校準機器人。國內(nèi)在機器人離線編程仿真領(lǐng)域也進行了相關(guān)的研究[2-4],但是開發(fā)的仿真控制軟件和國外相比仍有差距。
本文利用OpenGL和MFC在VC6.0平臺上開發(fā)了工業(yè)機器人運動控制及標定界面,通過機器人三維模型的導(dǎo)入,編寫機器人逆解和軌跡規(guī)劃算法、上位機與機器人控制器的通訊程序、坐標系標定及參數(shù)辨識程序,實現(xiàn)了工業(yè)機器人的離線軌跡規(guī)劃及控制,同時能夠快速完成機器人精度分析及標定實驗。
OpenGL是SGI公司為圖形工作站IRIS開發(fā)的一種快速、高質(zhì)量的開放三維圖形程序庫,而VC6.0繼承了OpenGL的圖形標準,方便了程序設(shè)計人員實現(xiàn)三維圖像的顯示。
為在VC界面上實現(xiàn)工業(yè)機器人的運動仿真,需要導(dǎo)入并顯示機器人的三維模型。其具體流程圖如圖1所示。
圖1 導(dǎo)入并顯示機器人的三維模型流程圖
首先對VC的開發(fā)環(huán)境進行設(shè)置,以便在程序中能夠調(diào)用OpenGL函數(shù)。在需要調(diào)用OpenGL函數(shù)的類的頭文件中添加 3個頭文件:gl.h、glu.h、glaux.h,同時在 ProjectSettingsLink菜單的 Library編輯框中增加3個靜態(tài)鏈接庫文件:opengl32.lib、glu32.lib、glaux.lib。
可借用兩種方法通過OpenGL顯示三維圖形:一種是利用其提供的三維圖形繪制函數(shù)繪制點、線、面組合成三維模型;另一種是先利用其他三維繪圖軟件事先繪制好三維模型,之后利用轉(zhuǎn)換軟件轉(zhuǎn)化成能夠被計算機識別的程序文件。
本文采用第二種方法。首先利用SolidWorks軟件建立工業(yè)機器人三維模型,利用3DS MAX轉(zhuǎn)化成STL格式的文件,之后利用VIEW3DS將STL文件轉(zhuǎn)化成能夠被VC讀取的.h和.gl文件。接著對機器人三維模型的顯示窗口進行設(shè)置,此時在PreCreateWindow函數(shù)中添加下列語句:cs.style=WS_CLIPSIBLINGS|WS_CLIPCHILDREN,同時增加編寫類成員函數(shù)bSetupPixelFormat(HDC hDC),重新設(shè)置像素格式、創(chuàng)建著色上下文實現(xiàn)繪圖環(huán)境的初始化。
為了提高顯示效率,利用OpenGL的雙緩存技術(shù),此時繪制函數(shù)繪制的場景先寫入后臺,當需要顯示機器人三維模型時,利用 SwapBuffers(m_hDC)交互緩沖區(qū)實現(xiàn)機器人三維模型的顯示;同時通過設(shè)置啟用定時器OnTimer(intnIDEvent)實現(xiàn)畫面的刷新,達到動畫的顯示效果。
為了實現(xiàn)機器人的運動學(xué)仿真,建立了正逆運動學(xué)模型。針對導(dǎo)入的機器人型號獲得相關(guān)的D-H參數(shù),利用連桿矩陣變換方法,得到機器人末端坐標系在基坐標系下的位姿矩陣。
機器人連續(xù)軌跡的離線編程利用機器人的逆解和軌跡規(guī)劃算法實現(xiàn)。首先對末端連續(xù)軌跡進行離散得到各個離散點的位姿矩陣,之后代入逆解程序,求得各個離散點處機器人各關(guān)節(jié)的轉(zhuǎn)角,同時要進行越限判斷和能量最優(yōu)軌跡的優(yōu)化。
為實現(xiàn)機器人各連桿的變化顯示,首先設(shè)置好glMatrixMode(GL_MODELVIEW),再利用 OpenGL的幾何變換函數(shù) glTranslatef()、glRotatef()、glScalef()實現(xiàn)程序算法對機器人的控制。本文實現(xiàn)的機器人直線軌跡規(guī)劃和圓弧軌跡規(guī)劃示意圖如圖2和圖3所示。
圖2 機器人連續(xù)直線軌跡規(guī)劃
上位機與機器人控制器通訊的實現(xiàn)通常需要用到總線數(shù)據(jù)交換協(xié)議,文獻[5]提供了一種通過EXCOM協(xié)議訪問機器人控制器數(shù)據(jù)庫的方法及兩者之間的數(shù)據(jù)傳輸方式和消息格式。
圖3 機器人圓弧軌跡規(guī)劃
本文采用串行通信連接器RS232連接PC機和機器人的控制器COM1口,在PC端利用VC6.0提供的MSComm控件,通過該串行端口發(fā)送和接收數(shù)據(jù),為人機交互應(yīng)用程序提供串行通信功能[6]。
串行通信要求兩端的傳輸速度、數(shù)據(jù)位長、停止位和奇偶校驗方式必須一致,可通過在機器人控制器端設(shè)置相應(yīng)參數(shù),同時在VC中調(diào)用串口初始化程序:
查閱ABB工業(yè)機器人控制器的相關(guān)資料,獲得機器人各關(guān)節(jié)軸絕對編碼器數(shù)據(jù)的網(wǎng)絡(luò)號、節(jié)點號和相應(yīng)的I/O控制端口節(jié)點號,編制數(shù)據(jù)通訊發(fā)送和接收程序,實現(xiàn)上位機對機器人控制器的控制。
通過串口通訊實現(xiàn)上位機與測量裝置的數(shù)據(jù)通訊,將測量裝置的測量數(shù)據(jù)實時傳送到上位機軟件中,達到動態(tài)監(jiān)測機器人運動的目標。之后利用精度分析模塊對機器人目標軌跡和實際軌跡之間的誤差進行在線分析,以便快速了解機器人的運動精度,同時為機器人誤差參數(shù)辨識及末端位姿誤差補償做準備。本文得到的精度分析示意圖如圖4所示。通過調(diào)用精度分析模塊,能夠?qū)崟r地顯示機器人末端位置和姿態(tài)誤差。
圖4 機器人末端位置和姿態(tài)誤差
為了提高機器人的絕對定位精度,需要測量機器人在某些姿態(tài)下的末端位姿。而測量裝置測量得到的位姿數(shù)據(jù)需要轉(zhuǎn)換為相對于機器人基坐標系下的坐標數(shù)據(jù),因此涉及到機器人基坐標系和測量坐標系的轉(zhuǎn)換關(guān)系計算,即機器人基坐標系標定。同時標定實驗需要一個標定塊放置在機器人末端上,此時需要考慮工具坐標系的標定。通過選擇相應(yīng)的標定方法,編制對應(yīng)的標定計算程序,利用上位機與測量裝置的數(shù)據(jù)通訊,即可快速實現(xiàn)機器人基坐標系和工具坐標系的標定,其標定示意圖如圖5和圖6所示。
圖5 機器人基坐標系標定
在圖5和圖6中,Tbc、Tte分別表示機器人基坐標系和測量坐標系之間、機器人工具坐標系和末端坐標系之間的轉(zhuǎn)換矩陣。
圖6 機器人工具坐標系標定
在準確得到基坐標系與測量坐標系、工具坐標系和末端坐標系的轉(zhuǎn)換關(guān)系后,通過選擇合適的誤差模型、參數(shù)辨識方法和末端位姿誤差補償方法,使用編寫的程序能夠快速計算機器人的幾何參數(shù)誤差和誤差補償轉(zhuǎn)角,實現(xiàn)機器人運動學(xué)的快速標定。機器人幾何參數(shù)辨識和誤差補償模塊示意圖如圖7和圖8所示。
圖7 機器人幾何參數(shù)誤差辨識
圖8 機器人誤差補償轉(zhuǎn)角求解
采用 OpenGL和 MFC,在 VC6.0平臺上開發(fā)的對話框界面如圖9所示。
圖9 RobotCAL整體界面
從圖9可以看出,整個界面還能夠進行機器人流程管理,能實時顯示系統(tǒng)信息,標記機器人標定的完成情況,同時能夠在線實時監(jiān)測機器人和測量儀的工作情況。為了更好地體現(xiàn)對機器人的控制,增加了點位控制模塊,能夠?qū)崿F(xiàn)對關(guān)節(jié)軌跡的控制和一鍵回零操作。
本文利用OpenGL和MFC在VC6.0平臺上開發(fā)了用于工業(yè)串聯(lián)機器人的運動控制和快速標定軟件界面。針對選擇的機器人型號,能夠?qū)崟r顯示機器人的3D模型、各D-H參數(shù)和轉(zhuǎn)角范圍,運動學(xué)仿真模塊利用D-H參數(shù)和連桿變換矩陣計算機器人的正逆運動學(xué)模型,利用直線和圓弧的軌跡規(guī)劃算法,實現(xiàn)了機器人連續(xù)直線、圓弧的運動仿真,利用串口通訊實現(xiàn)上位機分別和測量裝置、機器人的通訊。基于測量裝置的測量數(shù)據(jù),根據(jù)編寫的程序能夠快速完成機器人基坐標系和工具坐標系的標定,同時能夠?qū)崿F(xiàn)對機器人精度性能分析的實時顯示。通過選擇合適的誤差模型、參數(shù)辨識、誤差補償及機器人要求達到的精度,能夠快速完成機器人的參數(shù)辨識和誤差補償。
[1] Cheng F S.The method of recovering robot TCP positions in industrial robot application programs[C]//Proceedings of the 2007 IEEE International Conference on Mechatronics and Automatioin.Harbin:IEEE Press,2007:805 -810.
[2] 王志堅,陳松喬,蔡自興,等.ABB工業(yè)控制系統(tǒng)與外部計算機通訊軟件設(shè)計[J].微計算機信息,1998,14(2):54 -57.
[3] 邱長伍,曹其新,長孫郁男,等.機器人圖形化編程與三維仿真環(huán)境[J].機器人,2005,27(5):436 -440.
[4] 曹自洋,郝礦榮,翟雪琴.基于OpenGL的DELTA并聯(lián)機器人實時動態(tài)仿真[J].計算機仿真,2004,21(3):74 -77.
[5] 欒軼佳,趙英凱,俞輝,等.用VC++實現(xiàn)ABB工業(yè)控制系統(tǒng)與上位機的通信[J].自動化儀表,2006,27(10):58 -66.
[6] 李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實踐[M].北京:人民郵電出版社,2002.