徐志剛,胡常英
(長安大學 信息工程學院,陜西 西安 710064)
近年來,隨著車聯(lián)網(wǎng)技術(shù)和人工智能的發(fā)展,智能車作為智能化的交通工具對交通事業(yè)的發(fā)展具有巨大的促進作用[1]。國內(nèi)對智能車輛的測試也處于熱潮,主要以傳統(tǒng)的室外測試和室內(nèi)的虛擬仿真測試為主。傳統(tǒng)的室外測試具有安全隱患,容易受天氣的影響,浪費了極大的物力和財力,不能滿足重復測試,甚至一些極限的路況無法進行測試。室內(nèi)的虛擬測試是基于虛擬現(xiàn)實技術(shù)和網(wǎng)絡(luò)通信技術(shù),構(gòu)建虛擬汽車測試試驗場,模擬出多種汽車測試的真實場景,在室內(nèi)對智能車的性能進行測試,可以進行多次重復測試,不會受天氣影響[2-5]。虛擬汽車試驗場作為智能車虛擬測試的重要組成部分,因此對其研究與實現(xiàn)具有重大意義。
Unity3D是跨平臺的游戲開發(fā)工具,有開源的游戲編輯開發(fā)環(huán)境,是一個專業(yè)的游戲引擎。Unity3D的最大優(yōu)勢是性價比高,兼容各種操作系統(tǒng),開發(fā)出的產(chǎn)品用戶可以直接進行下載,然后在手機、PC機上可以直接體驗測試。Unity3D支持各種群體腳本語言,包括Javascript、C#、Python,真正實現(xiàn)了跨平臺[6]。
虛擬汽車試驗場的開發(fā)遵循軟件開發(fā)的一般步驟,依次是分析、設(shè)計、開發(fā)、測試、修改反復且漸進地完成所規(guī)劃的功能。系統(tǒng)的開發(fā)流程可以分為兩部分:第一部分是構(gòu)建汽車試驗場的三維模型,其主要內(nèi)容是利用三維建模軟件3Dmax對試驗場的道路、地形、建筑、龍門架、交叉口、高速環(huán)形跑道、環(huán)境等進行建模;第二部分是在虛擬的測試試驗場中實現(xiàn)用戶和三維的模擬車輛、用戶和環(huán)境的交互,其主要內(nèi)容是編寫互動腳本,利用腳本把靜態(tài)的三維模型與Unity3D連接起來,賦予模型交互的能力,即讀取和處理用戶駕駛模擬駕駛器的操作行為數(shù)據(jù),如離合、剎車、油門等數(shù)據(jù),使用處理后的數(shù)據(jù)驅(qū)動虛擬場景中的三維模擬車輛的運動[7-9]。系統(tǒng)開發(fā)的詳細流程如圖1所示。
圖1 虛擬汽車測試試驗場的開發(fā)流程
虛擬汽車試驗場漫游系統(tǒng)的設(shè)計目標是為智能車的虛擬仿真測試提供一個真實的模擬環(huán)境,讓用戶去自由選擇道路場景,對智能車的性能進行測試和評價。虛擬測試場景可分為靜態(tài)的場景和動態(tài)的場景,其中靜態(tài)場景包括:地形、樹木、交叉口、高速環(huán)形道路、龍門架等;動態(tài)場景包括:智能車輛、道路車輛、行人、天氣雨雪等。其場景的結(jié)構(gòu)如圖2所示。
圖2 虛擬測試場景結(jié)構(gòu)
虛擬汽車試驗場的設(shè)計與規(guī)劃如下:
(1)用戶可以通過菜單選擇不同的交通復雜場景,對車輛的性能進行測試。
(2)虛擬汽車試驗場的三維展示功能。建立的靜態(tài)場景和動態(tài)場景模型盡量接近現(xiàn)實,達到高仿真的逼真度,模擬出真實的測試場景。
(3)漫游功能。用戶可以通過控制模擬駕駛器在虛擬汽車測試試驗場內(nèi)隨意行駛和游覽,然后到達自己的指定區(qū)域。
(4)設(shè)置鳥瞰圖、小地圖,便于用戶了解整體的虛擬測試試驗場及控制模擬駕駛器在漫游的過程中自己所處的位置。
1.3.1 場景建模技術(shù)
對于場景建模有兩種方式,一種是利用Unity3D本身的功能建模,另一種是從外部導入模型。文中采用從外部導入模型的方式進行場景建模。以導入3Dmax軟件的模型為例,首先需在3Dmax中建立三維模型,然后導出成.FBX的文件格式并保存模型紋理貼圖,最后將模型導入到Unity3D,形成虛擬場景。
1.3.2 交互技術(shù)
交互是實現(xiàn)對虛擬汽車試驗場場景漫游的主要方式。簡單的交互可以用C#實現(xiàn),如可以通過讀取和處理用戶控制模擬駕駛器的操作行為數(shù)據(jù),并通過網(wǎng)絡(luò)通信將其數(shù)據(jù)處理結(jié)果發(fā)送給Unity3D并作為驅(qū)動車輛行駛的函數(shù)參數(shù),用它驅(qū)動虛擬車移動,實現(xiàn)用戶利用駕駛模擬器控制虛擬場景中車輛的漫游[10-11]。
GUI交互界面的設(shè)計,用戶可以選擇點擊菜單,切換不同的交通場景,也可以選擇不同的車輛進行漫游,方便用戶操作。
虛擬場景包括建筑模型、車輛道路模型、車輛模型和自然環(huán)境。通過CAD規(guī)劃平面圖以及數(shù)碼相機獲得具體的建筑數(shù)據(jù),構(gòu)建建筑模型。車輛道路模型、自然環(huán)境通過軟件自帶的模型構(gòu)建,車輛模型從網(wǎng)上下載,然后導入到Unity3D中進行使用。
2.1.1 信息的獲取
要建立仿真逼真高的虛擬汽車試驗場環(huán)境,獲得真實的測試試驗場的空間數(shù)據(jù)信息是關(guān)鍵。文中主要采取以下幾種方法獲取試驗場的數(shù)據(jù)。
(1)尋求學校相關(guān)部門的支持,搜尋初建學校時的CAD規(guī)劃圖,根據(jù)圖紙得到部分的數(shù)據(jù)信息。
(2)通過航拍得到試驗場的空間信息數(shù)據(jù),與CAD規(guī)劃的圖紙進行比較,校準其數(shù)據(jù)的正確性。
(3)用測量工具對試驗場中標識不清楚的地方進行重新測量和標定。
(4)用相機拍攝重要的建筑和周圍的環(huán)境,盡量拍其正視圖,并對其圖片進行處理以達到好的清晰度,作為建筑模型和周圍環(huán)境的紋理貼圖,以模擬真實的試驗場環(huán)境。
2.1.2 模型的構(gòu)建
建筑模型是虛擬測試試驗場中的地形、建筑物、道路、標志牌、行人,通過無人機航拍后獲得數(shù)據(jù),根據(jù)獲取的數(shù)據(jù)在3dmax中構(gòu)建的三維模型。環(huán)境部分主要包括天氣、花草和樹木,這些可以在Unity3D中通過調(diào)其材質(zhì)庫進行構(gòu)建,并需要對多邊形模型進行優(yōu)化和裁剪,這樣可以降低CPU和內(nèi)存的使用率,使得圖形的渲染更加逼真[12-16]。虛擬汽車試驗場的部分三維模型如圖3所示。
圖3 虛擬測試試驗場模型
人機交互技術(shù)是指通過計算機的輸入、輸出設(shè)備,以有效的方式實現(xiàn)人與計算機之間的對話的技術(shù),它能將數(shù)據(jù)及時地顯示和反饋給用戶。在該系統(tǒng)中,人機交互包括GUI界面的設(shè)計和漫游的設(shè)計。
用戶圖形界面是用戶體驗和操作的部分,因此對其的設(shè)計至關(guān)重要。在Unity3D中,這種界面被稱作GUI,GUI的編寫是采用腳本的方式,利用VS調(diào)用API函數(shù)進行的,編寫完成后將代碼拖放給攝像機對象。在Unity3D里GUI這個類包含一些高級控件,如Label,Button,ToolBar等。該系統(tǒng)設(shè)計的GUI界面為用戶選擇交通場景和不同類型的車輛提供便利,用戶可以點擊菜單按鈕選擇不同的交通場景進行漫游,如點擊無人車菜單按鈕,彈出一個對話框可以選擇紅綠燈路口、交叉口、環(huán)形道路等交通場景[17-21]。下面以紅綠燈位置的菜單設(shè)計為例,其主要程序代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class position :MonoBehaviour {
public Transform car;
GameObject car;
public Transform mcube;
public voidm PositionTraffic lights()
{ mcar=GameObject.Find("Carnet(Clone)");
mcar.transform.position=mcube.position;
mcar.transform.rotation=mcube.rotation;
}
}
虛擬汽車試驗場GUI設(shè)計界面如圖4所示。
圖4 GUI界面
系統(tǒng)的漫游是用戶可以控制駕駛模擬器在不同場景下行駛實現(xiàn)與虛擬測試場景之間進行交互。漫游系統(tǒng)的設(shè)計主要分為以下幾部分:
(1)采集用戶控制駕駛模擬器的駕駛行為數(shù)據(jù)。編寫串口助手軟件并利用駕駛模擬器廠家提供的串口通信協(xié)議,將駕駛員的操作行為數(shù)據(jù)(如剎車、油門、方向盤轉(zhuǎn)角、離合)讀取出來。
(2)數(shù)據(jù)處理與網(wǎng)絡(luò)通信。將讀取的數(shù)據(jù)按照解析協(xié)議進行解析,分離出剎車、油門、離合、方向盤轉(zhuǎn)角等數(shù)據(jù),使用TCP/IP進行網(wǎng)絡(luò)通信,將數(shù)據(jù)實時發(fā)送給服務(wù)器。
(3)驅(qū)動虛擬車輛行駛。服務(wù)器將收到的數(shù)據(jù),在Unity3D的腳本文件中驅(qū)動車輛的行駛。
(4)設(shè)置小地圖,當用戶在控制虛擬車輛以第一人稱視角在虛擬場景中漫游時,右下角的小地圖中會出現(xiàn)虛擬車輛運動的局部細節(jié)。漫游過程中的小地圖顯示如圖5所示。
圖5 小地圖顯示
漫游結(jié)果展示:
用戶以第一人稱視角在虛擬汽車試驗場的各個交通場景中的漫游結(jié)果(如交叉口和環(huán)形高速跑道)如圖6所示。
虛擬汽車試驗場場景是要在室內(nèi)進行智能車測試使用的,人機交互對軟件的大小和電腦的配置以及對場景的渲染具有較高的要求。因此,可以從軟件建模和腳本語言控制兩方面對軟件進行優(yōu)化。
圖6 交叉口和環(huán)形高速跑道
隨著虛擬汽車試驗場測試場景的增多,渲染時消耗的系統(tǒng)資源隨之增多。可以對模型進行優(yōu)化,盡量減少模型的體積大小,并將用戶看不到的隱形的線、面進行刪除,場景中花草樹木使用圖片貼圖,對樹木不進行三維建模,同時對燈光也做了一定的優(yōu)化,從而加快渲染的速度。
在腳本的編寫中,首先要保證邏輯正確,其次將需要頻繁執(zhí)行且不通過事件觸發(fā)的方法改為每隔幾幀執(zhí)行一次和避免調(diào)用高開銷的Unity API。最后如果在Update函數(shù)中存在用不到的某些方法,可以將該函數(shù)從Update中移除。
文中將虛擬現(xiàn)實技術(shù)應(yīng)用到數(shù)字化和網(wǎng)絡(luò)化的虛擬汽車試驗場中,采用多場景建模方法,利用3Dmax構(gòu)建試驗場的三維模型,并借助Unity3D游戲引擎實現(xiàn)了對測試場的三維仿真漫游。用戶可以控制駕駛模擬器以第一人稱視角在各個交通場景中進行漫游,以體驗和檢測該仿真系統(tǒng)的真實性。該系統(tǒng)為室內(nèi)智能車的測試提供一個好的虛擬測試環(huán)境,以迎合智能車測試時代的到來,也證明了Unity3D是設(shè)計、開發(fā)虛擬現(xiàn)實平臺的有效工具。