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