羅 捷
(廣西機電工業(yè)學校,廣西 南寧 530023)
機械手在工業(yè)生產(chǎn)中的應(yīng)用日益廣泛,在機械手的研發(fā)、應(yīng)用和相關(guān)課程教學中往往希望能夠通過機械仿真技術(shù)幫助驗證、調(diào)試和展示機械手。進行機械仿真,通常有三種方法:
第一:使用機械仿真軟件,如:ADAMS、Solidworks、Pro/E等。這些軟件的的優(yōu)點是精度高,能真實的反映機械的受力、運動情況,缺點是開發(fā)難度較大,交互性有限,難以通過網(wǎng)絡(luò)、跨平臺應(yīng)用,不利于教學應(yīng)用[1]。
第二:使用虛擬現(xiàn)實建模語言VRML。文獻[2][3]提供了使用VRML仿真機械手的方法。使用此方法雖然可以在網(wǎng)絡(luò)上發(fā)布,且交互性較強,但VRML本身不具備機械動力的分析能力,也無物理引擎,要進行機械仿真需要編寫大量代碼。
第三:使用虛擬現(xiàn)實引擎或游戲引擎,如:Virtools、Unity3D等。使用虛擬現(xiàn)實引擎進行機械仿真,可以方便的發(fā)布在網(wǎng)絡(luò)上,有很強的交互性,且虛擬現(xiàn)實引擎自帶物理引擎,可以很好的仿真各種機械、物理現(xiàn)象,其精度可以滿足大多數(shù)情況的要求。Unity3D是一個可以讓開發(fā)者輕松創(chuàng)建諸如三維游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的跨平臺的專業(yè)虛擬現(xiàn)實引擎。文獻[1]使用Unity3D對齒輪等簡單機械進行了仿真嘗試。
機械手是可以在自動生產(chǎn)線上搬運物料的一種典型自動化設(shè)備。研究使用Unity3D仿真機械手這一新的機器人仿真實現(xiàn)手段,對機械人的開發(fā)、應(yīng)用以及相關(guān)課程的教學有十分重要的現(xiàn)實意義。
本平臺仿真的搬運機械手結(jié)構(gòu)如圖 1所示。其主要部件包括:機架、底座、物料槽、機械手臂、氣缸、電機、接線端口盒等組成。此機械手為氣壓式三自由度機械手。
該搬運機械手臂可由電機驅(qū)動進行水平移動,機械手臂和手爪可由氣缸驅(qū)動完成手臂上升、下降,手爪張、合的運動,從而對物料槽中的物料(小球)實施搬運。機械手臂水平運動范圍受左右兩個限位開關(guān)限制,依靠三個行程開關(guān)進行定位,自右向左分別對應(yīng)工位 1、2、3三個位置。機械手到達對應(yīng)工位時,對應(yīng)行程開關(guān)的接線端輸出低電平。手臂上升、下降到位和手爪夾緊都會觸發(fā)對應(yīng)的光電傳感器,使得對應(yīng)接線端輸出低電平。工位1、2底部的靈敏度可調(diào)紅外光電傳感器,用檢測物料的反射光強。當反射光超過閥值時,輸出低電平。手爪處的光纖傳感器用于檢測手爪處物料的反射光強,光強超過閥值時同樣輸出電平。
圖1 搬運機械手結(jié)構(gòu)
要呈現(xiàn)真實的搬運機械手,幾何和物理模型都要盡可能貼近實物,并輔以模型材質(zhì)、場景光照、聲音效果以及場景的配合,才能讓使用者能夠產(chǎn)生更強臨場感。然而,由于現(xiàn)有設(shè)備的運算、顯示能力的限制,這種想法不可能完全實現(xiàn),必須在質(zhì)量和效率之間進行權(quán)衡。
創(chuàng)建可由 Unity3D使用的搬運機械手的三維模型,需要經(jīng)過以下三個步驟:
步驟一:零件模型的創(chuàng)建和裝配。
由于 Unity3D本身建模功能較弱,使用其他工具創(chuàng)建三維模型會更為方便。本例中選用了Solidworks作為建模工具。根據(jù)搬運機械手的結(jié)構(gòu),將搬運機械手劃分為底座(包括斜槽)、支架、電機架、機械臂支架、機械臂和手爪6個零件。通過對實物的外形尺寸測量,按照實物尺寸對各個部件分別建模,最終在Solidworks中將各個零件裝配為完整的搬運機械手模型。
步驟二:模型調(diào)整和美化。
三維機械手模型在創(chuàng)建時產(chǎn)生了許多不必要的面,需將裝配好的機械手模型導入 3ds Max中,對模型各部分進行塌陷處理,以減少不必要的面,提高顯示效率。為模型添加材質(zhì)、貼圖增加顯示的真實感。同時對各個部件的原點、坐標軸進行調(diào)整,以方便在Unity3D中對部件運動的控制。
步驟三:導入。
在3Ds MAX中將模型導出為Unity3D官方推薦的FBX格式,導入到 Unity3D場景中。為了在保持模型的尺寸,在導入后應(yīng)將模型尺寸按比例放大100倍。
Unity3D內(nèi)置NVIDIA PhysX物理引擎,不同于在VRML環(huán)境中依靠純代碼實現(xiàn)虛擬機械動力效果的方法,在 Unity中可以不用或只需少量代碼即可實現(xiàn)機械動力仿真效果。
3.2.1 零件連接方式的配置
在 Unity3D中提供了“關(guān)節(jié)”用于仿真零件間的連接方式。Unity3D中的關(guān)節(jié)分固定關(guān)節(jié)(FixedJoint)、鉸鏈(Hinge Joint)、角色關(guān)節(jié)(Character Joint)和可配置關(guān)節(jié)(Configurable Joint)三種。由于以可配置關(guān)節(jié)的各項參數(shù)可以由開發(fā)者自行配置,因此用途最為廣泛。
由前文可知,該機械手可以完成手臂平移、手臂升降、手爪張合三個動作。這三個動作分別涉及到手臂支架和電機架的連接、手臂支架和手臂的連接、手臂和手爪的連接。在本例中這三個連接均使用可配置關(guān)節(jié)實現(xiàn)。現(xiàn)以搬運機械手的手爪為例,說明Unity中活動關(guān)節(jié)的配置方法。
手爪與機械手臂連接處為鉸鏈結(jié)構(gòu),在氣缸驅(qū)動下,圍繞轉(zhuǎn)軸旋轉(zhuǎn),最大張開角度為30°。手爪可以將物料槽中的小球夾起、搬運。為了讓手爪與機械臂連接,需將手爪和機械手臂設(shè)為剛體(Rigidbody),使用可配置關(guān)節(jié)連接。因為手爪相對手臂不需要進行平移,而只需要繞鉸鏈軸旋轉(zhuǎn),所以需鎖定三軸平移,鎖定y軸和z軸旋轉(zhuǎn)。同時,兩爪分別限制繞x軸旋轉(zhuǎn)角度為0°~30°和-30°~0°。由于此鉸鏈結(jié)構(gòu)彈性極小,因此將Projection Mode設(shè)為Position and Rotation,且彈性距離和角度均為0。配置完成后手爪則會受到關(guān)節(jié)的限制,與手臂連接,只能在限制的范圍內(nèi)運動。
對于固定于底座上的零件:底座、支架、電機架都以固定關(guān)節(jié)連接。
3.2.2 碰撞和摩擦的實現(xiàn)
為了能夠?qū)崿F(xiàn)碰撞和摩擦帶來的物理效果,Unity3D在其物理組建中提供了多種碰撞器組件:盒碰撞器、膠囊碰撞器、球碰撞器、車輪碰撞器、網(wǎng)格碰撞器。前三種碰撞器分別可模擬立方體、膠囊體、球體形狀物體的碰撞與摩擦作用。車輪碰撞器則用于模擬車輪的碰撞與摩擦。網(wǎng)格碰撞器則根據(jù)三維模型的網(wǎng)格外形模擬碰撞與摩擦效果。網(wǎng)格碰撞器是最為復(fù)雜的碰撞器,其碰撞運算復(fù)雜,因此 Unity3D中不檢測兩個網(wǎng)格碰撞器之間的碰撞。
在該搬運機械手運行中存在多個剛體間的碰撞與摩擦,現(xiàn)以小球與手爪間、小球與軌道間和手爪與軌道間的碰撞與摩擦為例,說明其配置方法。
小球外形是標準的球體,應(yīng)添加與其幾何外形相同的球碰撞器組件。由于小球是塑料球,因此設(shè)置其物質(zhì)材質(zhì)為塑料,質(zhì)量為實測的 0.46kg。軌道外形復(fù)雜,應(yīng)選用網(wǎng)格碰撞器,其物質(zhì)材質(zhì)為金屬。手爪外形也較為復(fù)雜,本應(yīng)選擇網(wǎng)格碰撞器,但由于網(wǎng)格碰撞器間無法實現(xiàn)碰撞,且本例中需要模擬機械手臂在誤操作時與導軌的碰撞,因而手爪不可選用網(wǎng)格碰撞器,而是使用了盒碰撞器進行近似模擬。手爪物質(zhì)材質(zhì)設(shè)置為金屬。
3.2.3 驅(qū)動的實現(xiàn)
經(jīng)過關(guān)節(jié)和碰撞器的設(shè)置,三維搬運機械手模型已經(jīng)具備了仿真所需的物理參數(shù),但沒有電機和氣泵的驅(qū)動力,還不能完整的仿真機械手。
在機械手實物上,機械手臂的平移是由電動機通過蝸桿驅(qū)動的,可近似看做勻速運動。因此,手臂的平移運動可由添加到手臂支架的腳本中的移位方法GameObject.transform.Translate()實現(xiàn)。
在機械手實物上,機械手臂的升降以及手爪的張合則是氣動,可近似看做恒力驅(qū)動和恒力矩驅(qū)動。因此,機械手臂的升降由添加到手臂腳本中的施加恒力方法GameObject.rigidbody.AddForce()實現(xiàn),手爪的張合運動由添加到手臂中腳本中的施加恒力矩方法GameObject.rigidbody.AddRelativeTorque()實現(xiàn)。
為了在仿真時與使用者交互,讓使用者操作三維仿真機械手完成各項功能,GUI界面上設(shè)置了可操作機械手臂左右平移、升降和手爪張合的按鈕。使用者可以通過這些按鈕操作機械手臂完成各種動作,如搬運小球。同時,為了讓使用者能夠了解機械手上各種傳感器的輸出,GUI界面上以顏色和文字標注了各個端口輸出的電平。創(chuàng)建好的虛擬機械手模型場景及GUI界面如圖2所示。
圖2 虛擬機械手模型場景及GUI界面
本文則以某型搬運機械手為仿真原型,通過分析其機械結(jié)構(gòu),創(chuàng)建其三維零件模型,解決Unity3D組裝零件模型為完整機械的連接問題,利用物理引擎實現(xiàn)碰撞與摩擦的仿真,通過編寫腳本仿真了電動機驅(qū)動和氣動的驅(qū)動方式,最終使用Unity3D仿真了搬運機械手這一較復(fù)雜機械。其仿真效果與實際設(shè)備有著較高的一致性,且使用者可在仿真時操作三維模型,有著良好的交互性。本搬運機械手的仿真方法在已有解決方案的基礎(chǔ)上在實現(xiàn)的方便性,仿真的交互性方面有了不同程度的改進與提高。
[1]張帆.基于游戲引擎的機械動力仿真技術(shù)的研究與實現(xiàn)[J].軟件導刊,2011(2):83-86.
[2]王余還.基于Java3D和VRML的空間機械手運動仿真[J].科技信息,2008(12):355-358.
[3]邱瑛,李為民.基于VRML的機械手仿真及其技術(shù)[J].機械設(shè)計,26(3):37-39.
[4]倪樂波,威鵬.Unity3d產(chǎn)品虛擬展示技術(shù)的研究與應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(9):54-55.
[5]朱柱.基于 Unity3D的虛擬實驗系統(tǒng)設(shè)計與應(yīng)用研究[D].武漢:華中師范大學,2012.