莊嚴 盧阿麗 楊慶
摘 要 針對日益增長的機器人技術(shù)教學(xué)培訓(xùn)需求,研究并設(shè)計了一款機器人仿真實驗系統(tǒng)。系統(tǒng)軟件以FANUC M-iA系列工業(yè)機器人原型為依據(jù),使用SolidWorks和3ds Max進行建模,并將模型導(dǎo)入Unity3D,編程實現(xiàn)對機器人的操控,軟件效果逼真,可實時交互,為同類虛擬現(xiàn)實實驗系統(tǒng)的開發(fā)設(shè)計提供了經(jīng)驗和參考。
【關(guān)鍵詞】Unity3D 機器人 虛擬現(xiàn)實
實驗是機器人技術(shù)教學(xué)中的重要環(huán)節(jié),目前的授課,大多數(shù)是以理論講解結(jié)合視頻動畫方式進行,缺少實際操作。而真實的工業(yè)機器人類型較多、價格昂貴,對實驗環(huán)境要求嚴格,批量采購和建設(shè)存在一定的困難。隨著虛擬現(xiàn)實(Virtual Reality,簡稱VR)技術(shù)的不斷進步, 虛擬實驗室已得到了廣泛的認可和應(yīng)用。其主要思路是通過VR技術(shù),對實驗設(shè)備和環(huán)境的仿真模擬,讓實驗者具有親臨工作現(xiàn)場進行實際操作的感受。
1 系統(tǒng)總體分析與三維建模
根據(jù)實際教學(xué)情況,虛擬實驗系統(tǒng)的建立主要包括:實驗室、機器人的仿真和示教器模擬三個部分。實驗室仿真包含實驗室建模和場景漫游設(shè)計;機器人仿真包含零部件的建模組合以及運動虛擬化;示教器模擬包括操作界面的制作和控制實現(xiàn)等。系統(tǒng)的開發(fā)流程分為兩個階段:建模和運動仿真。建模階段:首先對教學(xué)單位進行調(diào)研,詳細分析用戶需求,收集實驗室和機器人的數(shù)據(jù)和素材,然后使用建模工具進行各部件建模及場景搭建;系統(tǒng)仿真階段:將制作完成的模型整體導(dǎo)入Unity3D開發(fā)環(huán)境,設(shè)計用戶界面,編寫腳本實現(xiàn)對機器人控制,最終進行封裝并發(fā)布。
VR系統(tǒng)要求對實體與環(huán)境的模擬實時逼真。早期的三維模型多數(shù)是對物體形態(tài)的簡化和抽象,隨著建模工具的不斷升級進步,用戶越來越注重視覺效果,實物精度和逼真程度也成為建模工作的重要指標(biāo)。本實驗系統(tǒng)所需模型包括實驗室內(nèi)部實景和機器人實體,經(jīng)實踐和分析,選擇了3ds Max和SolidWorks作為建模工具。3ds Max功能強大,控制選項豐富,但對于機械零件建模存在不足。首先,對于形狀較規(guī)則的零件,繪制截面時,點的精準定位困難,過程相當(dāng)繁瑣;其次,不規(guī)則零件建模時,分幾個部分利用不同的方法建模后再進行組合,不利于修改,并且表面圓滑處理會造成模型面數(shù)增多,文件體積增大。使用SolidWorks三維制圖軟件進行機械零件建模十分方便,模型尺寸都可用工具標(biāo)注,在更改時只需改變尺寸,無需重建。對于標(biāo)準部件,可先根據(jù)變量參數(shù)驅(qū)動三維結(jié)構(gòu)直接得到模型,如需新建,只要更改變量重建即可,建模效率極高。雖然SolidWorks建模數(shù)據(jù)精度高,但對物體的表面渲染功能欠缺,逼真度不夠。
基于以上原因,實驗場景建模使用3ds Max完成,步驟包括:幾何體建模和編輯、設(shè)置材質(zhì)及燈光效果、進行場景渲染及烘焙、最后導(dǎo)出.fbx格式模型文件和.tga格式的貼圖素材供Unity3D導(dǎo)入并使用。對于部件,先采用SolidWorks進行制作,模型保存為.STL格式文件然后再導(dǎo)入3ds Max進行渲染烘焙處理,同樣得到.fbx及.tga格式文件供Unity3D處理。
2 實驗環(huán)境場景設(shè)計
Unity3D是實現(xiàn)三維實時互動效果的綜合開發(fā)軟件,它支持多平臺發(fā)布,效果逼真,已成為開發(fā)VR項目的主流引擎。Unity3D開發(fā)效率高,但它并非建模、渲染的專門工具,一些材質(zhì)效果無法直接表現(xiàn)。較好的處理方式就是導(dǎo)入3ds Max渲染和烘培過的模型即表面素材文件,通過“貼圖”方式為實體附上紋理,然后添加直射光對象呈現(xiàn)光照效果。本系統(tǒng)采用了C#語言進行腳本編寫,實現(xiàn)各種功能。
2.1 場景漫游的實現(xiàn)
虛擬實驗系統(tǒng)提供了漫游式的場景瀏覽界面,操作者使用鼠標(biāo)控制位移和視角變化。該效果通過Unity3D引擎的內(nèi)置攝像機(Camera)對象來實現(xiàn)。首先創(chuàng)建攝像機并設(shè)置其組件,然后編寫腳本使其可以呈現(xiàn)并控制整個場景。設(shè)計中,采用了鼠標(biāo)左鍵控制視角、滾輪控制前進后退的操控方式,關(guān)鍵代碼如下:
//鼠標(biāo)滾輪控制z軸視角前后方向的移動
if (Input.GetAxis("Mouse ScrollWheel") != 0){
Camera.main.transform.Translate (0, 0, Input.GetAxis ("Mouse ScrollWheel"));
}
// 按下鼠標(biāo)左鍵控制視角左右方向的偏移及歐拉角度旋轉(zhuǎn)偏移
if (Input.GetMouseButton (0)) {
Camera.main.transform.Rotate (-Input.GetAxis ("Mouse Y"),
Input.GetAxis ("Mouse X"), 0);
Camera.main.transform.eulerAngles = new Vector3(Camera.main.transform.eulerAngles.x,
Camera.main.transform.eulerAngles.y,0);
}
//按下鼠標(biāo)中鍵或滾輪微調(diào)視角左右方向的偏移
if (Input.GetMouseButton (2)) {
Camera.main.transform.parent.Translate (-Input.GetAxis ("Mouse X")/50,
-Input.GetAxis ("Mouse Y")/50, 0);
}
2.2 設(shè)計物理阻擋
場景設(shè)計中,物理阻擋和碰撞的處理是不可缺少的部分。否則,在漫游操作時會穿過墻壁,物體在運動時也會穿透其它障礙物,產(chǎn)生場景的失真。
在Unity3D中,處理碰撞和阻擋的常用方法是為實體對象添加碰撞體(Collider)和剛體(Rigidbody)組件,然后通過編寫碰撞體狀態(tài)函數(shù)來體現(xiàn)阻擋或碰撞的效果。場景中的各種物體都可以添加不同形狀的碰撞體,如:給桌子添加盒型碰撞體(Box Collider)、為地面添加地形碰撞體(Terrain Collider)等。
3 機器人及示教器仿真
實驗系統(tǒng)以FANUC M-iA 系列機器人為參照依據(jù)。該系列機器人具有6 自由度關(guān)節(jié)動作, 每個關(guān)節(jié)都由一個電機驅(qū)動控制。機器人可以根據(jù)末端裝置的不同, 從事噴涂、搬運或弧焊等不同工作。該系列機器人的外型結(jié)構(gòu)基本一樣,差別在于不同型號機器人關(guān)節(jié)轉(zhuǎn)角范圍、最大轉(zhuǎn)速以及末端載重參數(shù)不同。因此,在進行運動仿真設(shè)計時,要結(jié)合不同型號的性能進行模擬。
3.1 機器人運動仿真
Unity3D 可將多個模型組合到一個預(yù)制體(Prefabs)中,組合后的預(yù)制體即為一個整體。邏輯上可以把預(yù)制體當(dāng)作一個父對象來處理,當(dāng)父對象運動時,它包含的每個子對象都會做同樣的運動,虛擬機器人的運動正是通過這樣的方式來實現(xiàn)的。機器人的手臂及手腕的運動取決于6個關(guān)節(jié)的旋轉(zhuǎn),一方面需將部件合理地組合成預(yù)制體,并確定它們相互間的層級關(guān)系;另一方面正確設(shè)置各預(yù)制體的旋轉(zhuǎn)軸,編寫腳本使其以及以指定的方向和速度旋轉(zhuǎn)。即操作指令發(fā)出后,聯(lián)動的預(yù)設(shè)體及其子部件一起沿指定中心軸旋轉(zhuǎn),從而呈現(xiàn)機器人的各種動作。
實際機器人具有6個旋轉(zhuǎn)關(guān)節(jié)。在創(chuàng)建預(yù)制體時,關(guān)節(jié)J1~J6分別對應(yīng)預(yù)制體j1~j2。 J1的旋轉(zhuǎn)軸為Y 軸,J2、J3、J5 的旋轉(zhuǎn)軸皆為 Z軸,J4、J6的旋轉(zhuǎn)軸為X 軸。機器人外形、關(guān)節(jié)旋轉(zhuǎn)方向、各預(yù)制體及部件的層級關(guān)系如圖1所示。
機器人手臂運動的J2關(guān)節(jié)部分腳本代碼如下(其它關(guān)節(jié)運動的處理方式相同):
switch (button_name) {
case"j2_0"://鼠標(biāo)點擊了示教器“+Y”按鈕,J2手臂抬起
static_go.j_2.Rotate (0, 0, -rotate_speed(2));
break; //鼠標(biāo)點擊了示教器“-Y”按鈕,J2手臂抬起
case"j2_1"://鼠標(biāo)點擊了 按鈕
static_go.j_2.Rotate (0, 0,rotate_speed(2));
break;
}
3.2 示教器模擬
示教器是應(yīng)用軟件與機器人之間的接口裝置,通過電纜與控制柜連接,可以直接手動控制機器人的運動,也可以通過創(chuàng)建程序并測試校正的方式對機器人示教,以完成姿態(tài)確認和特定的作業(yè)任務(wù)。本實驗系統(tǒng)使用UGUI圖形用戶界面方法,參照 FANUC示教器的控制面板,模擬了虛擬機器人的操作界面,主要實現(xiàn)步驟如下:
(1)創(chuàng)建Canvas(畫布)對象,并在右下角嵌入示教器鍵盤圖像資源;
(2)在畫布左下角添加圖像(Image)對象,并為圖像對象添加6組文本(Text)及輸入欄(Input Field)子對象用于接收數(shù)據(jù),分別用于控制相對應(yīng)關(guān)節(jié)的旋轉(zhuǎn)速度。
(3)編寫腳本通過在文本輸入欄接收轉(zhuǎn)速數(shù)據(jù),將輸入的字符轉(zhuǎn)換成數(shù)值傳遞給運動控制函數(shù),從而調(diào)節(jié)6個關(guān)節(jié)旋轉(zhuǎn)速度,部分關(guān)鍵代碼如下:
float rotate_speed(int i){
try{ return float.Parse(static_go.cav.GetChild(1).GetChild(0).GetChild(i).GetComponent
}catch{
return 1.0f/5;
}
}
完成后的交互界面效果如圖2所示。
4 結(jié)束語
虛擬實驗室具有廣闊的應(yīng)用前景,本文設(shè)計的實驗系統(tǒng),效果清晰逼真,操作簡單,
最后以Web Player形式發(fā)布,支持基于Web頁面的遠程訪問,滿足了不同條件的學(xué)習(xí)需求,在工業(yè)機器人教學(xué)及培訓(xùn)方面具有一定的實用價值和拓展空間,同時也為類似產(chǎn)品的開發(fā)提供了參考依據(jù)。
參考文獻
[1]李仕強,王水平,李翔.基于Web的虛擬實驗互動教學(xué)平臺研究與設(shè)計[J].實驗技術(shù)與管理,2012,29(11):90-93.
[2]周素萍,黃昆,張小瑞,楊松.虛擬仿真平臺下彈跳機器人模型的設(shè)計和實現(xiàn)[J].測控技術(shù),2014,33(10):126-128.
[3]劉宇軒.基于Unity3D的工業(yè)機器人虛擬操作系統(tǒng)的研究與實現(xiàn)[J].計算機與數(shù)字工程,2017,45(08):1615-1619.
[4] 劉謀玉,汪地,姜海龍.基于Unity3D 的機器人仿真和遙操作系統(tǒng)研究[J].工業(yè)控制計算機,2016,29(09):97-99.
[5]潘俊浩,卓勇,侯亮,卜祥建.一種基于Unity3d的工業(yè)機器人示教系統(tǒng)設(shè)計方法[J].組合機床與自動化加工技術(shù),2017(07):110-115.
作者簡介
莊嚴(1969-),男,江蘇省南京市人。碩士學(xué)位。講師。主要研究方向為圖形圖像處理,虛擬仿真技術(shù)。
作者單位
南京工程學(xué)院計算機工程學(xué)院 江蘇省南京市 211167