機(jī)器人三維仿真在機(jī)器人的研究開發(fā)中具有重要作用,是當(dāng)前機(jī)器人研究領(lǐng)域中最新的研究方向之一。本系統(tǒng)利用VisualC++調(diào)用OpenGL圖形函數(shù)對三自由度并聯(lián)機(jī)器人及其工作環(huán)境進(jìn)行建模和渲染。根據(jù)正解的結(jié)果顯示其三維工作空間;并根據(jù)給定參考點軌跡及逆解的結(jié)果實時、動態(tài)的顯示三自由度并聯(lián)機(jī)器人的工作過程。
1 引言
目前,機(jī)器人在社會生產(chǎn)及生活中應(yīng)用得越來越廣泛,其中三自由度并聯(lián)機(jī)器人因其具有剛度大、承載能力強、累積誤差小、動力性能好等突出優(yōu)點,隨機(jī)器人技術(shù)的發(fā)展已逐步成為一個重要的應(yīng)用領(lǐng)域,很有應(yīng)用前景,但是研究和開發(fā)得還不充分。在研究三自由度并聯(lián)機(jī)器人的過程中,對其進(jìn)行三維運動仿真是各項仿真中一個很重要的組成部分。它對于驗證機(jī)器人組成、工作空間及進(jìn)行軌跡規(guī)劃、控制算法、碰撞檢測等都具有非常重要的意義。同時隨著計算機(jī)性能的迅速提高,研制基于個人計算機(jī)的仿真軟件已成為仿真技術(shù)的發(fā)展趨勢。本文介紹了一個三自由度并聯(lián)機(jī)器人運動仿真系統(tǒng),在Windows環(huán)境下配合AutoCAD建模工具使用VisualC++工具調(diào)用OpenGL圖形庫中的函數(shù),實現(xiàn)三維運動仿真。
2 開發(fā)環(huán)境及AutoCAD、OpenGL簡介
本系統(tǒng)在WindowsNT平臺上進(jìn)行開發(fā),為了便于實現(xiàn)各種有關(guān)計算分析和圖形算法和保證其正確、可靠和高效率,選用VisualC++開發(fā)環(huán)境并采用面向?qū)ο螅∣b,iect-oriented)的編程技術(shù)。
AutoCAD是眾多2D/3D.CAD/CAM系統(tǒng)中的典型代表,它是一個強大的建模工具,能較方便的提供一般三維幾何實體的精確建模。
OpenGL是近幾年發(fā)展起來的一個性能卓越的三維圖形標(biāo)準(zhǔn),它是在SGI等多家著名的計算機(jī)公司的倡導(dǎo)下,以SGI的GL三維圖形庫為基礎(chǔ)制定的一個通用共享的開放式三維圖形標(biāo)準(zhǔn)。它獨立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便的在各種平臺間移植。廣泛用于科學(xué)計算可視化、實體造型、CAD/CAM、模擬仿真等諸多領(lǐng)域。正是由于OpenGL具有建模方便、容易實現(xiàn)高度清晰感的實時三維仿真、獨立性和通用性等優(yōu)點,它逐漸被廣泛應(yīng)用于包括機(jī)器人在內(nèi)的創(chuàng)新機(jī)構(gòu)與機(jī)械設(shè)備的設(shè)汁和運動分析中。
3 基于OpenGL的三自由度并聯(lián)機(jī)器人三維運動仿真系統(tǒng)
3.1 建立幾何模型
OpenGL雖然提供了較強的圖形功能,但是三維建模功能相對較弱,輔助庫中提供的一些三維形體繪制函數(shù),僅僅能夠完成對如球、立方體、多面體等簡單形體的繪制。除此以外,提供了一些基本的圖元,如點、線、多邊形等,利用這些基本圖元的組合可以完成簡單物體的建模工作,但對于復(fù)雜形體的建模,則是一件繁瑣的工作。
而現(xiàn)有的CAD系統(tǒng),如AutoCAD、3DS和Pro/E等具有很強的三維繪圖能力。AutoCAD是其中杰出的代表,利用AutoCAD軟件完成對機(jī)器人各部分的幾何建模。如圖1所示。
[align=center]
圖1 部件圖例圖[/align]
3.2 數(shù)據(jù)轉(zhuǎn)換,生成顯示列表
利用CAD軟件完成對機(jī)器人各部分的建模之后,將標(biāo)準(zhǔn)CAD數(shù)據(jù)文件(如AutoCAD使用的為DXF文件格式)轉(zhuǎn)化為OpenGL的文件格式。數(shù)據(jù)的轉(zhuǎn)換作為一個單獨的模塊進(jìn)行編程,模型在建立時需要注意模型的基準(zhǔn)點,對于機(jī)構(gòu)中的零部件是分開進(jìn)行轉(zhuǎn)換的,需要考慮在模型重組時相互之間的裝配關(guān)系。步驟如下:①幾何模型網(wǎng)絡(luò)化,一般按三角形劃分網(wǎng)絡(luò);②設(shè)定網(wǎng)絡(luò)中各節(jié)點的序號,讀出各節(jié)點的三維坐標(biāo);③設(shè)定三角形的序號,對于每個三角形給出對應(yīng)的頂點序號;④計算每個三角形的表面法向量;⑤把每個三角形放在OpenGL的顯示列表中,以供需要時調(diào)用。以C++語言描述為例,其數(shù)據(jù)結(jié)構(gòu)如下:
structCADObj {
charname[16];//機(jī)器人幾何模塊名稱
int NumFaces;//三角面列表中三角面的個數(shù)
int NumVerts;//頂點列表中點的個數(shù)
int NumMaps;//紋理坐標(biāo)列表中紋理的個數(shù)
BOOL matrix;//有轉(zhuǎn)換矩陣否
int NumBindings;//綁定材質(zhì)的個數(shù)
CADFace *facelist;//三角面索引列表
CADVert *vertlist;//頂點列表
CADMap *maplist;//紋理坐標(biāo)列表
Float32 TraMatrix[3*4];
//3×3旋轉(zhuǎn)矩陣,3×1轉(zhuǎn)換矩陣
CADMatList * bindings;//綁定材質(zhì)于三角面
3.3 投影、視口等的變換與顯示處理和色彩、材質(zhì)、紋理、光照和背景的處理
三維物體是在三維坐標(biāo)中定義的,但當(dāng)計算機(jī)圖形的點繪制到屏幕上時,顯示在屏幕上的三維物體將是二維的圖像,因此,將幾何物體的三維坐標(biāo)轉(zhuǎn)化到屏幕上的象素位置,需要經(jīng)過以下三種變換(如圖2所示)。
[align=center]
圖2 OpenGL中圖形變換過程[/align]
①通過矩陣相乘所表示的變換。包括造型、視圖和投影等操作。這些操作包括旋轉(zhuǎn)、平移、縮放、反射、正交投影和透視投影。通常需要將幾種種變換結(jié)合起來繪制場景。
②由于場景是在一個矩形窗口中繪制,所以位于窗口之外的物體(或物體的一部分)必須被裁剪掉。在三維計算機(jī)圖形中,以裁剪面所構(gòu)成的范圍對物體進(jìn)行裁剪。
③通過視口變換在變換后的坐標(biāo)和屏幕象素之間建立起對應(yīng)關(guān)系。
在模型建立時,并沒有對模型進(jìn)行色彩、材質(zhì)、紋理的處理,在完成模型數(shù)據(jù)轉(zhuǎn)換后,調(diào)用OpenGL函數(shù)對其進(jìn)行處理,這樣也可使模型的數(shù)據(jù)簡潔,轉(zhuǎn)換方便,提高開發(fā)的效率和系統(tǒng)的通用性。
3.4 機(jī)器人的位置分析正反解算法
機(jī)器人的位置分析是求解機(jī)器人的輸入與輸出構(gòu)件之間的位置關(guān)系。當(dāng)已知機(jī)構(gòu)主動件的位置,求解機(jī)構(gòu)的輸出件的位置和姿態(tài)稱位置分析的正解,若已知輸出件的位置和姿態(tài),求解機(jī)構(gòu)輸入件的位置稱為機(jī)構(gòu)位置的反解。其中在求解工作空間時特別要注意空洞和空腔的存在。
該三自由度并聯(lián)機(jī)器人的機(jī)構(gòu)位置的反解方法描述如下,在給定機(jī)構(gòu)的各個結(jié)構(gòu)尺寸后,利用幾何關(guān)系,可以很容易寫出上下平臺各鉸鏈點在各自坐標(biāo)系中的坐標(biāo)值,然后通過坐標(biāo)變換即可求出上下平臺鉸鏈點在固定平臺坐標(biāo)系中的坐標(biāo)值(bi,Bj,,i=1,2,3)。這時3個驅(qū)動器桿長矢li(i=1,2,3)可在固定坐標(biāo)系中表示為
li=bi-Bi i=1,2,3
從而得到機(jī)構(gòu)的位置反解計算方程
上式是三個獨立的顯式方程,當(dāng)已知機(jī)構(gòu)的基本尺寸和上平臺的位置和姿態(tài)后,就可以利用上式求出3個驅(qū)動器的位移。一般求并聯(lián)機(jī)器人機(jī)構(gòu)其位置反解相對容易,而位置正解卻反而十分困難,這對于6自由度并聯(lián)機(jī)器人是十分突出的,當(dāng)并聯(lián)機(jī)器人的自由度小于6時,這種反差相對緩和一些。在給定3個桿長后,可以采用數(shù)值解法或解析解法得到動平臺中心點的位置和固定于運動平臺上的動坐標(biāo)的方向余弦矩陣。從而進(jìn)一步得到其工作空間。
3.5 機(jī)器人運動空間及預(yù)定運動軌跡的三維顯示
在以上各個模塊的功能實現(xiàn)基礎(chǔ)上即可實現(xiàn)三自由度并聯(lián)機(jī)器人機(jī)構(gòu)及運動學(xué)仿真。首先選擇或輸入機(jī)構(gòu)參數(shù),系統(tǒng)根據(jù)所選擇的機(jī)構(gòu)參數(shù)組建機(jī)構(gòu)、計算出其工作空間并加以三維顯示,可以實時縮放和轉(zhuǎn)換角度觀察。
而軌跡規(guī)劃則可分為在任務(wù)空間和關(guān)節(jié)空間兩種,在任務(wù)空間規(guī)劃,路徑中有不可達(dá)空間以及有多值解問題的影響,除特殊情況外,一般多在關(guān)節(jié)空間進(jìn)行規(guī)劃。軌跡是指每個自由度在運動過程中每時每刻的位置、速度和加速度。所謂機(jī)器人軌跡規(guī)劃,是根據(jù)作業(yè)要求,計算出機(jī)器人預(yù)期的運動軌跡,通常包括以下3方面的內(nèi)容:①根據(jù)機(jī)器人的任務(wù)要求,對其運動路徑和軌跡進(jìn)行描述。②根據(jù)所確定的軌跡參數(shù),在計算機(jī)內(nèi)部描述所要求的軌跡,這主要是選擇習(xí)慣規(guī)定以及合理的軟件數(shù)據(jù)結(jié)構(gòu)。③對內(nèi)部描述的軌跡進(jìn)行實時計算,生成機(jī)器人運動的位置,速度和加速度實時值。
以下是一種3-RPS三自由度并聯(lián)機(jī)器人的機(jī)構(gòu)仿真系統(tǒng)實例,如圖3所示。
[align=center]
圖3 3-RPS三自由度并聯(lián)機(jī)器人機(jī)構(gòu)仿真
圖4 系統(tǒng)結(jié)構(gòu)框圖[/align]
4 結(jié)論
本文介紹了一個機(jī)器人三維運動仿真系統(tǒng)。系統(tǒng)結(jié)構(gòu)框圖如圖4所示。在Windows NT環(huán)境下,通過AutoCAD建立幾何模型,采用Visual C++工具和OpenGL圖形庫進(jìn)行開發(fā),在PC機(jī)上實現(xiàn)了機(jī)器人的實時仿真,滿足了研究工作的要求。而且該系統(tǒng)具有良好的可擴(kuò)展性和交互性,在此基礎(chǔ)上,可進(jìn)一步進(jìn)行運動學(xué)、動力學(xué)、控制和規(guī)劃等方面的研究。