孫愷廷,朱雋垚,于存貴,周成
(1. 南京理工大學 機械工程學院,江蘇 南京 210094;2. 湖北江山重工有限責任公司 火箭炮研究院,湖北 襄陽 441057)
隨著工業(yè)機器人在工業(yè)領(lǐng)域的普及和推廣,工業(yè)機器人將會越來越多地代替人完成一些高難度、高風險、工作環(huán)境惡劣的工作,在這種情況下如何實現(xiàn)對工業(yè)機器人的有效監(jiān)控就顯得非常重要了。近年來,隨著計算機仿真技術(shù)的發(fā)展,基于實時數(shù)據(jù)驅(qū)動的工業(yè)機器人三維虛擬監(jiān)控系統(tǒng)備受關(guān)注,國內(nèi)外許多學者也對此進行了研究,但是普遍存在系統(tǒng)開發(fā)門檻高、開發(fā)效率低、系統(tǒng)可移植性差、監(jiān)控方式單一等問題。
目前,可實現(xiàn)虛擬監(jiān)控系統(tǒng)的方式大致可以分為4類[1-6]:
1) 利用三維動畫軟件實現(xiàn)
通過預先設計好三維模型的各種動作,如:轉(zhuǎn)動、平移、縮放等,利用三維動畫制作軟件建模,生成控制對象各種角度、姿態(tài)對應的圖片,并按一定的規(guī)則對其進行編號。在顯示時,只需計算控制對象對應的圖片編號并加以調(diào)用顯示就可以達到實時仿真的目的。但是由于該方法只能在可知范圍內(nèi)對控制對象的簡單動作進行動畫演示,在控制對象動作復雜、運動趨勢不確定的情況下采用三維動畫制作軟件的方式實現(xiàn)虛擬監(jiān)控,往往會造成系統(tǒng)龐大、實時性差以及控制對象動作失真的情況。
2) 直接利用OpenGL實現(xiàn)
OpenGL(open graphics library,開放圖形庫)是一種適用于渲染2D、3D矢量圖形的跨語言、跨平臺的應用程序編程接口(API)。這個接口由近350個不同的函數(shù)調(diào)用組成,是一種獨立于硬件設備和操作系統(tǒng)的圖形與硬件的接口,開發(fā)人員可以利用它開發(fā)出功能強大的交互圖形應用程序。由于OpenGL的核心API沒有窗口系統(tǒng)、音頻、打印、鍵盤/鼠標或其他輸入設備的概念,這就意味著如果直接使用OpenGL開發(fā)虛擬監(jiān)控系統(tǒng)需要自己完成窗口界面的設計、交互程序的開發(fā)以及模型對事件的響應等底層程序開發(fā)工作。這些程序開發(fā)工作要求開發(fā)者熟練掌握C/C++和Java語言,這對非計算機專業(yè)的人員來說,直接使用OpenGL開發(fā)復雜的三維應用程序是比較困難的。
3) 利用Web3D技術(shù)實現(xiàn)
目前,Web3D的實現(xiàn)有幾十種可供選擇的技術(shù)和解決方案,相關(guān)的軟件有30多種,并且仍然有新的技術(shù)出現(xiàn),使Web3D的渲染速度、圖形質(zhì)量、造型技術(shù)、交互性以及數(shù)據(jù)的壓縮與優(yōu)化等不斷得到提高。典型的Web3D技術(shù)有:Cult3D、Java3D、Atmosphere、Direct3D、Viewpoint、X3D/VRML2.0(VRML1997)等。但是,由于缺乏統(tǒng)一的標準,各種技術(shù)都是由不同的廠商自行開發(fā)的解決方案,使得每種技術(shù)使用的都是不同的格式和方法,而且?guī)缀趺總€廠商開發(fā)的標準都需要自己的插件支持,這極大地限制了Web3D技術(shù)的應用。
4) 基于虛擬現(xiàn)實技術(shù)的多軟件協(xié)同實現(xiàn)
采用虛擬現(xiàn)實開發(fā)引擎如Unity 3D、IdeaVR,結(jié)合三維實體建模軟件如Solidworks、Creo,模型渲染軟件如Maya、3Ds Max協(xié)同開發(fā)虛擬現(xiàn)實系統(tǒng)。采用多軟件協(xié)同開發(fā)的優(yōu)勢在于可以充分發(fā)揮各專業(yè)軟件的性能優(yōu)勢,減少系統(tǒng)底層開發(fā)的工作量,降低了系統(tǒng)的開發(fā)門檻,縮短了系統(tǒng)的開發(fā)周期。
綜上所述,本文選擇第4種方式開發(fā)虛擬監(jiān)控系統(tǒng)。具體來說,以ABB公司生產(chǎn)的六自由度串聯(lián)工業(yè)機器人IRB1400本體和IRC5控制器組成的機器人控制系統(tǒng)為研究對象,通過Creo三維實體建模、3DS Max模型渲染、Unity3D虛擬場景構(gòu)建以及TingWorx采集數(shù)據(jù)實現(xiàn)虛擬監(jiān)控系統(tǒng)的成功上線。系統(tǒng)的開發(fā)可分為3個階段:模型構(gòu)建、實時數(shù)據(jù)采集傳輸以及基于實時數(shù)據(jù)的模型驅(qū)動。
在工業(yè)機器人的三維虛擬監(jiān)控系統(tǒng)開發(fā)中,首先要進行的就是三維模型的構(gòu)建。建模是對現(xiàn)實對象或真實環(huán)境的模擬,逼真的模型是實現(xiàn)虛擬現(xiàn)實系統(tǒng)真實感和沉浸感的基礎[7]。
本系統(tǒng)三維模型構(gòu)建的具體步驟:
1)模型數(shù)據(jù)的采集
本系統(tǒng)以個性化印章生產(chǎn)線中的搬運機器人為原型,工業(yè)機器人的外觀、幾何參數(shù)來自于設備廠商,紋理信息來自實地拍攝的照片,其他場景、設備信息根據(jù)需求實地測量或者合理設計獲得。
2)模型創(chuàng)建
采用Creo軟件創(chuàng)建工業(yè)機器人三維實體模型。為提高三維虛擬監(jiān)控系統(tǒng)的性能,在模型創(chuàng)建時就需要刪除機械臂、控制柜內(nèi)部等具體結(jié)構(gòu)中一些不可見的、不必要的幾何元素。
3) 模型渲染
在3DS Max軟件中,渲染創(chuàng)建好的三維實體模型,利用材質(zhì)、紋理貼圖模擬真實材料的質(zhì)感,使模型具有真實材質(zhì)紋理的感官效果。為方便后續(xù)在Unity3D中定義機械臂的動作,每一個運動單元都應是一個獨立的物體,如圖1所示。
圖1 機械臂關(guān)節(jié)獨立示意圖
4) 場景搭建
將3DS Max軟件渲染完成的模型以.FBX格式導入Unity3D中,然后將機械臂以及其他模型添加到場景的合適位置,調(diào)整模型各個屬性的參數(shù)值,添加燈光效果,使模型具有光學上的真實感。場景模型如圖2所示。
圖2 系統(tǒng)場景模型
工業(yè)機器人三維虛擬監(jiān)控系統(tǒng)是由真實的設備數(shù)據(jù)進行驅(qū)動的,因此需要將機械臂各關(guān)節(jié)的實時角度、末端的世界坐標以及末端執(zhí)行器的狀態(tài)信息采集、傳輸?shù)綌?shù)據(jù)庫。具體實現(xiàn)過程可分為兩步進行:使用ABB提供的PC SDK開發(fā)上位機程序讀取需要監(jiān)測的數(shù)據(jù)信息;基于Remoting協(xié)議采用C#語言編寫應用程序?qū)?shù)據(jù)與ThingWorx進行對接。
ABB提供的PC SDK允許系統(tǒng)集成商、第三方或個人用戶為IRC5控制器添加自定義的應用程序。這種自定義的、獨立的應用程序通過網(wǎng)絡與機器人控制器進行通信,并可以作為獨立的PC應用程序使用。本文通過該PC SDK開發(fā)的應用程序的功能主要包括兩部分:掃描在線的ABB機器人;采集所有在線機器人的六關(guān)節(jié)軸角度以及末端的世界坐標和IO信息(末端執(zhí)行器狀態(tài)),數(shù)據(jù)采集結(jié)果如圖3所示。程序運行結(jié)果表明有2臺ABB機器人在線,這也是符合現(xiàn)場實際狀態(tài)的。
圖3 工業(yè)機器人數(shù)據(jù)采集結(jié)果
ThingWorx提供了相應的數(shù)據(jù)訪問接口,只需在開發(fā)環(huán)境中使用C#語言將數(shù)據(jù)與相應的接口進行綁定,就可以實現(xiàn)數(shù)據(jù)的上傳;由于ThingWorx內(nèi)部已經(jīng)集成了PostgreSQL數(shù)據(jù)庫,對于上傳的數(shù)據(jù)會進行自動保存,這大大簡化了開發(fā)過程。數(shù)據(jù)傳輸部分程序如圖4所示。
圖4 數(shù)據(jù)傳輸部分程序
基于實時數(shù)據(jù)的模型驅(qū)動是實現(xiàn)虛擬監(jiān)控系統(tǒng)的關(guān)鍵環(huán)節(jié),其實現(xiàn)過程可分為以下4部分內(nèi)容:建立合理的層次關(guān)系、從ThingWorx獲取實時數(shù)據(jù)、對實時數(shù)據(jù)進行解析以及將數(shù)據(jù)與運動單元進行綁定。
虛擬場景采用場景樹進行管理,利用樹結(jié)構(gòu)來表現(xiàn)物體之間的層級關(guān)系,子節(jié)點是父節(jié)點的子物體,所有節(jié)點是根節(jié)點的子物體。工業(yè)機器人的層次關(guān)系如圖5所示。
圖5 模型的層次關(guān)系
ThingWorx支持網(wǎng)頁訪問數(shù)據(jù)庫,因此本文通過編寫C#程序訪問特定網(wǎng)址的方式獲取實時數(shù)據(jù),并設定數(shù)據(jù)讀取頻率。update函數(shù)可實現(xiàn)每秒50次的數(shù)據(jù)更新,但考慮實際應用需求和服務器處理能力,設定數(shù)據(jù)讀取頻率為10。部分程序如圖6所示。
圖6 獲取實時數(shù)據(jù)
因為數(shù)據(jù)庫中包含車間所有設備的狀態(tài)數(shù)據(jù),如圖7所示。因此在獲取實時數(shù)據(jù)后,還需要對數(shù)據(jù)進行匹配和解析。部分程序如圖8所示。
圖7 數(shù)據(jù)庫中的實時數(shù)據(jù)
圖8 數(shù)據(jù)解析
這里使用了Unity3D提供的Dotween插件,它提供了常用運動的API函數(shù),可以快速對模型的運動進行定義。部分程序如圖9所示。
圖9 基于實時數(shù)據(jù)的模型驅(qū)動
工業(yè)機器人三維虛擬監(jiān)控系統(tǒng)最終是通過網(wǎng)頁的形式進行發(fā)布的。本文通過示教器手動隨機操作機器人的方式驗證系統(tǒng)的監(jiān)控效果,并通過調(diào)整Dotween API函數(shù)的參數(shù),實現(xiàn)模型運動與真實運動的同步?,F(xiàn)場調(diào)試過程如圖10所示。
圖10 現(xiàn)場調(diào)試
本文研究了一種基于多軟件協(xié)同的方式實現(xiàn)工業(yè)機器人三維虛擬監(jiān)控系統(tǒng),提出一種基于Creo、3DS Max、Unity3D、ThingWorx軟件相結(jié)合的工業(yè)機器人三維虛擬監(jiān)控系統(tǒng)的快速開發(fā)方法。使用SDK編寫自定義的數(shù)據(jù)采集程序?qū)崿F(xiàn)工業(yè)機器人實時數(shù)據(jù)的上傳,簡化了系統(tǒng)的結(jié)構(gòu);采用虛擬現(xiàn)實的方式實現(xiàn)監(jiān)控過程,其效果更加逼真,人機交互性更好;采用網(wǎng)頁的形式進行發(fā)布,允許移動智能終端的訪問,提高了監(jiān)控的便捷性。由于本監(jiān)控系統(tǒng)僅作為數(shù)字化車間三維虛擬監(jiān)控系統(tǒng)的一部分內(nèi)容,整體系統(tǒng)還未開發(fā)完畢,對工業(yè)機器人的監(jiān)控只是作為系統(tǒng)可行性的驗證,接下來將整合整個車間的生產(chǎn)過程,并在場景性能優(yōu)化、人機交互、可視化管控等方面繼續(xù)研究。