謝坤鵬 劉朝華 鄧三鵬 祁宇明
(天津職業(yè)技術師范大學機器人及智能裝備研究所,天津,300222)
隨著計算機軟硬件技術的飛速發(fā)展和計算機圖形學的日趨成熟,傳統(tǒng)地依靠文字來描述機器人位姿信息的監(jiān)控方式已不能滿足人們的需求,三維可視化仿真監(jiān)控技術應運而生。
三維可視化仿真監(jiān)控系統(tǒng)是通過實時獲取機器人的六關節(jié)角度值來同步驅(qū)動仿真系統(tǒng)3D 模型運動,實現(xiàn)3D模型與現(xiàn)實機器人位姿同步,從而提高監(jiān)控系統(tǒng)的直觀性。其中,建立3D 模型是仿真系統(tǒng)的關鍵技術之一,1988 年,代學耕等人總結了國外的仿真技術,并針對三維動態(tài)圖形顯示功能的通用化機器人仿真系統(tǒng)進行探討[1];俞文偉等人開發(fā)了一個ROSDIY 通用工業(yè)機器人圖形仿真軟件[2];孔凡斌等人實現(xiàn)了在UG 環(huán)境下的機器人按指定路徑的運動仿真[3];袁安富、朱華炳等人利用ADAMS 軟件對工業(yè)機器人圖形仿真進行研究[4-5];于天宇、王智興等人利用MATLAB 軟件對機器人進行了運動學仿真[6-7];邢迪雄等人利用CATIAV5 軟件對機器人運動學進行仿真[8];陳琳等人利用OpenGL 圖形接口對多機器人環(huán)境進行仿真[9]。筆者分析發(fā)現(xiàn):UG 軟件只能實現(xiàn)簡單的機構仿真,難以實現(xiàn)機器人的控制仿真;ADAMS 難以嵌入用戶開發(fā)算法;MATLAB 雖然易于算法的開發(fā)和仿真驗證,但難以直接驅(qū)動控制器;而OpenGL 是一個跨平臺、開源的圖形程序接口,沒有上述幾款軟件存在的問題,但是文獻[9]中沒有對OpenGL 中機器人動態(tài)模型的建立作詳細介紹,因此,本文基于SharpGL 開發(fā)出一套ABB 公司IRB120 機器人3D 仿真系統(tǒng),并詳細闡述了機器人3D 模型的建立方法。
由于微軟OpenGL 官方版本里缺少在.Net 框架下對OpenGL 開發(fā)接口(API)的支持,導致C#語言無法直接利用API 開發(fā)圖形程序,使得C#的簡單、實用、開發(fā)效率高等特性在OpenGL 開發(fā)中無法體現(xiàn)。針對這一問題,廣大的C#愛好者們對OpenGL 進行封裝,由此出現(xiàn)了一批適用于C#的OpenGL 第三方動態(tài)鏈接庫,SharpGL 正是其中一種。
SharpGL 是一個OpenGL 被封裝后的C#類庫集合,它主要包含SharpGL.dll(主OpenGL 對象,封裝所有OpenGL 函數(shù)、枚舉和擴展)、SharpGL.SceneGraph.dll(OpenGL 對象和場景元素的所有包裝,如燈光、材質(zhì)、貼圖、NURB、著色器等)、SharpGL.WinForms.dll(適用于應用程序的Windows 窗體控件)、SharpGL.WPF.dll(適用于應用程序的WPF 控件)、SharpGL.Serialization .dll(用于從3D Studio Max 文件、Discreet obj 文件和trueSpace 文件加載幾何圖形和數(shù)據(jù)的類)[10]。
由于機器人各軸零部件結構復雜,如果按照零部件的實際機械模型進行繪制,將產(chǎn)生大量的數(shù)據(jù)信息。為了提高仿真系統(tǒng)的運行效率及流暢性,本文在不影響機器人運動參數(shù)的條件下對模型進行簡化。圖1 是利用SolidWorks 三維軟件按照1:1 比例繪制出的機器人各軸零部件簡化模型。
圖1 機器人各軸零部件簡化模型
STL 文件格式(STereoLithography,光固化立體造型術的縮寫),是3D SYSTEMS 公司于1988 年制定的一個接口協(xié)議,同時也是一種為快速原型制造技術服務的三維圖形文件格式。該文件格式具有結構簡單、處理容易、與繪圖引擎無關等特點,逐漸成為快速成形領域中CAD 系統(tǒng)與制造設備之間常用的數(shù)據(jù)交換文件格式[11]。
STL 文件有兩種存儲格式,即二進制(BINARY)文件格式和文本(ASCII 碼)文件格式[12]。由于ASCII 碼比BINARY 具有描述簡單、可讀性強、易于編程和修改信息等優(yōu)點,故采用ASCII 碼的方式儲存機器人各軸3D 模型的數(shù)據(jù)信息。
本文將IRB120 機器人各軸零部件保存為STL 數(shù)據(jù)格式文件,以機器人基座零件為例,進行零件STL 格式文件的輸出?;鵖TL 文件輸出過程如圖2 所示。
圖2 基座模型STL 文件輸出過程
ASCII 碼格式的STL 文件可以用記事本程序打開,具體如圖3 所示。
圖3 STL 文件數(shù)據(jù)內(nèi)容
STL 文件逐行給出三角面片的幾何信息,每一行以1個或2 個關鍵字開頭,三角面片的信息單元 facet 是一個帶矢量方向的三角面片,STL 三維模型由這一系列的三角面片所構成。整個STL 文件的首行給出文件路徑及文件名,每一個facet 由7 行數(shù)據(jù)組成,facet normal 是三角面片指向?qū)嶓w外部的法矢量坐標,outer loop 說明隨后的3 行數(shù)據(jù)分別是三角面片的3 個頂點坐標,3 個頂點沿指向?qū)嶓w外部的法矢量方向逆時針排列。ASCII 格式的STL 文件結構如下:
根據(jù)STL 文件的數(shù)據(jù)特點,筆者發(fā)現(xiàn)三角面片的法向量及頂點數(shù)據(jù)具有相同的形式。因此本文采用C#語言標準IO 庫的File 類處理STL 文件,通過分割字符串將頂點數(shù)據(jù)保存到創(chuàng)建三維向量類屬性中。STL 文件的讀取流程如圖4 所示。
圖4 STL 文件讀取流程
本文首先利用SharpGL 提供的Cameras 類創(chuàng)建攝像機、OpenGL 類中的Light 方法創(chuàng)建場景燈光、OpenGL 類中的Material 方法創(chuàng)建機器人的材質(zhì);其次通過SharpGL的繪圖函數(shù)繪制仿真場景,場景展示如圖5 所示;然后利用SharpGL 提供的OpenGL 類中的Rotate 函數(shù)旋轉(zhuǎn)坐標系使Z 軸朝上,利用CallList 函數(shù)進行STL 格式中三角面片圖形的繪制;最后完成基座STL 文件在SharpGL 中的繪制,結果如圖6 所示。
圖5 場景圖
圖6 基座圖
D-H 建模方法是一種機器人通用的建模方法,該方法是在機器人的每根連桿上都固定一個坐標系,然后用4×4 的齊次變換矩陣來描述相鄰兩連桿的空間關系[13],利用通用矩陣變換可推導出機器人末端執(zhí)行器相對于基坐標系的位姿,從而建立機器人的運動學方程。
根據(jù)D-H 參數(shù)建模原則,利用IRB120 機器人的尺寸規(guī)格圖,建立D-H 坐標系,具體如圖7、圖8 所示,機器人的D-H 參數(shù)見表1,其中對于i 關節(jié)處的通用變換矩陣參數(shù),i是關節(jié)i-1 繞X 軸旋轉(zhuǎn)到與關節(jié)i 的Z 軸同向時的旋轉(zhuǎn)角度;a 是關節(jié)i-1 平移到與關節(jié)i 重合時在X 軸方向的平移量;di是關節(jié)i-1 平移到與關節(jié)i 重合時在Z 軸方向的平移量;i是關節(jié)i-1 繞Z 軸旋轉(zhuǎn)到與關節(jié)i 的X 軸同向時的旋轉(zhuǎn)角度。
圖7 機器人尺寸圖
圖8 機器人D-H 坐標系圖
表1 機器人D-H 參數(shù)
機器人相鄰連桿之間的D-H 坐標系變換矩陣[14-15]由
可以得到:
注:公式中的參數(shù)見表1。
機器人關節(jié)間的通用旋轉(zhuǎn)矩陣由
得到:
其中, 為對應第i 個關節(jié)的旋轉(zhuǎn)角度值。
機器人關節(jié)間的通用變換矩陣由
得到:
本文首先在SolidWorks 軟件中,將機器人各零部件的坐標系建立到如圖9 所示的各關節(jié)坐標系處,保證兩坐標系相同,再按照1.2 節(jié)中的方法將零部件另存為STL 數(shù)據(jù)格式。機器人各零部件坐標系建立如圖9 所示。
圖9 零部件坐標系建立
按1.4 節(jié)導入機器人基座部件依次乘以關節(jié)間的通用變換矩陣 ,再結合CallList 函數(shù),將上述經(jīng)過坐標系建立輸出的STL 格式文件在SharpGL 中繪制出來。繪制流程如圖10 所示(注:初始 =0)。
圖10 零部件繪制圖
本文設計的IRB120 機器人仿真系統(tǒng)能夠?qū)崿F(xiàn)手動輸入六關節(jié)旋轉(zhuǎn)角度,展現(xiàn)機器人位姿并計算出基坐標系下TCP 坐標。系統(tǒng)界面如圖11 所示。
圖11 仿真系統(tǒng)界面
本文利用ABB 公司仿真軟件RobotStudio 對本仿真系統(tǒng)的機器人正運動學仿真進行驗證。首先,在程序編輯器中新建例行程序并添加MoveAbsJ 指令,選中位置點并在調(diào)試中查看值,在查看值對話框中依次設置rax_1、rax_2、rax_3、rax_4、rax_5、rax_6 的數(shù)值(如圖12 所示);然后運行該例行程序?qū)C器人運動到相應位姿,在手動操作對話框中切換動作模式與坐標系,可以查看六關節(jié)角度信息及基坐標下TCP 點坐標(如圖13 所示);最后與本文設計的仿真系統(tǒng)做對比。對比結果如表2 所示,位姿對比結果如圖14 所示(注:rax_i 為對應第i 個關節(jié)的旋轉(zhuǎn)角度值)。
圖12 MoveAbsJ 角度設置結果
圖13 RobotStudio 中顯示結果
圖14 機器人位姿顯示結果對比
表2 IRB120 機器人仿真TCP 點坐標驗證
本文基于.Net 平臺,采用SharpGL 動態(tài)鏈接庫結合機器人D-H 參數(shù)建模方法,利用機器人關節(jié)間的通用變換矩陣,設計了一套IRB120 機器人的正向運動學三維可視化動態(tài)仿真系統(tǒng),為以后ABB 工業(yè)機器人3D 動態(tài)監(jiān)控系統(tǒng)的開發(fā)及機器人本體結構三維可視化仿真奠定了基礎。