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