羅 捷
(廣西機電工業學校,廣西 南寧 530023)
機械手在工業生產中的應用日益廣泛,在機械手的研發、應用和相關課程教學中往往希望能夠通過機械仿真技術幫助驗證、調試和展示機械手。進行機械仿真,通常有三種方法:
第一:使用機械仿真軟件,如:ADAMS、Solidworks、Pro/E等。這些軟件的的優點是精度高,能真實的反映機械的受力、運動情況,缺點是開發難度較大,交互性有限,難以通過網絡、跨平臺應用,不利于教學應用[1]。
第二:使用虛擬現實建模語言VRML。文獻[2][3]提供了使用VRML仿真機械手的方法。使用此方法雖然可以在網絡上發布,且交互性較強,但VRML本身不具備機械動力的分析能力,也無物理引擎,要進行機械仿真需要編寫大量代碼。
第三:使用虛擬現實引擎或游戲引擎,如:Virtools、Unity3D等。使用虛擬現實引擎進行機械仿真,可以方便的發布在網絡上,有很強的交互性,且虛擬現實引擎自帶物理引擎,可以很好的仿真各種機械、物理現象,其精度可以滿足大多數情況的要求。Unity3D是一個可以讓開發者輕松創建諸如三維游戲、建筑可視化、實時三維動畫等類型互動內容的跨平臺的專業虛擬現實引擎。文獻[1]使用Unity3D對齒輪等簡單機械進行了仿真嘗試。
機械手是可以在自動生產線上搬運物料的一種典型自動化設備。研究使用Unity3D仿真機械手這一新的機器人仿真實現手段,對機械人的開發、應用以及相關課程的教學有十分重要的現實意義。
本平臺仿真的搬運機械手結構如圖 1所示。其主要部件包括:機架、底座、物料槽、機械手臂、氣缸、電機、接線端口盒等組成。此機械手為氣壓式三自由度機械手。
該搬運機械手臂可由電機驅動進行水平移動,機械手臂和手爪可由氣缸驅動完成手臂上升、下降,手爪張、合的運動,從而對物料槽中的物料(小球)實施搬運。機械手臂水平運動范圍受左右兩個限位開關限制,依靠三個行程開關進行定位,自右向左分別對應工位 1、2、3三個位置。機械手到達對應工位時,對應行程開關的接線端輸出低電平。手臂上升、下降到位和手爪夾緊都會觸發對應的光電傳感器,使得對應接線端輸出低電平。工位1、2底部的靈敏度可調紅外光電傳感器,用檢測物料的反射光強。當反射光超過閥值時,輸出低電平。手爪處的光纖傳感器用于檢測手爪處物料的反射光強,光強超過閥值時同樣輸出電平。

