徐玉飛,何嶺松,王宇順
(華中科技大學 機械科學與工程學院,武漢 430074)
近年來隨著計算機技術、網絡技術和圖形圖像技術高速發展和教育部門重視程度的增加,虛擬樣機技術越來越多地應用于各個學科的實驗教學中[1]。2017年,教育部指導高校開展新工科研究與實踐,倡導通過結合信息技術與工程教育的方式,達到提高工程教育的效率的目的[2]。在機器人學方面,由于實際實驗中可供學生操作的機器人數量有限,且學生作為初學者對機器人編程需要長時間構思和調試才能達到理想效果,降低了實驗教學的效率,增大了實際操作的風險。在機器人實驗教學中引入虛擬樣機,讓學生在實驗課之前通過虛擬樣機進行實驗訓練,將實驗室調試程序的前期過程轉移到課前的網上進行,可大幅度提高實際實驗課的效率[3-5]。
目前國內外已有不少優秀的工業機器人虛擬樣機的實現[6-8],如RobotStudio,Linux平臺上開源的ROS系統等。其中大部分平臺需要安裝復雜的軟件或插件,對電腦配置和運行環境有特定要求;一些商用平臺只提供特定廠商的機器人仿真,通用性較差。這些缺點在一定程度上限制了將它們直接作為機器人實驗教學平臺-使用的可能性。網頁是一種良好的跨平臺呈現形式,HTML5出現以后,極大的豐富了網頁的功能,弱化了瀏覽器對各種插件的依賴[9];同時,近年來出現的網頁圖形庫(Web Graphics Library,WebGL)、X3DOM(Extensible 3D+ Document Object Model,可擴展三維模型語言+文檔對象模型,X3D+DOM,)等無插件網絡三維顯示技術,更是將網頁的表現力提升到新的高度[10-11],并為基于網絡的無插件虛擬樣機應用提供了很好的技術實現手段。
本文采用HTML5+X3DOM的技術方案來構建網絡化無插件的工業機器人虛擬樣機,可直接在瀏覽器上運行,具有很好的通用性和跨平臺性。
HTML5廣義上是指包括HTML、CSS和JavaScript的一套技術組合。它在語義化、兼容性、多媒體支持等多方面進行了改進,其中新增的canvas畫布元素允許JavaScript直接在網頁上繪制二維、三維圖形,為網頁三維顯示提供了基礎[2]。X3DOM是一個基于文檔對象模型(Document Object Model,DOM)的HTML5/可擴展三維模型(Extensible 3D,X3D)集成模型,用于將三維場景顯示在瀏覽器上。X3DOM技術不僅實現了無插件的網頁三維顯示,而且與HTML5緊密結合,能通過DOM方法動態訪問模型的節點及屬性,將控制對象由模型文件細化到文件內部節點,具有良好的發展前景[13]。
基于HTML5與X3DOM的工業機器人虛擬樣機的總體設計方案如圖1所示。圖中X3DOM模塊以運動單元和活動部件為基礎,將機器人組裝成一個可控的模塊化三維虛擬模型,通過模型接口改變運動節點參數就可改變虛擬樣機的位姿;Javascript模塊負責進行邏輯和數學運算,包括解析用戶指令、運動插補和運動學求解,并可將計算結果傳遞給X3DOM模塊以實現的虛擬樣機的驅動;UI模塊則負責提供機器人控制界面和X3D模型的顯示環境。另外,還提供了一個云服務模塊,用于虛實結合實驗時與云端服務器進行通信,并實現與虛擬樣機外部的實驗室真實機器人的網絡連接,將學生在網頁虛擬樣機上調試完成的控制指令發送到真實機器人上,以觀察實際運行效果。

圖1 機器人虛擬樣機系統設計方案
建立機器人運動學模型是實現運動求解的重要前提。機器人運動求解包括正向求解和逆向求解兩部分,前者是已知關節變量求末端位姿的過程,后者是已知末端位姿求關節變量的過程。
(1)
式中:c為cos;s為sin;ai-1為連桿長度;αi-1為連桿扭角;di為相鄰連桿的偏距;θi為相鄰連桿長度方向的夾角。

(2)

