林 木,張永春,單麗君
(1.大連海洋大學,遼寧 大連 116000;2.大連交通大學,遼寧 大連 116021)
近年來,由于一些易于使用和可擴展仿真平臺的出現,深度強化學習研究和算法設計取得了重大進展。這些仿真平臺不僅可以促進算法的改進,還可以通過虛擬仿真平臺訓練模型并將其部署在現實世界中,比如,我們可以將虛擬仿真平臺中訓練的機器人部署到現實世界中工作,在訓練過程中,虛擬仿真平臺可以提供安全、受控和高效的培訓環境。
同時,基于這些仿真平臺的機械虛擬仿真教學也一直是國內外虛擬制造技術教學的研究熱點,該教學方式從產品裝配的視角出發,綜合利用了計算機輔助設計、虛擬現實技術、建模與仿真技術、信息物理系統等,為學生開展探索實驗、合作學習和創新實踐建立了一個身臨其境的虛擬環境,為實驗平臺建設增添了思路。這其中由于機械臂具有較大的市場份額和廣闊的應用前景,而減速器是機械中的典型機構,高校和教育機構均高度重視機械臂和減速器的教學及應用,并將其作為機械類學生在教學和實踐中的重要研究對象。
基于Unity3D引擎開發虛擬互動體驗平臺的過程,實質上就是開發虛擬現實內容的過程,首先,使用3D建模軟件構建機械臂及實驗平臺環境的仿真模型,然后將FBX格式的3D模型導入Unity3D引擎中,通過程序腳本,添加交互功能,如,場景漫游、碰撞檢測、交互界面等,以便學生可以在仿真實驗平臺中以第一人稱視角觀察各種機械,實現沉浸式交互,增加學生對機械的認知,達到預期的實踐教學效果。
在創建機械3D模型過程中,模型中包含的信息(名稱、尺寸、單位、坐標、軸心、材質等)必須符合生產規范,這有助于模型編程和軟件之間的導入和導出。
在對機械進行建模后,還需要將紋理貼圖分配給相應的模型,最后,將機械模型打包以FBX格式導出。需要注意的是,模型在導出過程中要將模型Y軸設置為向上,這樣才能與Unity3D引擎中的坐標系保持一致,同時,要選中“嵌入的媒體”選項,這樣模型上的貼圖文件在導入Unity3D引擎后才會保存在單獨的文件夾中,從而避免貼圖丟失。使用Unity3D引擎創建一個新項目,并將從3ds Max導出的模型導入到項目中。同時,使用類似的建模技術和資源包(如Unity3D引擎隨附的Skybox)構建了實驗室環境。
機械臂的AI訓練是基于Unity ML-Agents實現的,Unity是一個游戲開發平臺,由游戲引擎和稱為Unity Editor的圖形用戶界面組成。ML-Agents是一款開源的Unity插件,可以讓游戲和模擬作為訓練智能Agent的環境。通過簡單易用的Python API,Agent可以使用強化學習,模仿學習,神經元演化或其他機器學習方法進行訓練。
ML-Agents插件提供了一組核心功能和其他功能。核心功能使開發人員和研究人員可以使用Unity Editor和關聯的C#腳本定義環境,然后將構建的環境直接與Python API進行交互。附加功能包括一組示例環境和基準算法。示例環境既可以用作基礎算法,也可以用作模板來構建或修改新環境。基準算法可以用于訓練使用該方法創建的任何環境中的代理,同時,也是更高級算法的起點。
Unity深度強化學習工具中,動作的執行者稱之為代理(Agent),它內嵌在環境中;策略則是動作執行的最終目標,Brain負責為其相關代理提供決策策略,引導動作的執行;在動作執行前與執行后都會有一個狀態,兩個狀態的改變依據策略的標準,獲得一個回報值;Academy實現與外部訓練工具的信息交互,并負責統籌整個訓練。
Unity ML-Agents的官方推薦環境為:Phython2/3 64位;jupyter notebook;TensorFlow (1.0+) (Training);Visual Studio 2017;Unity3d 2017+。本系統基于Unity ML-Agents的較近版本,利用ml-agents-0.8.0、Anaconda3實現了深度強化學習環境搭建。
機械的功能分析和結構識別是教學過程中的主要教學內容,因此,本實驗室系統的主要功能有:仿真實驗室機械模具展示及漫游功能、機械動態功能展示、減速器虛擬裝配和機械臂AI訓練。
實驗室漫游是以第一人稱視角,借助VR硬件進入虛擬現實實驗室察看機械結構及其動態功能。在Unity3D引擎中實現第一人稱視角漫游時,將VR預設體放置在場景中,調整位置離地面大約1.7m,從而模擬人眼高度,實現了環境漫游及觀察點的瞬移。
Unity3D引擎中包含了NVIDIA PhysX物理引擎可以動態模擬“關節”連接。減速器需要實現零件之間的相對旋轉,因此,設計“關節”主要是鉸鏈,固定在基座上的零件通過固定關節連接。
為了在仿真實驗平臺系統中實現減速器動力學的物理效果,Unity3D引擎提供了多種碰撞器組件。在減速器仿真實驗系統的模型展示部分,通過腳本移位方法GameObject.transform.Translate()實現運動驅動,以實現零部件和虛擬裝配體的動態展示。
虛擬裝配必須符合實際減速器裝配工藝路線,因此,交互式裝配程序需要添加邏輯判斷功能,使得整個裝配過程是符合邏輯的交互式動態控制。
由Unity3D打開ml-agents-0.8.0中的Unity SDK項目。創建Academy,新建一個空物體,添加一個C#腳本,將繼承類改為Academy,并添加using ML Agents命名空間。類似過程創建Agent(繼承類為Agent)。并通過“資源”為“Academy”創建“Brain”,并將其添加給Academy和agent。
將機械臂按層級設置好父子關系,并由關鍵點實現自由度。之后在Agent腳本中設置機械臂各關節和目標物體,并基于“賞罰”訓練邏輯實現機械臂抓取目標物的訓練。
設置好后,就可以開始訓練了,在經過幾個小時的訓練后,最終將訓練好的二進制文件在Unity3D中加載,點擊編輯器上方的Play按鈕,實現訓練結果,隨著目標物的隨機移動,機械臂可以實現對其準確抓取。
隨著強化學習和虛擬現實技術的不斷發展,虛擬現實以及AI內容的開發變得越來越簡便。本仿真實驗室系統與現有解決方案相比,在方便性和交互性方面都有了不同程度的改進與提高,將功能強大的深度強化學習和虛擬現實技術應用到工程技術類教學中,提高了機械結構認知、動作控制、課程設計等教學環節的教學效果和教學效率,使學生借助該系統更好地理解老師的理論講解,并避免了在真實機械實踐中出現的安全隱患,對提升教學質量有積極影響。