圖1 搬運機械手結構
要呈現真實的搬運機械手,幾何和物理模型都要盡可能貼近實物,并輔以模型材質、場景光照、聲音效果以及場景的配合,才能讓使用者能夠產生更強臨場感。然而,由于現有設備的運算、顯示能力的限制,這種想法不可能完全實現,必須在質量和效率之間進行權衡。
創建可由 Unity3D使用的搬運機械手的三維模型,需要經過以下三個步驟:
步驟一:零件模型的創建和裝配。
由于 Unity3D本身建模功能較弱,使用其他工具創建三維模型會更為方便。本例中選用了Solidworks作為建模工具。根據搬運機械手的結構,將搬運機械手劃分為底座(包括斜槽)、支架、電機架、機械臂支架、機械臂和手爪6個零件。通過對實物的外形尺寸測量,按照實物尺寸對各個部件分別建模,最終在Solidworks中將各個零件裝配為完整的搬運機械手模型。
步驟二:模型調整和美化。
三維機械手模型在創建時產生了許多不必要的面,需將裝配好的機械手模型導入 3ds Max中,對模型各部分進行塌陷處理,以減少不必要的面,提高顯示效率。為模型添加材質、貼圖增加顯示的真實感。同時對各個部件的原點、坐標軸進行調整,以方便在Unity3D中對部件運動的控制。
步驟三:導入。
在3Ds MAX中將模型導出為Unity3D官方推薦的FBX格式,導入到 Unity3D場景中。為了在保持模型的尺寸,在導入后應將模型尺寸按比例放大100倍。
Unity3D內置NVIDIA PhysX物理引擎,不同于在VRML環境中依靠純代碼實現虛擬機械動力效果的方法,在 Unity中可以不用或只需少量代碼即可實現機械動力仿真效果。
3.2.1 零件連接方式的配置
在 Unity3D中提供了“關節”用于仿真零件間的連接方式。Unity3D中的關節分固定關節(FixedJoint)、鉸鏈(Hinge Joint)、角色關節(Character Joint)和可配置關節(Configurable Joint)三種。由于以可配置關節的各項參數可以由開發者自行配置,因此用途最為廣泛。
由前文可知,該機械手可以完成手臂平移、手臂升降、手爪張合三個動作。這三個動作分別涉及到手臂支架和電機架的連接、手臂支架和手臂的連接、手臂和手爪的連接。在本例中這三個連接均使用可配置關節實現。現以搬運機械手的手爪為例,說明Unity中活動關節的配置方法。
手爪與機械手臂連接處為鉸鏈結構,在氣缸驅動下,圍繞轉軸旋轉,最大張開角度為30°。手爪可以將物料槽中的小球夾起、搬運。為了讓手爪與機械臂連接,需將手爪和機械手臂設為剛體(Rigidbody),使用可配置關節連接。因為手爪相對手臂不需要進行平移,而只需要繞鉸鏈軸旋轉,所以需鎖定三軸平移,鎖定y軸和z軸旋轉。同時,兩爪分別限制繞x軸旋轉角度為0°~30°和-30°~0°。由于此鉸鏈結構彈性極小,因此將Projection Mode設為Position and Rotation,且彈性距離和角度均為0。配置完成后手爪則會受到關節的限制,與手臂連接,只能在限制的范圍內運動。
對于固定于底座上的零件:底座、支架、電機架都以固定關節連接。
3.2.2 碰撞和摩擦的實現
為了能夠實現碰撞和摩擦帶來的物理效果,Unity3D在其物理組建中提供了多種碰撞器組件:盒碰撞器、膠囊碰撞器、球碰撞器、車輪碰撞器、網格碰撞器。前三種碰撞器分別可模擬立方體、膠囊體、球體形狀物體的碰撞與摩擦作用。車輪碰撞器則用于模擬車輪的碰撞與摩擦。網格碰撞器則根據三維模型的網格外形模擬碰撞與摩擦效果。網格碰撞器是最為復雜的碰撞器,其碰撞運算復雜,因此 Unity3D中不檢測兩個網格碰撞器之間的碰撞。
在該搬運機械手運行中存在多個剛體間的碰撞與摩擦,現以小球與手爪間、小球與軌道間和手爪與軌道間的碰撞與摩擦為例,說明其配置方法。
小球外形是標準的球體,應添加與其幾何外形相同的球碰撞器組件。由于小球是塑料球,因此設置其物質材質為塑料,質量為實測的 0.46kg。軌道外形復雜,應選用網格碰撞器,其物質材質為金屬。手爪外形也較為復雜,本應選擇網格碰撞器,但由于網格碰撞器間無法實現碰撞,且本例中需要模擬機械手臂在誤操作時與導軌的碰撞,因而手爪不可選用網格碰撞器,而是使用了盒碰撞器進行近似模擬。手爪物質材質設置為金屬。
3.2.3 驅動的實現
經過關節和碰撞器的設置,三維搬運機械手模型已經具備了仿真所需的物理參數,但沒有電機和氣泵的驅動力,還不能完整的仿真機械手。
在機械手實物上,機械手臂的平移是由電動機通過蝸桿驅動的,可近似看做勻速運動。因此,手臂的平移運動可由添加到手臂支架的腳本中的移位方法GameObject.transform.Translate()實現。
在機械手實物上,機械手臂的升降以及手爪的張合則是氣動,可近似看做恒力驅動和恒力矩驅動。因此,機械手臂的升降由添加到手臂腳本中的施加恒力方法GameObject.rigidbody.AddForce()實現,手爪的張合運動由添加到手臂中腳本中的施加恒力矩方法GameObject.rigidbody.AddRelativeTorque()實現。
為了在仿真時與使用者交互,讓使用者操作三維仿真機械手完成各項功能,GUI界面上設置了可操作機械手臂左右平移、升降和手爪張合的按鈕。使用者可以通過這些按鈕操作機械手臂完成各種動作,如搬運小球。同時,為了讓使用者能夠了解機械手上各種傳感器的輸出,GUI界面上以顏色和文字標注了各個端口輸出的電平。創建好的虛擬機械手模型場景及GUI界面如圖2所示。

圖2 虛擬機械手模型場景及GUI界面
本文則以某型搬運機械手為仿真原型,通過分析其機械結構,創建其三維零件模型,解決Unity3D組裝零件模型為完整機械的連接問題,利用物理引擎實現碰撞與摩擦的仿真,通過編寫腳本仿真了電動機驅動和氣動的驅動方式,最終使用Unity3D仿真了搬運機械手這一較復雜機械。其仿真效果與實際設備有著較高的一致性,且使用者可在仿真時操作三維模型,有著良好的交互性。本搬運機械手的仿真方法在已有解決方案的基礎上在實現的方便性,仿真的交互性方面有了不同程度的改進與提高。
[1]張帆.基于游戲引擎的機械動力仿真技術的研究與實現[J].軟件導刊,2011(2):83-86.
[2]王余還.基于Java3D和VRML的空間機械手運動仿真[J].科技信息,2008(12):355-358.
[3]邱瑛,李為民.基于VRML的機械手仿真及其技術[J].機械設計,26(3):37-39.
[4]倪樂波,威鵬.Unity3d產品虛擬展示技術的研究與應用[J].數字技術與應用,2010(9):54-55.
[5]朱柱.基于 Unity3D的虛擬實驗系統設計與應用研究[D].武漢:華中師范大學,2012.