陳立龍,宋建文,王 穎,曹學(xué)海,于 敏
(1三明學(xué)院 藝術(shù)與設(shè)計學(xué)院,福建 三明 365004;2克拉斯諾達(dá)爾 國立文化學(xué)院,克拉斯諾達(dá)爾邊疆區(qū) 克拉斯諾達(dá)爾 350072;3吉林動畫學(xué)院動畫 藝術(shù)學(xué)院,吉林 長春 130012;4中國美術(shù)學(xué)院 互動藝術(shù)與技術(shù)研究所,浙江 杭州 310002;5福建江夏學(xué)院 體育部,福建 福州,350001)
據(jù)公安部交管局統(tǒng)計,2019年全國新領(lǐng)證駕駛?cè)耍{齡不滿1a)數(shù)量達(dá)2 943萬人。較于龐大的駕考人員數(shù)量,駕考場地是十分稀缺的資源。因?yàn)轳{駛培訓(xùn)場地和駕考場地差異性大,駕考人員在科目二、科目三的路考之前需要排隊(duì)到駕考場地熟悉考場,這些環(huán)節(jié)的費(fèi)用較高、流程耗時、路線眾多、現(xiàn)場路況和交通狀況復(fù)雜。隨著計算機(jī)硬件性能、渲染引擎以及VR(virtual reality,虛擬現(xiàn)實(shí))配套設(shè)備的快速發(fā)展,虛擬駕考體驗(yàn)應(yīng)運(yùn)而生。通過對駕考場地、路線、路況、車輛駕駛、流程等進(jìn)行建模,實(shí)現(xiàn)一個支持多人在線的虛擬仿真駕考系統(tǒng)。
關(guān)于汽車駕駛的虛擬仿真方面已有相關(guān)的研究成果。谷新平等[1-3]采用Unity 3D作為開發(fā)平臺,研發(fā)了包括車輛和行人的動態(tài)路面三維場景;謝瀟[4]設(shè)計了六自由度的駕駛模擬仿真系統(tǒng),并對體感算法和人體前庭評價模型進(jìn)行建模,高自由度的模擬器有較好的用戶體驗(yàn)感;顧根[5]設(shè)計了四自由度的駕駛模擬器,該系統(tǒng)具有較高的經(jīng)濟(jì)適用性;張弛[6]對訓(xùn)練型汽車駕駛模擬器的汽車動力學(xué)仿真技術(shù)、視景生成技術(shù)和駕駛培訓(xùn)系統(tǒng)等三個方面的關(guān)鍵技術(shù)進(jìn)行了研究;陳彥廷[7]以實(shí)際的訓(xùn)練考試場地創(chuàng)建虛擬場景,設(shè)計了汽車運(yùn)動工況、轉(zhuǎn)向燈等信息狀態(tài)的模擬;王磊[8]利用Unity3D和Oculus Rift模擬駕駛操作系統(tǒng),實(shí)現(xiàn)在環(huán)路中的人機(jī)交互式仿真;楊亞聯(lián)等[9]基于Unity3D和HTC Vive搭建了虛擬現(xiàn)實(shí)顯示系統(tǒng),進(jìn)行汽車試驗(yàn)場完整環(huán)境的渲染和VR顯示,顯示畫面良好,且駕駛員具有較高的視場角及自由靈活的觀察視角,有效提升了駕駛員的沉浸感;Capustiac A等[10]提出了與運(yùn)動駕駛模擬器的控制策略的仿真和驗(yàn)證等方面相關(guān)的模型,包括前庭系統(tǒng)的動力學(xué)模型,結(jié)合觸覺、視覺和聽覺提示,提高了虛擬駕駛的沉浸感;Bruzelius F等[11]提出了駕駛模擬器的動力學(xué)模型,以及駕駛模擬器運(yùn)動平臺的功能在簡單性和準(zhǔn)確性之間進(jìn)行權(quán)衡的問題;陽彪[13]利用Virtools設(shè)計了汽車虛擬駕駛仿真系統(tǒng),引入了駕駛行為過程的判斷與處理以及聲響和天氣環(huán)境的模擬[12];陳旭東利用OpenGL對地形進(jìn)行建模,采用光照、霧化和紋理映射融合等特效開發(fā)了汽車駕駛虛擬場景系統(tǒng),加入了汽車定位導(dǎo)航和位置檢索功能等三維地理信息元素;李明[14]使用Quest3D開發(fā)平臺,進(jìn)行動力學(xué)、碰撞檢測、聲效等方面的模擬,并使用多通道渲染輸出;李穆遠(yuǎn)[15]使用Unreal Engine和羅技G27方向盤對虛擬人機(jī)交互設(shè)備輸出的數(shù)據(jù)進(jìn)行實(shí)時渲染;邱國鵬[16]等提出了駕考場地高清影像獲取、處理與高精度地形生成的實(shí)踐方案。
以上相關(guān)工作均是在單機(jī)的環(huán)境中進(jìn)行場地和車輛駕駛工況的模擬,沒有對多終端同時在線的各種問題展開研究,而真實(shí)的駕考環(huán)境當(dāng)中,車輛眾多,路況復(fù)雜。本文針對駕考場地,利用Unreal Engine引擎,構(gòu)建一個基于多人同時在線的虛擬駕考系統(tǒng),對汽車行駛過程中的受力情況以及多人同時在線各個終端中不同角色的車輛的平順性進(jìn)行模擬。通過上述研究,進(jìn)一步增強(qiáng)了用戶體驗(yàn)感,駕考人員可在線上提前熟悉考場、車輛操控等環(huán)節(jié),通過模擬訓(xùn)練,學(xué)習(xí)駕考中的各種標(biāo)準(zhǔn)化流程。本系統(tǒng)在一定程度上能縮短訓(xùn)練周期,減少車輛耗損,節(jié)約社會成本。
根據(jù)牛頓第二運(yùn)動定律公式:F=ma,加速度的產(chǎn)生是汽車在行駛的過程當(dāng)中受到的各種作用力(驅(qū)動力和汽車行駛阻力)的綜合作用的結(jié)果,車輛的加速度受到驅(qū)動力和各種阻力的共同影響。
(1)驅(qū)動力
其中:Ttqigi0ηT是驅(qū)動力矩;Ttq是發(fā)動機(jī)扭矩;ig是變速器傳動比;i0是主減速器傳動比;ηT是傳動系的機(jī)械效率;r是車輪半徑。
(2)空氣阻力
Far=-S2×Cd,空氣阻力與速度方向相反,其中 S是速度(標(biāo)量),Cd是風(fēng)阻系數(shù)(kg/m)。
(3)滾動阻力
Frr=Crr×Fn,滾動阻力與速度方向相反,其中Crr是滾動阻力系數(shù),F(xiàn)n是正向力。
(4)坡度阻力
汽車在坡道路面上行駛時,其重力沿道路方向的分力For=G×sinα(其中α為坡道的角度)表現(xiàn)為汽車的坡度阻力。
(5)慣性阻力
汽車加速行駛時,克服其質(zhì)量加速運(yùn)動時的慣性力,這就是加速阻力Fir。加速阻力包括平移質(zhì)量的慣性力和旋轉(zhuǎn)質(zhì)量的慣性力偶矩,為了便于計算,一般把旋轉(zhuǎn)質(zhì)量的慣性力偶矩轉(zhuǎn)化為平移質(zhì)量的慣性力。
Fir=(mcar+mea)a,其中mea是車輛旋轉(zhuǎn)部件的等價質(zhì)量,計算方式如下
其中:Iw是車輪和車軸的極慣性矩(取值 2.7 kg·m2);Ip是傳動軸的極慣性矩(取值 0.05 kg·m2);Ie是引擎的極慣性矩(取值0.2 kg·m2)與飛輪和離合器的極慣性矩(取值0.5 kg·m2)之和;ηf是主減速器的機(jī)械效率;ηt是傳動系統(tǒng)的機(jī)械效率;ig是變速箱減速比;if是主減速器減速比;rw是車輪半徑。
車輛轉(zhuǎn)向與車輛速度相關(guān),車輛靜止時,不允許轉(zhuǎn)向;運(yùn)動時,方向盤轉(zhuǎn)向角度固定的前提下,無論速度大小,轉(zhuǎn)向半徑是固定的,如圖1所示。
圖1 車輛轉(zhuǎn)向
Δx=(Uvf×V)Δt,其中 Uvf為速度方向的單位向量,V 為速度向量,Δt為幀間隔。
Δθ=(Δx/Rt)Ts,其中 Rt為轉(zhuǎn)向半徑,Ts為方向盤轉(zhuǎn)向行程。
如圖2所示,旋轉(zhuǎn)向量vr=Δθ×e,其中e為旋轉(zhuǎn)軸單位向量,Δθ為旋轉(zhuǎn)弧度,轉(zhuǎn)向的時候,速度向量跟隨旋轉(zhuǎn)向量進(jìn)行變換。
圖2 旋轉(zhuǎn)向量
本系統(tǒng)基于Unreal Engine實(shí)現(xiàn),Unreal Engine中多人同時在線機(jī)制基于 “客戶端-服務(wù)器”模式。如圖3所示,服務(wù)器(Server)擔(dān)當(dāng)角色狀態(tài)的主控者,而連接的客戶端(Client)保持近似復(fù)本,Server可將車輛狀態(tài)同步到所有Client上。角色除了服務(wù)器中的主控者(ROLE_Authority)之外,還有Client端中的他機(jī)所控制的ROLE_SimulatedProxy與本機(jī)所控制的ROLE_AutonomousProxy。Server中控制的Car-s在Client中都是SimulatedProxy角色;而在Client1中控制的Car-c1,在Server中是Authority角色,在Client2中是SimulatedProxy角色;Client2同Client1。
圖3 客戶端-服務(wù)器模式
不同終端的硬件性能的差異導(dǎo)致幀率的各不相同,所以模擬出來的本機(jī)車輛的加速度不停地在與服務(wù)器同步的過程中,隨著時間的累積,本機(jī)與服務(wù)器的車輛勢必產(chǎn)生不同的速度,進(jìn)而導(dǎo)致車輛位置的不同步;同樣的,轉(zhuǎn)向角度的不同步會進(jìn)一步加大位置的偏差,所以需要讓服務(wù)器周期性地與ROLE_AutonomousProxy進(jìn)行狀態(tài)同步。
不管是本機(jī)通過RPC(遠(yuǎn)程過程調(diào)用)與服務(wù)器進(jìn)行通信還是服務(wù)器在固定周期時更新客戶端的狀態(tài),網(wǎng)絡(luò)傳輸?shù)倪^程中間必然帶來延遲,從而導(dǎo)致本地控制的ROLE_AutonomousProxy產(chǎn)生劇烈抖動。ROLE_SimulatedProxy是根據(jù)上次從服務(wù)器獲得的速度,利用更新的間歇進(jìn)行移動模擬。當(dāng)服務(wù)器為特定的ROLE_SimulatedProxy發(fā)送更新時,客戶端將向著新的方位調(diào)整其位置,如圖4所示,此時也必然帶來劇烈抖動的現(xiàn)象。
接下來討論如何克服服務(wù)器在與ROLE_Autonomous Proxy和ROLE_SimulatedProxy同步的時候所產(chǎn)生的抖動現(xiàn)象,使得車輛在所有終端中都能保持平順性。
圖4 抖動現(xiàn)象產(chǎn)生的原因
服務(wù)器不應(yīng)該在每次更新時同步客戶端,這會消耗太多的帶寬和CPU資源。為了在性能與用戶體驗(yàn)(位移大?。┲g取得平衡,本系統(tǒng)設(shè)置服務(wù)器的同步周期為1 s。如圖5所示,假設(shè)曲線X為本機(jī)所控制的ROLE_Autonomous Proxy模擬的直線運(yùn)動軌跡,Xrep(rep為repeat簡寫)為服務(wù)器端同步到ROLE_AutonomousProxy的狀態(tài)軌跡。
為了防止在同步時ROLE_Autonomous-Proxy車輛發(fā)生抖動,本文提出了一種滯后補(bǔ)償算法:將用戶控制車輛的每一幀的運(yùn)動模擬的相關(guān)信息(包括時間戳)進(jìn)行記錄,并通過RPC同步到服務(wù)器,服務(wù)器周期性地將狀態(tài)更新回客戶端時,傳回服務(wù)器端最新一次模擬的運(yùn)動,將清除本地早于此時間戳的運(yùn)動記錄,同時,重新計算時間戳之后的運(yùn)動軌跡,確保本地車輛的位置始終領(lǐng)先于服務(wù)器同步回來的狀態(tài)。算法詳見圖6。在系統(tǒng)實(shí)際運(yùn)行中,服務(wù)器的主控者角色可能出現(xiàn)一些意外狀況,如圖5中Xrep曲線的拐角處,呈現(xiàn)的是服務(wù)端車輛與其他車輛相撞而突然短時間停滯不前的狀況,此時本地車輛基于服務(wù)器更新回的車輛狀態(tài)信息(變換信息、速度、最新執(zhí)行的移動)進(jìn)行模擬之后,將與原本位置和朝向都不一致,必然在視覺上產(chǎn)生一個明顯的抖動現(xiàn)象。但這并不是因?yàn)檠舆t而產(chǎn)生的抖動,而是因?yàn)榉?wù)器上意外狀況導(dǎo)致的,客戶端的動作序列仍然保持領(lǐng)先于服務(wù)器的狀態(tài)。
(1)對車身姿態(tài)轉(zhuǎn)向使用球面線性插值
在轉(zhuǎn)向模擬當(dāng)中,簡單的線性插值會導(dǎo)致插值過程向量的長度發(fā)生變化,而且當(dāng)兩次同步之間的轉(zhuǎn)角大于180°時,線性插值會計算最短路徑,從而產(chǎn)生錯誤,如圖7所示,假設(shè)圖中箭頭方向?yàn)檐囕v當(dāng)前方位,A為起始方向,B為轉(zhuǎn)向后方向,線性插值將在AB逆時針區(qū)域進(jìn)行插值,從而產(chǎn)生“抖動”現(xiàn)象,本文采用球面線性插值。
圖7 球面線性插值
(2)對位置與速度使用Hermite三次樣條插值
線性插值算法也能在一定程度上緩解抖動現(xiàn)象,但會使得運(yùn)動軌跡變成直線運(yùn)動。Hermite三次樣條插值能夠增強(qiáng)運(yùn)動軌跡的平滑性,也能靈活控制經(jīng)過同步點(diǎn)時的運(yùn)動軌跡。如圖8所示。
圖8 Hermite三次樣條插值
本文使用Hermite三次樣條插值算法對ROLE_SimulatedProxy的運(yùn)動軌跡(位置)進(jìn)行插值,算法如下:
其中p0是起點(diǎn),p1是終點(diǎn),m0是起點(diǎn)的斜率,m1是終點(diǎn)的斜率,t是alpha值,取值t∈(0,1)。
結(jié)合圖6與上述公式中的參數(shù),可以推導(dǎo)出速度的插值計算。其中d是樣條軌跡某一處的斜率,Δl是位移變化量,Δα 是 alpha值的變化量,Δt是幀間隔,ΔtBLU(between last updates)是兩次同步的間隔時間。
虛幻引擎是開放的實(shí)時3D創(chuàng)作平臺,系統(tǒng)項(xiàng)目基于Unreal Engine 4.24的C++模板、Steam VR與HTC VIVE頭顯構(gòu)建,場景地圖繪制工具使用GlobalMapper,地形工具使用World Machine,植被工具使用SpeedTree,結(jié)合3ds(3d Studio)Max進(jìn)行車輛和場景建模,使用萊達(dá)仕V900方向盤模擬器。
(1)獲得數(shù)字高程模型(DEM)數(shù)據(jù)。本文從ASTER GDEM下載30 m精度(一個像素代表30 m×30 m區(qū)域)高程紋理,通過輸入經(jīng)緯度坐標(biāo)的方式指定下載駕考場地周邊區(qū)域。通過ERDAS IMAGINE 9.2對下載的高程文件進(jìn)行精度校驗(yàn)。即便高程不是很精確,最終可以對高程進(jìn)行插值模擬。
(2)利用GlobalMapper處理及轉(zhuǎn)換高程圖格式。從下載下來的DEM數(shù)據(jù)中選取駕考場地區(qū)域,轉(zhuǎn)換成World Machine可識別的格式。導(dǎo)出hfz格式的考場地圖文件。
(3)World Machine地形處理。地形尺寸需要按照比例,所以需要計算好長寬高的比例大小。通常分辨率越高構(gòu)建的地形精度越高。做一些刻畫調(diào)整,最后保存導(dǎo)出高度圖格式RAW16,以及單通道灰度圖等所需要的格式的圖片。
(4)Unreal Engine 4地圖處理。創(chuàng)建初始的地形,在World Machine中對地形進(jìn)行細(xì)致的刻畫,從而得到更好的地面效果,也可在Unreal Engine 4里進(jìn)行復(fù)雜的材質(zhì)處理、法線貼圖等,地形設(shè)計效果圖如圖9。
圖9 地形設(shè)計
輛模型制作:本文使用VR設(shè)備進(jìn)行交互,要求模型制作的高精細(xì)度,需要根據(jù)硬件條件在效果與性能之間進(jìn)行平衡。
建筑制作:可借助衛(wèi)星地圖,將地圖放置到地形上,根據(jù)具體駕考場地的建筑物進(jìn)行建模,然后將模型放置到衛(wèi)星圖上面,確保建筑的坐標(biāo)位置。
道路制作:根據(jù)具體駕考場地現(xiàn)場的考試測試點(diǎn)位置,標(biāo)記準(zhǔn)確位置,運(yùn)用3ds Max按照衛(wèi)星圖進(jìn)行道路建模。
利用SpeedTree制作植被,導(dǎo)入到場景中,依據(jù)衛(wèi)星貼圖進(jìn)行定位。同時加入Wind Directional Source風(fēng)力系統(tǒng),讓草地和樹木更加生動。效果如圖10所示。
圖10 植被與樹木
查閱某款車型的 “車輛一致性證書參數(shù)”文件,參數(shù)“行駛狀態(tài)下帶車身的車輛質(zhì)量”的值為1 390 kg,發(fā)動機(jī)最大扭矩185 N·m,最小轉(zhuǎn)彎半徑5.4 m,變速器前進(jìn)擋傳動比 i0∈[0.396,2.480],倒擋傳動比 i0'∈[1.680,2.604],i0=5.045,ηT=0.85,官方百公里加速10.2 s,百公里減速35.3 m,系統(tǒng)測試見圖11。
圖11 系統(tǒng)測試
經(jīng)多次測試所得百公里加速與百公里減速的數(shù)據(jù)如表1所示,與官方參數(shù)值擬合度較高。
表1 百公里加速與減速
現(xiàn)有的VR多終端同步方案主要采用兩種方式。
1)各客戶端只從服務(wù)器同步速度(velocity)的方案,假設(shè)為方案V1;2)各客戶端從服務(wù)器同步變換(位置和旋轉(zhuǎn))信息(transform)的方案,假設(shè)為方案V2;本測試基于多終端車輛同時在線時,服務(wù)器與各客戶端車輛運(yùn)行的“平順性”作為指標(biāo),分別進(jìn)行縱向測試與橫向測試。1)縱向測試:V1、V2以及本文的“滯后補(bǔ)償算法”方案,分別在不同的服務(wù)器同步頻率(3、2,1次/s)設(shè)定和網(wǎng)絡(luò)延遲(1、2、3 s)模擬的情況下進(jìn)行測試。 2)橫向測試:在相同的服務(wù)器同步頻率設(shè)定和網(wǎng)絡(luò)延遲模擬參數(shù)下,V1、V2以及本文的“滯后補(bǔ)償算法”方案進(jìn)行橫向比較。
縱向測試結(jié)果顯示:1)V1方案中,各終端車輛始終存在明顯持續(xù)的“抖動”現(xiàn)象,而在同步頻率越高與網(wǎng)絡(luò)延遲越低時,車輛平順性越好;2)V2方案較V1方案,有較大改善,但也存在較明顯的“階段性抖動”現(xiàn)象,在同步頻率越高與 網(wǎng)絡(luò)延遲越低時,車輛平順性越好;3)“滯后補(bǔ)償算法”方案,各終端車輛無明顯“抖動”現(xiàn)象,且同步頻率和網(wǎng)絡(luò)延遲參數(shù)的改變,不改變車輛平順性,車輛總體平順性良好。橫向測試結(jié)果如表2所示。
表2 相同參數(shù)設(shè)定的車輛平順性橫向模擬測試
本文針對駕考人數(shù)眾多而駕考場地稀缺這一客觀現(xiàn)實(shí),利用Unreal Engine為渲染引擎,構(gòu)建了一個基于多人在線的虛擬駕考系統(tǒng),主要研究駕考場地的地形構(gòu)建、場景渲染、車輛運(yùn)動工況、多終端中車輛平順性等關(guān)鍵技術(shù)。系統(tǒng)的測試結(jié)果與分析表明,車輛動力性、制動性、轉(zhuǎn)向性等汽車性能指標(biāo)的仿真結(jié)果與官方數(shù)據(jù)擬合度較高,達(dá)到較好的模擬效果,特別是多終端同時在線時,各終端車輛的平順性體驗(yàn)得到質(zhì)的改善。為多終端同時在線機(jī)制下的平順性問題提供了一種解決方案。由于真實(shí)的駕考流程與車輛系統(tǒng)非常復(fù)雜,本文只研究了其中若干特性,后期需要從以下方面進(jìn)一步完善與改進(jìn):(1)呈現(xiàn)駕考場地與車輛更多維度的狀態(tài)信息,提升車輛的操控性;(2)通過優(yōu)化減輕暈動癥帶來的不適感。