模型層利用OpenGI和MFC類庫,構建了一系列底層的類對象,RobotM利用這些封裝好的類對象來構建場景以及完成場景和用戶的交互。在RobotM設計中增加了空間實體、空間模型、機器人模型的概念。
空間實體就是單個的最簡單的部件,而空間模型是若干個實體按照一定方式的組合。由于機器人仿真具有一定的特殊性,把機器人設定為一個實體或者一個模型顯然是不合適的,所以可以把機器人以每一個轉軸為界限分割成若干部分,而把分割好的各個部分都作為空間模型,從而形成了若干空間實體一空間模型,若干空間模型一機器人模型的組合方式。
利用這種分層次的組合方式可以很容易控制仿真程序的顯示和交互,例如利用RobotM仿真一個汽車焊接生產線時,用一個空間模型對象來描述汽車對象可以很容易地控制這個汽車對象。RobotM對于每種空間實體類型都利用OpenGI提供的GlgenList/glCallList函數實現了一套構建/繪制的函數,利用空間實體一空間模型一機器人模型的組織方式和C++面向對象技術中的多態性,最終把機器人模型和空間模型的繪制工作都歸結為空間實體對象的繪制。
RobotM把仿真內容保存為流文件。文件是按照分層結構且以相對路徑存儲并設計的,即工作區、機器人模型、空間模型、路徑等文件如圖2所示,用戶通過打開工作區文件從而搜索并獲取其他類型文件的信息以建立場景對象。機器人、模型、路徑文件都可以為其他的工程所用,具有比較良好的重用性;相對路徑使得用戶即使改變了工程目錄存放的位置也不會影響文件的獲取,增加了RobotM的健壯性。
2.2場景層設計
場景層主要功能是完成場景中對象的建立、保存、繪制以及交互。作為模型層和示教層的中間層,場景層是機器人仿真系統中的連接部分。場景層從文件建立的過程如圖3所示。
?
由圖3可以看出場景的建立是一個從若干文件到仿真程序的空間實體對象的轉換過程,RobotM把用戶選取的工作區和其他一系列的文件轉化為RobotM 可以識別的數據結構對象;同樣的,把RobotM中的數據結構對象根據一定規則寫入文件完成了保存過程。場景的繪制是仿真程序的重要部分。場景層利用模型層的實體繪制的接口,通過場景一(機器人)一空間模型一空間實體的方式調用各自的繪制函數,RobotM需要在屏幕上顯示動畫來表示仿真結果,所以程序的繪制效率十分重要。
除了運用普通的OpenGI繪制的各種增加效率的方式之外,本文為提高繪圖效率,在RobotM中提出了“必要重構”的方法。即利用幾個BOOI量做為場景的各個部分(包括機器人模型、空間模型等部分)的重構標志(重構是指利用OpenGL提供的glGenIist函數將需要繪制的內容保存在內存區域中,每次繪制時直接從中提取,而不需要再次組織)。RobotM在繪制的每一幀都只重構改變過位置或者旋轉角度的對象(機器人模型和空間模型對象包括在內),而對于沒有改變的對象則直接調用glCallList將對象繪制出來。這樣每一幀的繪制效率有很大提高,在程序仿真的時候不會出現顯示打頓的現象。
基于OpenGI的工業機器人三雛仿真設計與實現場景的交互提供給用戶比較便捷的操作功能。用戶根據自己的需要可以修改觀察和控制整個場景的方式(如旋轉、平移、改變光照等),還可以直接用鼠標在場景中選取目標點或者空間實體。
2.3示教層設計
示教層主要是完成離線編程設計。上2層已經為示教層的設計打下了良好的基礎。機器人離線編程的關鍵內容是能夠根據用戶的輸入確定仿真程序中機器人的運動方式和機器人運動位置,這種關系與實際機器人和示教盒之間的關系相類似。RobotM通過保存各個位置點和各個點之間的運動方式來描述機器人運動的軌跡來實現仿真。
RobotM有一個小型解釋器,他能夠實現機器人編程語言和RobotM能夠識別的運動文件格式的相互轉換。由于機器人編程實現的運動程序編譯器有自己的語法和語義,所以RobotM必須能夠實現控制柜運行的機器人控制文件和RobotM設計的程序相互轉換。
RobotM提供了2種確定機器人仿真運動末端點的方式:即轉角運動和定點運動。轉角運動如同實際機器人運動中的示教盒示教,能夠通過用戶輸入在仿真程序中,使得指定的機器人各個關節部分運動,從而實現機器人的轉角運動;而定點運動是RobotM中相對來說比較重要的同時也是轉角運動無法做到的。利用場景層提供的接口,用glLoadName給場景中的每個需要確定位置的空間實體/空間模型/機器人模型創建惟一標示的ID,在用戶鼠標選取空間中的點時利用ID來確定用戶所選取的對象,在獲取對象之后利用OpenGI的glUnProjeet函數獲取鼠標點擊位置在空間中的“世界”坐標系下的位置,完成鼠標平面坐標一空間坐標的轉換,利用仿真機器人的運動方法使仿真機器人末端點運動到該空間坐標,從而確定機器人需要運動到的某個點的位置。
通過若干步的上述2種過程的重復,完成這一系列點的設置,可以創建出路徑文件。路徑文件可以用來仿真也可以下傳到機器人控制柜。
評論
查看更多