梁思瑞,王國慶,張仕超,邵嚴明,靳 浩
(1. 長安大學(xué) 工程機械學(xué)院,陜西 西安 710064;2. 杰瑞石油天然氣工程有限公司,山東 煙臺 264003;3. 武漢理工大學(xué) 能源與動力工程學(xué)院,湖北 武漢 430063)
近年來,我國政府積極加大對交通、能源、水利等基礎(chǔ)設(shè)施的建設(shè)力度,各地工程施工量持續(xù)大幅增長[1],工程機械的投入使用量也逐年增長。而培養(yǎng)合格的工程機械操作人員需要較長的培訓(xùn)周期,并耗費較大的人力物力,這使得目前高質(zhì)量操作員數(shù)量明顯不足。對于操作復(fù)雜且價格昂貴的機器設(shè)備來說,對其操作員進行虛擬訓(xùn)練可以降低訓(xùn)練成本,提高訓(xùn)練效率[2]。國外在虛擬訓(xùn)練方面進行了相關(guān)研究:文獻[3]利用增強現(xiàn)實的互動設(shè)備與虛擬環(huán)境組件構(gòu)建了基于PC集群的通用軟硬件平臺,可對宇航員進行虛擬訓(xùn)練;文獻[4]使用Quanser觸覺作為模擬關(guān)節(jié)鏡手術(shù)中的用戶交互元件,使醫(yī)生能夠在虛擬現(xiàn)實環(huán)境中與軟硬組織進行交互,為外科醫(yī)生的訓(xùn)練提供了便利。國內(nèi)的高校和相關(guān)研究機構(gòu)同樣做了大量針對虛擬訓(xùn)練的研究:文獻[5]利用LabVIEW的事件結(jié)構(gòu)和平鋪式順序結(jié)構(gòu),創(chuàng)建了基于實彈射擊的射擊操作和飛行控制的動作響應(yīng)模型,實現(xiàn)了對導(dǎo)彈飛行的操作與控制,開發(fā)了一款導(dǎo)彈射擊操作虛擬訓(xùn)練系統(tǒng);文獻[6]運用三維軟件和VIRTOOLS搭建虛擬塔式起重機仿真訓(xùn)練平臺,通過建立運行機構(gòu)的動力學(xué)模型提高了真實感;文獻[7]建立空間站虛擬模型,利用局部正向法和整體正向法模擬航天員以不同身體姿態(tài)漫游時獲取的視覺反饋,研發(fā)了航天員艙內(nèi)導(dǎo)航訓(xùn)練系統(tǒng)。
然而,目前大多數(shù)虛擬訓(xùn)練系統(tǒng)只是單純演示系統(tǒng)運動,并沒有結(jié)合工程機械的控制器控制和施工中的實際環(huán)境。因此,本文針對工程機械提出了一種融合半物理仿真的臨境虛擬訓(xùn)練系統(tǒng)構(gòu)架,即利用虛擬現(xiàn)實開發(fā)平臺模擬工程機械實際運動,采用物理的控制器硬件控制虛擬模型的運動,使用數(shù)據(jù)采集系統(tǒng)采集傳感器信號獲得模擬環(huán)境信息的低成本高臨境感虛擬訓(xùn)練系統(tǒng)。以ZL50型裝載機為例,開發(fā)了一種裝載機半物理仿真臨境操作員訓(xùn)練系統(tǒng)。
本文提出的半物理仿真臨境虛擬訓(xùn)練系統(tǒng)架構(gòu)如圖1所示。系統(tǒng)架構(gòu)融合了半物理仿真的思想,將工程機械中成本較低且相對更重要的控制器作為實物引入仿真回路,將成本較高且笨重占空間的機械實體用臨境訓(xùn)練系統(tǒng)中虛擬的可控運動模型代替。為了提高仿真的真實性和臨境感,為系統(tǒng)添加了采集模擬環(huán)境信息的數(shù)據(jù)采集器和供操作員操作的控制手柄。同時,為了完成一些訓(xùn)練系統(tǒng)的系統(tǒng)設(shè)置和管理并給操作員提供更好的人機交互體驗,將利用虛擬現(xiàn)實開發(fā)平臺開發(fā)的臨境訓(xùn)練系統(tǒng)嵌入在UI操作系統(tǒng)中顯示。其中UI操作系統(tǒng)和控制器間采用以太網(wǎng)通訊,控制手柄和控制器間采用USB OTG通訊,控制器和傳感器數(shù)據(jù)采集器間采用SPI通訊,UI操作系統(tǒng)與臨境訓(xùn)練系統(tǒng)間采用SOCKET通訊。
圖1 半物理仿真臨境虛擬訓(xùn)練系統(tǒng)構(gòu)架
系統(tǒng)運行過程中,傳感器組從模擬施工環(huán)境中采集實時環(huán)境信息,通過數(shù)據(jù)采集器發(fā)送到控制器,控制器將信號發(fā)給操作手柄和UI操作系統(tǒng),操作手柄接到信號后即可以開始被操作,UI操作系統(tǒng)將信息進行處理后,向臨境訓(xùn)練系統(tǒng)發(fā)送命令,臨境訓(xùn)練系統(tǒng)中即可生成符合實時環(huán)境的施工場景。操作員在計算機上的UI操作系統(tǒng)中可以進行系統(tǒng)設(shè)置,并實時觀看虛擬施工場景和被控工程機械的作業(yè)情況。操作員根據(jù)臨境訓(xùn)練系統(tǒng)中顯示的施工狀況進行分析,使用控制手柄對工程機械進行操作。這樣,就完成了一次系統(tǒng)的工作循環(huán)。
系統(tǒng)的硬件設(shè)計主要包括數(shù)據(jù)采集器的設(shè)計和系統(tǒng)控制器的設(shè)計。
為了提高數(shù)據(jù)采集系統(tǒng)的準確性、穩(wěn)定性和集成性,采用ADI公司的ADAS3023模數(shù)轉(zhuǎn)換器進行多路傳感器信號采集。它是系統(tǒng)級工業(yè)數(shù)據(jù)采集芯片,集成了8通道、采樣保持、可編程增益儀表放大器,具有高共模抑制特性。同時采用金太陽的A2415S芯片提供片內(nèi)輸入多路復(fù)用器所需的±15V高壓電源。數(shù)據(jù)采集器的核心電路如圖2所示。
圖2 數(shù)據(jù)采集器核心電路圖
系統(tǒng)采用1個主處理器和多個從處理器的多核異構(gòu)控制器?;谌蝿?wù)分工的多處理器協(xié)同工作模式,使控制器功能結(jié)構(gòu)相對獨立。不同功能的硬件模塊由不同處理器管理,并由主處理器進行從處理器間的任務(wù)調(diào)度。各個處理器同時工作,有效提高了系統(tǒng)控制器的可靠性和運行速度。
圖3 系統(tǒng)控制器總體架構(gòu)圖
本系統(tǒng)控制器總體架構(gòu)如圖3所示,包括1個主處理器和3個從處理器,分別負責系統(tǒng)的實時數(shù)據(jù)采集傳輸、數(shù)據(jù)通訊和算法運行。此外,主處理器上連接高邊開關(guān)驅(qū)動模塊驅(qū)動工程機械中的液壓比例控制系統(tǒng),連接USB接口用于調(diào)試控制器。數(shù)據(jù)通訊從處理器上連接W5500芯片,用于實現(xiàn)其與計算機中UI操作系統(tǒng)間的以太網(wǎng)通訊。
其中,主處理器芯片選擇STM32F405RG,從處理器芯片選擇STM32F103C8T8。主從芯片間采取主從控制模式,實現(xiàn)了獨立調(diào)試與多任務(wù)同步運行。運行在主控制器上的操作系統(tǒng)對從處理器發(fā)送的數(shù)據(jù)進行處理,再將任務(wù)分配給各個從處理器。從處理器有條不紊的完成任務(wù),相互獨立又彼此協(xié)作,共同實現(xiàn)了對整個系統(tǒng)的控制。主從處理器之間采用一種改進的SPI通訊,即在傳統(tǒng)SPI通訊的基礎(chǔ)上,在主從處理器之間增添信號中斷反饋線。這樣即可實現(xiàn)實時的主從切換,達到真正意義的雙向通訊。數(shù)據(jù)通訊從處理芯片與W5500以太網(wǎng)通訊模塊同樣使用這種改進的SPI通訊。以太網(wǎng)通訊模塊核心電路如圖4所示。
圖4 W5500以太網(wǎng)通訊模塊核心電路圖
本系統(tǒng)架構(gòu)中軟件部分各模塊的主要功能是:UI操作系統(tǒng)接收來自控制器的控制信號進行信息處理,然后向臨境訓(xùn)練系統(tǒng)發(fā)送命令,在臨境訓(xùn)練系統(tǒng)中實現(xiàn)工程機械的運動仿真和施工環(huán)境的模擬。操作員根據(jù)臨境訓(xùn)練系統(tǒng)虛擬環(huán)境中裝載機的運動情況,實時操作控制手柄,完成操作員和虛擬環(huán)境的交互,達到訓(xùn)練目的。此外,操作員在UI操作系統(tǒng)上還需進行相關(guān)的系統(tǒng)設(shè)置。
由以上分析可知,系統(tǒng)軟件部分涉及到的關(guān)鍵技術(shù)是臨境訓(xùn)練系統(tǒng)中的運動仿真和UI操作系統(tǒng)與臨境訓(xùn)練系統(tǒng)間的通訊。
目前,可以實現(xiàn)虛擬環(huán)境搭建的平臺有很多,如Virtools、Unity3D、QUEST3D等。要在這些虛擬環(huán)境中實現(xiàn)控制器可控的運動仿真,方法大同小異,主要是進行三維模型、運動學(xué)和動力學(xué)模型的建立,進行一些仿真參數(shù)的設(shè)定,完成對虛擬模型的數(shù)據(jù)驅(qū)動。這里采用Unity 3D實現(xiàn)系統(tǒng)虛擬環(huán)境的搭建。
首先,建立運動建模和三維建模。運動建模包括工程機械行走機構(gòu)和工作裝置的運動學(xué)方程和動力學(xué)方程,三維建模在三維建模軟件中完成。其次,實現(xiàn)虛擬運動,包括三維模型的導(dǎo)入、組件(剛體、碰撞器、物理材料、聲音等)的添加、運動腳本的編寫和掛載以及場景視角和聲效的實現(xiàn)。最后,建立運動學(xué)和動力學(xué)模型,實現(xiàn)控制器硬件對虛擬模型的運動控制。再將控制器輸出信號導(dǎo)入模型,計算出機構(gòu)下一刻的運動過程,將計算得到的位移、速度以及軌跡傳給虛擬環(huán)境中的被控運動對象,實現(xiàn)對模型的數(shù)據(jù)驅(qū)動,達到使模型按照控制器命令進行運動的目的。
為把虛擬現(xiàn)實平臺中搭建的臨境訓(xùn)練系統(tǒng)嵌入UI操作系統(tǒng)中運行,我們采用高并發(fā)的異步socket通訊實現(xiàn)其間的相互通訊,其中臨境訓(xùn)練系統(tǒng)中掛載腳本的被控運動對象做客戶端,UI操作系統(tǒng)做服務(wù)器端,使用TCP協(xié)議。因為臨境訓(xùn)練系統(tǒng)中的被控對象數(shù)量較多,為防止阻塞并提高系統(tǒng)效率,系統(tǒng)利用對象池建立多并發(fā)的異步socket通訊。它可以實現(xiàn)UI操作系統(tǒng)作為服務(wù)器能同時與大量被控運動對象進行通訊的功能。
以使用WPF開發(fā)UI操作系統(tǒng)為例。使用上述的socket通訊方法將臨境訓(xùn)練系統(tǒng)的.exe程序嵌入WPF程序中,實現(xiàn)其間的通訊。在WPF界面添加一個WinForm自定義控件。在自定義控件內(nèi)新建一個可以綁定句柄的控件,通過API將.exe程序綁定在控件的句柄上,實現(xiàn)臨境訓(xùn)練運行界面在UI操作系統(tǒng)中的顯示。在WPF中建立服務(wù)器端,實現(xiàn)大容量高并發(fā)的異步socket通訊,其要點是在程序初始化時建立對象池,將一定數(shù)量的SocketA-syncEventArgs對象放入對象池中。這樣在接收到客戶端的連接請求時,不需要再創(chuàng)建任何新的線程,使用由對象管理的.NET底層提供的IO線程即可。并且,在程序初始化后開啟一個用于監(jiān)聽客戶端連接請求的socket連接,監(jiān)聽到連接請求之后調(diào)用編寫的自定義方法StartAccept()開始接受異步連接。每個對象都編寫有接收數(shù)據(jù)、發(fā)送數(shù)據(jù)、清理對象等方法。在需要完成發(fā)送或接收操作時,從對象池中取出一個對象,將特定的socket連接賦給對象的.ConnectSocket屬性,調(diào)用對象的相關(guān)函數(shù)完成操作即可。當對象完成指定操作后,系統(tǒng)會清空對象中的所有數(shù)據(jù),以便下次使用。利用對象池實現(xiàn)對象的復(fù)用,避免了在異步套接字IO量非常大時發(fā)生重復(fù)的對象分配和同步問題,顯著提高了通訊性能。服務(wù)器端初始化函數(shù),即對象池的建立代碼如圖5。監(jiān)聽到socket的連接請求后,接受客戶端連接的主要代碼如圖6。Unity 3D中的被控對象作為客戶端,其上掛載腳本的通訊部分使用普通的socket通訊。經(jīng)測試,該方法可行。
圖5 服務(wù)器端初始化函數(shù)
圖6 接受客戶端連接的主要代碼
基于上文中所述的半物理仿真系統(tǒng)架構(gòu),設(shè)計了一款ZL50型裝載機的臨境訓(xùn)練系統(tǒng)。使用上文在虛擬環(huán)境運動仿真中介紹的方法,建立運動模型和三維模型,添加組件,編寫和掛載腳本。圖7中依次為裝載機三維建模、將模型導(dǎo)入Unity3D進行分組、組件的添加和腳本的掛載。其中較關(guān)鍵的是組件添加和腳本編寫部分。
圖7 運動仿真主要實現(xiàn)步驟
在添加組件時,對裝載機的主要性能參數(shù)進行計算,將真實的參數(shù)添加進組件,在虛擬環(huán)境中模擬真實行走運動。
以挖掘機進行原地轉(zhuǎn)向時的阻力矩為例進行動力學(xué)分析。將輪胎與地面的接觸面抽象為直徑為輪胎寬度的圓型。輪胎繞接觸面的圓心轉(zhuǎn)動,產(chǎn)生的摩擦力矩M大小等于接觸面單位面積上的摩擦力對圓心取矩的總和,摩擦力矩方向與轉(zhuǎn)動方向相反,即
式中 F為車輪上的垂直載荷,φ為輪胎與地面間的附著數(shù),ρ為當量半徑,b為輪胎寬度[8]。
設(shè)置車輪碰撞器(WheelCollider),將行走參數(shù)(即運動時車輪的驅(qū)動力矩、阻力矩等)、真實車重和地面摩擦系數(shù)等參數(shù)添加進組件,能更真實的模擬裝載機的運行情況。
運行腳本的編寫是運動仿真的重點,它確定了模型各個構(gòu)件的運動方式。編寫運行腳本的基礎(chǔ)是運動模型,而對于裝載機而言,主要是其行走機構(gòu)和工作裝置的運動學(xué)方程。
行走機構(gòu)的運動包括車輪的轉(zhuǎn)動和車身的平動。在裝載機上添加移動腳本,給車輪碰撞器附加一個力矩,讓車輪碰撞器的轉(zhuǎn)動帶動整車的平動??刂栖囕嗈D(zhuǎn)動的主要代碼如圖8,Quaternion.Eular()返回的為歐拉角度,wheelAngle表示每秒車輪碰撞器繞z軸轉(zhuǎn)過的角度。用wheelCollider對象的Rotation坐標右乘Quaternion.Eular()來表示車輪碰撞器每秒繞z軸轉(zhuǎn)的角度。累加每一幀車輪的旋轉(zhuǎn)值,將該結(jié)果賦給車輪對象,即可得出車輪繞著z軸旋轉(zhuǎn)的角度。車輪的轉(zhuǎn)動腳本除控制部分,還包含3.2中介紹的通訊部分。
圖8 車輪腳本中實現(xiàn)轉(zhuǎn)動的主要代碼
ZL50型輪式裝載機工作裝置是一個反轉(zhuǎn)六連桿機構(gòu)。對其添加腳本,需要對其進行運動學(xué)和動力學(xué)分析。運動學(xué)分析的目的是確定鏟斗端點的位置、姿態(tài)、速度和加速度以及各連桿的位置關(guān)系與各關(guān)節(jié)的速度和加速度。建立D-H剛體坐標系,裝載機工作裝置可簡化為兩自由度的連桿機構(gòu),如圖9。O0為裝載機與動臂的鉸接點,O1點為動臂與鏟斗的鉸接點,O2點為鏟斗的端點。
圖9 工作裝置簡化結(jié)構(gòu)示意圖
以計算鏟斗端點的位置為例進行運動學(xué)計算說明。工作裝置各關(guān)節(jié)間的齊次變換矩陣為
通過運動方程可以求得工作裝置上各個點的運動軌跡,據(jù)此為裝載機工作裝置的各個構(gòu)件添加運行腳本。
完成系統(tǒng)的主體設(shè)計后,還需設(shè)置模擬環(huán)境中攝相機拍攝的角度和位置,制作模擬場景,添加一些輔助的教學(xué)功能,將生成的應(yīng)用程序嵌入UI操作系統(tǒng)中。最終完成的裝載機虛擬施工訓(xùn)練系統(tǒng)雨天施工場景下的遠景視角如圖10,晴天施工場景下的操作員視角如圖11。如圖10中放大的系統(tǒng)菜單所示,系統(tǒng)具有ZL50挖掘機簡介、播放教學(xué)視頻、視角切換、晴天場景、雨天場景、操作能力測試等功能。
圖10 雨天施工場景下的遠景視角
圖11 晴天施工場景下的操作員視角
提出了一種針對工程機械,結(jié)合實際控制器和施工真實環(huán)境的操作員訓(xùn)練系統(tǒng)架構(gòu)。該架構(gòu)融合了半物理仿真的思想,將成本較低且較重要的控制器作為實物引入仿真回路,將成本較高且笨重的機械實體用運動模型代替,將實際環(huán)境的實時信息引入系統(tǒng),為操作員提供可供操作的手柄。該系統(tǒng)制造成本低,模擬真實化程度高,虛擬臨境體驗感強,使用便捷?;诖思軜?gòu)具體設(shè)計了一種裝載機臨境訓(xùn)練系統(tǒng)。該系統(tǒng)可以進行教學(xué)、實操和測評。經(jīng)測試,該系統(tǒng)能對工程機械操作員進行基礎(chǔ)訓(xùn)練,達到提高操作員培訓(xùn)效率和質(zhì)量,降低培訓(xùn)成本的目的。同時,在本系統(tǒng)中實現(xiàn)的關(guān)鍵技術(shù)也為本文提出的系統(tǒng)架構(gòu)的進一步研究奠定了基礎(chǔ)。