在JavaScript腳本中將正解算法封裝為函數kinematicsEquation(input),其邏輯流程如圖2(a)所示。kinematicsEquation函數接受關節變量[q1,q2,…,qn]為輸入變量,經過正解輸出末端位姿[x,y,z,Ex,Ey,Ez],輸出變量將用于更新控制面板上機器人位姿參數或插補過程。
大多數工業機器人都滿足Pieper準則[],運動學反解具有封閉解,可采用反變換法[]求取運動學反解。機器人運動學反解通常會得到多組解,可通過機器人機械結構的限制排除部分不合理的解,剩余結果通過運動行程、運動時間、機器人功耗等指標選擇一組最優解。
在JavaScript程序中將反變換算法封裝為函數inverseKinematics(input),如圖2(b)所示。經過反解后,若存在有效的反解,將輸出關節變量,用于更新控制面板上機器人關節參數并控制三維模型運動至對應姿態;若所有反解結果皆無效,說明該位姿對應的目標點為奇異點或超出工作范圍,函數輸出空值NULL,用于提醒用戶修改機器人運動指令,避開此點。
(a) kinematicsEquation函數

(b) inverseKinematics函數
在工業機器人的三維顯示中,X3DOM負責提供工業機器人的三維模型,HTML5為其提供顯示環境。X3DOM提供了基礎的建模方法,可以通過語言描述建立簡單的幾何形狀,如立方體、球體、圓柱體等,但這種方式不適合建立復雜形狀模型。考慮到機器人模型復雜,選擇在建立三維模型后導出為X3D文件,并將其嵌入X3DOM程序中。HTML文件在嵌入X3DOM程序前調用X3DOM庫(包含x3dom.js和x3dom.css),在運行時調用 WebGL的3DAPI 在瀏覽器上進行3D圖形的實時渲染,實現無插件的網頁三維顯示。
為便于模型的運動控制,將機器人各部件單獨導出為X3D文件,再新建一個X3D裝配文件,調用各部件的X3D模型并進行“虛擬裝配”:即根據連桿間的結構關系進行節點嵌套,根據連桿之間的位置和角度關系調整
經過節點嵌套的機器人各部件之間具有父子關系,父節點的狀態變化會影響所有子節點的狀態,這樣就將機器人三維模型封裝為一個外部可控的X3DOM虛擬樣機。例如,將關節4所在的節點繞X軸旋轉90°,就可實現旋轉關節4后面嵌套的所有模型一起繞X軸旋轉了90°。這與真實機器人的連桿運動關系保持一致。
工業機器人的X3D模型嵌入HTML文件后,成為HTML的DOM模型的一部分,可以通過DOM方法來訪問和修改模型內部節點的屬性。X3DOM的這種特性非常方便地控制機器人連桿的運動。
document.getElementById("rot1").
setAttribute('rotation', '0,0,1,3.14159');
上述代碼將rot1節點rotation屬性的值修改為‘0,0,1,3.14159’。rotation屬性值由4個數字組成,前3個數字組成一個三維空間內的單位向量,指定旋轉軸的方向,第4個數字指定繞軸旋轉的弧度,因此上述代碼的幾何意義是將關節1繞Z軸旋轉180°。在此基礎上,將機器人的X3DOM模型封裝為一個模塊,接受關節變量[q1,q2,…,qn]為輸入,通過上述DOM方法依次修改關節對應節點的rotation(旋轉關節)或translation(移動關節)屬性,即可將工業機器人模型各個關節旋轉/移動至指定的姿態。
將工業機器人的運動學求解模塊與工業機器人X3DOM模塊相結合,即可實現工業機器人虛擬樣機的基本功能。用戶可以通過關節控制和末端控制兩種方式控制機器人的運動:關節控制方法中,用戶在控制界面上改變機器人關節變量,關節變量傳入JavaScript腳本中,經過運動學正向求解得到機器人末端位姿并顯示到界面上,同時關節變量數據被傳遞給X3DOM模塊,通過DOM方法控制各個連桿模型運動,機器人三維模型運動至對應位姿;末端控制方法中,用戶在控制界面上改變機器人末端坐標和姿態,位姿變量傳入JavaScript腳本中,經過運動學反向求解得到機器人關節變量并顯示到界面上,同時關節變量數據被傳遞給X3DOM模塊,通過DOM方法控制機器人三維模型運動至對應位姿。
圖3 機器人模型的“虛擬裝配”
工業機器人虛擬仿真實驗平臺的指令系統參考工業機器人控制語言RAPID語言[]建立,基本運動指令語句的結構為:“MoveType Piont1 ( , Piont2) , Speed ,Zone,Tool;”,指令含義為:“運動類型 示教點1(,示教點2),速度參數,轉角參數,工具參數;”。指令系統中有3種基本運動類型,分別是MoveJ:關節運動、MoveL:直線運動、MoveC:圓弧運動。除運動指令外,還包含一些簡單的信號處理指令,如“Set/Reset”可將數字輸出信號置位或復位,用于控制外部工具。
工業機器人虛擬實驗平臺也模擬了實際工業機器人的示教功能,在機器人特定的位姿狀態添加示教點,被標記過的示教點信息被后臺記錄,同時也顯示在頁面上的示教區。設置示教點之后在機器人指令編程中可以直接調用已定義的示教點,簡化了編程,提高了機器人運動路徑的準確性。
以指令編程方式控制機器人運動的邏輯流程如圖4所示。工業機器人虛擬樣機中,用戶在圖形界面上輸入的指令以字符串的形式傳遞到JavaScript腳本中的指令解析模塊,通過字符串匹配的方式獲取每一條指令的運動類型和運動參數(包括示教點、運動速度等)信息。按照運動類型的不同選擇不同的插補算法,依次計算并輸出運動軌跡上插補點的位姿。指令解析和插補模塊輸出的插補位姿傳遞給運動學求解模塊,輸出關節變量到X3DOM模塊,最終實現指令對工業機器人虛擬樣機的控制。

圖4 運動指令解析與插補流程圖
實驗平臺遠程控制使用機器人為IRB120型工業機器人,實現遠程控制的關鍵在于虛擬樣機與真實機器人之間建立網絡通信。機器人控制系統安裝PC Interface組件,虛擬樣機的云服務器安裝node.js環境,二者之間即可通過TCP通信建立連接。機器人控制器已具備對機器人本體的指令控制功能,只需要將網頁上調試好的控制代碼經由云服務器以字符串的形式發送到機器人控制器,機器人控制器將收到的字符串解釋為可執行的運動指令,即可實現虛擬樣機對真實機器人的遠程控制。
HTML5具備豐富的多媒體處理功能,可以使用網絡攝像頭監控真實機器人運動,將實時的監控視頻無插件地嵌入到HTML5頁面中,更加直觀地對比虛擬樣機與真實機器人的運動。
工業機器人虛擬樣機可應用于多種實驗教學場景中。實驗平臺運行于云服務器,用戶無需安裝軟件或插件,只要通過Chrome瀏覽器訪問實驗網址,即可在虛擬樣機上進行實驗訓練。
典型機器人虛擬實驗界面如圖5所示,實驗界面包含實驗說明書、虛擬實驗演示、開始實驗和課后訓練4個目錄選項。選擇開始實驗后,頁面左側顯示機器人虛擬模型、右側為虛擬機控制UI,包含機器人關節變量、末端位姿、工具選項、示教點以及控制指令等內容。

圖5 機器人虛擬實驗界面
機器人虛擬實驗的基本操作流程為:
(1) 在工具選項中為機器人選擇合適的工具并加載;
(2) 改變機器人關節變量或末端位姿,控制虛擬樣機模型運動至指定位置;
(3) 點擊添加示教點,或在示教點區域按照指定格式輸入示教點信息;
(4) 輸入機器人控制指令;
(5) 點擊提交,機器人模型按指定軌跡和速度運動。
為驗證仿真結果的準確性,在虛擬樣機和真實的工業機器人上分別使用同樣的示教點和運動指令,進行了焊接實驗。虛擬樣機與真實機器人運行過程的對比如圖6所示。


(a) 虛擬樣機仿真效果


(b) 實際運行結果
實驗結果表明,虛擬樣機能有效執行運動指令,樣機模型與實際機器人的運動軌跡基本保持一致,運動仿真具有較高準確性。
為驗證仿真運動與實際機器人運動的同步性,在遠程控制頁面中,將虛擬樣機上調試通過的運動指令經由服務器發送給遠程機器人,樣機模型與實際機器人同時開始執行同樣的指令,運動過程的對比如圖7所示。

(a) 碼垛開始

(b) 碼垛過程1

(c) 碼垛過程2

(d) 碼垛結束
實驗結果表明,樣機模型與遠程機器人在執行相同指令時,運動速度和執行時間基本一致,仿真具有較好的同步性。此外,二者運動的延時控制在毫秒級別,體現出遠程控制的實時性。
除關節型機器人外,還設計并實現了并聯型機器人、圓柱坐標機器人以及直角坐標機器人的虛擬樣機,如圖8所示。

(a) 并聯型機器人

(b) 圓柱坐標機器人

(c) 直角坐標機器人
基于HTML與X3DOM技術設計實現了工業機器人虛擬樣機,利用X3DOM、HTML以及JavaScript實現對仿真模型的顯示和控制,并在此基礎上增加了虛擬樣機對真實機器人的遠程控制功能。實驗證明,本文設計的虛擬樣機可以很好地模擬真實機器人的運動和控制。在虛擬實驗平臺上進行的實驗訓練能夠有效地幫助學生進行課前預習和代碼調試。與現有的機器人虛擬樣機相比,本文設計的虛擬樣機不需要安裝任何軟件或插件,用戶只需要通過瀏覽器訪問實驗網站即可進行實驗訓練,便于平臺的使用和推廣,對實驗教學具有一定意義。