雷一鳴,陳雨人,汪 凡
(同濟大學 道路與交通工程教育部重點實驗室,上海 201804)
隨著我國經(jīng)濟的高速增長和城市化進程中路網(wǎng)規(guī)模的不斷擴大,道路交通安全越發(fā)受到人們重視,采用駕駛仿真系統(tǒng)來進行道路交通試驗測試與安全評估已成為了一種主流方法和應用熱點[1]。近些年來,駕駛仿真技術(shù)已被廣泛應用于道路交通安全領(lǐng)域,并展現(xiàn)出了良好的應用前景,具體表現(xiàn)在用模擬仿真技術(shù)來評估道路線形安全[2-4]、評估道路交通基礎(chǔ)設(shè)施[5-7]、評估交通流模型[8-11]等。相對于實車試驗而言,采用駕駛仿真系統(tǒng)可以有效模擬實車運動特性和載具結(jié)構(gòu)[12],方便地進行道路交通環(huán)境的設(shè)置與危險駕駛行為的分析,有著效率高、成本低、節(jié)省人力物力以及安全性高等諸多優(yōu)勢[13-14]。目前,駕駛仿真軟件系統(tǒng)大多依賴于商業(yè)平臺,例如SCANeRTMStudio、SiLab等,這些駕駛仿真系統(tǒng)往往存在一定的局限性,例如道路建模流程復雜受限[15]、光照渲染乃至交通流仿真的沉浸感不高[16]、沒有很好地將模擬駕駛與交通流仿真很好地融合、采用C/S架構(gòu)需要配置特定的環(huán)境進行安裝、功能高度封裝使得交互性較差[17]等。
針對上述局限性,設(shè)計開發(fā)了一個基于虛幻引擎(UE4,unreal engine 4)的在線輕量化駕駛仿真系統(tǒng)。系統(tǒng)采用藍圖可視化腳本與C++編程方式開發(fā)各項仿真功能模塊,實現(xiàn)根據(jù)原始道路線形和交通流資料快速高效搭建仿真場景,在駕駛試驗過程中實時將駕駛行為數(shù)據(jù)存儲到MySQL數(shù)據(jù)庫;采用虛幻引擎的像素流送技術(shù)完成視頻幀到前端的傳輸,實現(xiàn)輕量化的道路三維建模與在線模擬駕駛;通過尋路、感知、環(huán)境查詢等邏輯構(gòu)建車輛AI行為樹實現(xiàn)交通流的仿真驅(qū)動;并采用前后端分離的方式開發(fā)了駕駛仿真信息管理與數(shù)據(jù)可視化系統(tǒng)。經(jīng)部署與測試使用,系統(tǒng)達到了預期要求,能夠為駕駛仿真與道路安全分析提供新的技術(shù)支持,具有重要的現(xiàn)實意義。
基于Web的駕駛模擬仿真實驗,要求快速搭建出符合具體實驗要求的三維道路模型與交通流環(huán)境,有效集成方向盤、油門等硬件設(shè)備,通過訪問瀏覽器即可在仿真環(huán)境中進行高逼真度的模擬駕駛,支持駕駛行為數(shù)據(jù)的科學采集、存儲與可視化,進而驅(qū)動行車環(huán)境的安全評估與優(yōu)化設(shè)計。另外,作為具有普適性的輕量化實驗平臺,需要能夠?qū)γ看务{駛實驗的人-車-路-環(huán)境各類信息進行查閱與管理,即能夠根據(jù)數(shù)據(jù)庫索引快速定位到受試者的性別、年齡、駕齡等信息,受試車輛的類型、最大扭矩、最大轉(zhuǎn)速等信息,道路幾何線形的平縱設(shè)計參數(shù)、行車道和路肩寬度等信息,以及行車環(huán)境中的天氣氣候、噪聲情況、交通流量、是否存在突發(fā)狀況等特征信息。在系統(tǒng)中要求不僅能夠靈活設(shè)置以上各類信息參數(shù),還能夠?qū)崟r存儲到數(shù)據(jù)庫,從而對每次實驗的信息數(shù)據(jù)進行有效歸檔與回溯。
系統(tǒng)的設(shè)計方案與主體架構(gòu)如圖1所示。
圖1 在線駕駛仿真系統(tǒng)技術(shù)架構(gòu)
駕駛仿真各項功能模塊通過虛幻引擎的藍圖-可視化腳本與C++編程實現(xiàn)。其中道路自動化三維建模模塊基于原始道路幾何設(shè)計方案生成道路中心線,再采用Spline Mesh樣條網(wǎng)格體組件生成三維道路模型。車道級真實交通流場景還原模塊通過車輛載具開發(fā)、車輛生成藍圖開發(fā)實現(xiàn)。模擬駕駛與數(shù)據(jù)采集模塊通過Airsim模塊集成、行車環(huán)境數(shù)據(jù)計算與存儲來實現(xiàn)。硬件設(shè)備集成模塊通過設(shè)置方向盤、油門、制動踏板等各項軸屬性映射實現(xiàn)。
數(shù)據(jù)庫設(shè)計完成后,將虛幻引擎與MySQL服務器異步連接,存儲行車過程的駕駛行為數(shù)據(jù)。通過Windows身份驗證系統(tǒng)以及數(shù)據(jù)庫服務器身份驗證系統(tǒng)與服務器的異步連接,可確保在連接耗費時間的情況下駕駛仿真系統(tǒng)主線程不會被阻塞。采用像素流送技術(shù),將駕駛仿真過程中的視頻幀隨同音頻一同流送到Web前端。
基于J2EE技術(shù),采用前后端分離框架來開發(fā)駕駛仿真信息管理與可視化平臺,內(nèi)置人-車-路-環(huán)境信息管理、道路三維模型漫游、在線駕駛仿真、實驗數(shù)據(jù)導出與圖表可視化、自定義數(shù)據(jù)權(quán)限、服務監(jiān)控與日志管理等功能模塊。
道路自動化建模是指根據(jù)基本的幾何線形原始資料自動生成道路三維模型的過程,也是構(gòu)建高逼真度駕駛仿真場景的基礎(chǔ)。原始資料包括道路平面線形(控制點平面坐標、前后緩和曲線長度、圓曲線半徑),縱斷面線形(變坡點樁號、變坡點高程、豎曲線半徑)和橫斷面線形(行車道寬度、路肩寬度等),通過數(shù)學幾何計算自動求出道路三維中心線的逐樁坐標,之后在UE4中基于Spline Mesh樣條網(wǎng)格體獲取逐樁坐標在樣條線上的位置和切線朝向、斷面類型,開發(fā)道路建模藍圖,即可自動化生成需要的道路三維模型。具體流程見圖2。
圖2 道路自動化建模流程圖
系統(tǒng)需要結(jié)合駕駛仿真的應用需求,有效還原精確到車道級別的真實交通流場景,同時保證周邊交通流能對模擬駕駛車輛做出真實有效的反饋。首先需要使用輪式載具(Wheeled Vehicle)藍圖類創(chuàng)建車輛載具,包括常見的小客車、大貨車等車型,設(shè)置車輛的骨架網(wǎng)格體、物理資源、動畫藍圖等。交通流車輛載具開發(fā)完畢后,開發(fā)車輛的行駛功能,以及設(shè)置AI行為樹來編輯行駛規(guī)則,保證添加的周邊交通流能夠?qū)δM駕駛車輛以及其余車輛、障礙物等做出真實的反饋。主要涉及到的變量,見表1。
表1 開發(fā)交通流載具主要變量
通過設(shè)置尋路、感知、環(huán)境查詢、構(gòu)建AI行為樹決策流程實現(xiàn)與真實交通流相適應的行駛車輛的仿真驅(qū)動,主要邏輯可簡化為圖3。
圖3 交通流場景仿真流程圖
選取某城市道路作為示例,根據(jù)原始交通流資料設(shè)置各個車道的交通流參數(shù)后,仿真示意圖見圖4。圖中展示了交通流中部分車輛的運行狀況。
車輛1:正常直行,開啟直行檢測射線,未檢測到前方存在車輛或障礙物,直行檢測射線顯示為綠色;
車輛2:開始減速,檢測到前方較近處駛?cè)胲囕v(車輛3),直行檢測射線由綠色轉(zhuǎn)為紅色;
車輛3:處于正常轉(zhuǎn)向過程,直行檢測射線和轉(zhuǎn)向檢測射線均未檢測到障礙物;
車輛4:即將向左轉(zhuǎn)向,開啟轉(zhuǎn)向檢測射線,直行檢測射線和轉(zhuǎn)向檢測射線均未檢測到有效障礙物。
圖4 交通流運行示意圖
為了方便實驗人員進行交通流設(shè)置,開發(fā)如圖GUI交互界面,在實驗前對實驗場景中不同行駛路徑的交通流進行簡單的設(shè)置,相關(guān)變量包括車輛的最小與最大生成間隔、最小與最大目標車速、不同車輛類型的所占比例等,以城市道路示范路段為例,交通流設(shè)置界面如圖5所示。
圖5 交通流設(shè)置界面
Airsim是微軟開發(fā)的一款基于虛幻引擎構(gòu)建的無人機、汽車等模擬器的開源平臺,它提供了基本的車輛動力學引擎,支持使用仿真車輛進行模擬駕駛以及通過腳本控制車輛進行自動駕駛[18]。在虛幻引擎中集成Airsim,軟件模塊經(jīng)過開發(fā)調(diào)試無誤后,即可與硬件設(shè)備相集成。主要流程包括:將模擬駕駛硬件設(shè)備連接到主機上,安裝相應的驅(qū)動程序,測試成功連接方向盤、制動踏板、油門等硬件;在虛幻引擎中啟用“Windows RawInput”插件,與硬件輸入相匹配,添加新設(shè)備配置;設(shè)置GenericUSBController的各類軸屬性映射,完成后即可配合模擬駕駛器進行駕駛實驗。
Airsim中采集的數(shù)據(jù)位于世界坐標系中,例如Vx,Vy,Vz,不能直接得到車輛運行過程中的軸向、橫向和縱向車速。因此,在虛幻引擎中需完成世界坐標系到局部坐標系的轉(zhuǎn)換。以四元數(shù)ow、ox、oy和oz作為入手點,將四元數(shù)轉(zhuǎn)換為歐拉角,從而得到車輛的軸向、橫向和縱向車速與加速度。四元數(shù)使用一個三維向量表示轉(zhuǎn)軸,和一個角度分量表示繞此轉(zhuǎn)軸的旋轉(zhuǎn)角度,例如四元數(shù)(w,x,y,z),其中x、y、z代表的是向量的三維坐標,w代表的是角度。根據(jù)四元數(shù)即可求出歐拉角或者旋轉(zhuǎn)矩陣,根據(jù)ow、ox、oy、oz即可將坐標系旋轉(zhuǎn)到當前局部坐標系,獲得車輛運行時的朝向,從而計算出對應的速度與三軸加速度。在UE4中編寫對應的數(shù)據(jù)接口,將需要的駕駛仿真數(shù)據(jù)按固定頻率進行采集。
數(shù)據(jù)庫表存儲多層次信息,包括用戶信息表、車輛參數(shù)表、道路線形表、駕駛實驗表、實驗數(shù)據(jù)表、數(shù)據(jù)權(quán)限表、操作日志表等。
其中用戶信息表用于校驗登錄用戶身份與權(quán)限,以駕駛員身份為例,表中字段包括駕駛員的編號ID、姓名、性別、年齡、駕齡、性格評估、個人備注等,用戶信息表會與數(shù)據(jù)權(quán)限表、駕駛實驗表相關(guān)聯(lián)。車輛參數(shù)表的字段有車輛名稱、類型、軸距、最大扭矩、最高轉(zhuǎn)速、差速器類型等,以適應不同的駕駛仿真實驗。道路線形表中的字段包括控制點平面坐標、前后緩和曲線長度、圓曲線半徑、縱坡坡度、豎曲線半徑、行車道寬度、路肩寬度等。駕駛實驗表中的字段包括駕駛員編號、車輛編號、實驗環(huán)境、工程背景、實驗時間、實驗備注等。實驗數(shù)據(jù)表的字段包括駕駛試驗編號、世界坐標位置、車速、三軸加速度、檔位、轉(zhuǎn)速、行駛里程、時間戳等。
系統(tǒng)前端信息管理與可視化模塊采用Vue.js、Element UI、Echarts等框架設(shè)計與開發(fā),可實現(xiàn)人-車-路-環(huán)境的信息查看與修改,實驗數(shù)據(jù)的查看與導出,圖表圖像的可視化等功能。通過對Axios進行封裝,用戶能夠?qū)Ω黜桿I組件進行數(shù)據(jù)交互,在請求的過程中使用的Json作為前后端數(shù)據(jù)傳輸?shù)母袷?。作為一種輕量級數(shù)據(jù)交換格式,Json易于讀寫與解析,且由于格式壓縮,占用帶寬小[19]。
前端的在線駕駛仿真模塊使用虛幻引擎的像素流送技術(shù)來實現(xiàn)。像素流送使用WebRTC點對點通信框架,保證系統(tǒng)使用者和虛幻引擎應用程序之間的延遲很低。像素流送技術(shù)的原理是使用H.264視頻壓縮方式對每個渲染幀的最終結(jié)果進行編碼,將生成的視頻幀隨音頻一同打包到媒體流送中,進而發(fā)送到一個或多個連線的瀏覽器上。信令和Web服務器則負責交涉 瀏覽器和像素流送插件之間的連接,向Web端提供HTML和JavaScript環(huán)境,從而將虛幻引擎中的駕駛仿真環(huán)境實時在線傳輸?shù)角岸隧撁?,流程見圖6。根據(jù)UE4內(nèi)置的emitUIInteraction函數(shù)進行二次開發(fā),從而提供與用戶的界面交互。只需要輸入相應的IP地址,即可讓任何人通過任何設(shè)備的瀏覽器進行輕量化的駕駛仿真實驗,從而實現(xiàn)駕駛仿真的輕量化、無插件、跨平臺特性[20]。
圖6 像素流送流程圖
系統(tǒng)后端為Web前端提供服務支持,采用經(jīng)典技術(shù)組合(Spring Boot、Spring Security、MyBatis、Redis等)進行開發(fā),應用MVC框架(模型-Model、視圖-View、控制器-Controller)將代碼邏輯解耦。在程序執(zhí)行期間,駕駛仿真系統(tǒng)用戶將請求發(fā)送到控制器,控制器根據(jù)請求類型將指令發(fā)送到相應的模型層。模型層與數(shù)據(jù)庫交互完成之后,根據(jù)業(yè)務的邏輯選擇相應的視圖進行顯示,用戶就獲得了這次交互的反饋信息,從而增加代碼的擴展性與復用性[21]。
針對系統(tǒng)的訪問權(quán)限問題,由于系統(tǒng)涉及到多個角色,包括駕駛實驗受試人員、駕駛實驗數(shù)據(jù)分析人員、平臺管理維護人員,每個角色擁有的功能菜單和訪問權(quán)限是不同的,例如駕駛實驗受試人員可以進行在線的駕駛仿真,而實驗數(shù)據(jù)分析人員則可以進行實驗數(shù)據(jù)的查看與處理,然后系統(tǒng)后臺管理人員才可以對用戶進行管理,因此采用RBAC思想進行權(quán)限控制,即一個用戶能夠擁有若干角色,每一個角色能夠擁有若干個菜單,并通過設(shè)置對應的權(quán)限,來構(gòu)造成“用戶-角色-菜單”的授權(quán)模型,不同類型的角色能夠訪問的平臺功能是不同的,用戶與角色、角色與菜單之間構(gòu)成了多對多的關(guān)系。
針對系統(tǒng)的數(shù)據(jù)存儲問題,數(shù)據(jù)持久層采用MyBatis,能夠支持個性化Sql語句與存儲過程,將JDBC具體的細節(jié)掩蓋,能夠靈活高效地對駕駛仿真信息進行查詢[22]。數(shù)據(jù)庫采用關(guān)系型數(shù)據(jù)庫MySQL與緩存數(shù)據(jù)庫Redis相結(jié)合的方式,MySQL用來存儲駕駛員-車-路-環(huán)境等信息,將它們持久化存儲到硬盤內(nèi)??紤]到由于仿真場景能夠基于Web進行漫游,系統(tǒng)的并發(fā)量可能較高,采用Redis將用戶登錄信息、數(shù)據(jù)庫常用字段的鍵值對參數(shù)存儲到緩存中,可以有效減少直接訪問數(shù)據(jù)庫的次數(shù),提高數(shù)據(jù)加載與查詢效率。
經(jīng)過虛幻引擎內(nèi)部邏輯開發(fā)、數(shù)據(jù)庫表間關(guān)系設(shè)計、系統(tǒng)架構(gòu)開發(fā)和前后端接口聯(lián)調(diào),系統(tǒng)已經(jīng)能夠平穩(wěn)運行且具備了較好的實現(xiàn)效果。
在道路自動化三維建模頁面,輸入的道路幾何線形原始資料可自動計算出道路中心線的逐樁坐標,再結(jié)合道路橫斷面類型特征進行物理材質(zhì)參數(shù)化設(shè)置,在Spline Mesh組件上進行網(wǎng)格體生成,以某林區(qū)道路為例,道路自動化建模如圖7所示。
圖7 某林區(qū)道路自動化三維建模
在模擬駕駛頁面,使用者無需安裝特定軟件,通過瀏覽器即可進行在線的模擬駕駛,在實驗前設(shè)置駕駛實驗是否需要加入交通流,以分別適應需要自由流和非自由流的駕駛仿真環(huán)境。此外,設(shè)置是否需要將本次實驗的駕駛行為數(shù)據(jù)存儲進數(shù)據(jù)庫,以分別適應需要存儲數(shù)據(jù)的正式實驗與不需要存儲數(shù)據(jù)的測試性實驗,并且可以填寫記錄到數(shù)據(jù)庫的采集頻率和實驗備注,其中采集頻率可以精確到0.1 s,之后即可正式進行駕駛仿真實驗,如圖8,圖9所示。
圖8 實驗基本信息填寫
圖9 基于Web的在線駕駛仿真實驗
如果勾選了“是否需要存儲到數(shù)據(jù)庫”選項,平臺則會按照指定頻率采集駕駛行為數(shù)據(jù),可在平臺的“駕駛數(shù)據(jù)”菜單欄中查看原始記錄,同時,可導出數(shù)據(jù)為對應的.csv文件供進一步分析,其中實時記錄的部分類型行車數(shù)據(jù)見圖10。
圖10 駕駛實驗中的行車數(shù)據(jù)預覽
并且,通過對數(shù)據(jù)庫中數(shù)據(jù)進行格式化管理,進而對不同指標維度的仿真數(shù)據(jù)進行通用接口配置,系統(tǒng)提供了高質(zhì)量、高拓展性的數(shù)據(jù)分析接口與可視化平臺,為實驗用戶提供了輕量高效的數(shù)據(jù)查詢與展示服務。以對上海市中環(huán)的北虹立交進行的駕駛仿真實驗為例,見圖11,系統(tǒng)能夠根據(jù)用戶需求配置對應的可視化圖表,并調(diào)用后端對應算法計算出各個匝道路段單元的安全指數(shù)等分析指標。
圖11 北虹立交駕駛仿真信息可視化平臺
文章針對傳統(tǒng)駕駛仿真軟件存在的建模受限、配置冗余等一系列局限性,基于UE4開發(fā)并測試了道路數(shù)字化建模與在線駕駛仿真系統(tǒng)。實現(xiàn)的功能模塊有:角色用戶管理、道路自動化三維建模、駕駛員-車輛-道路-環(huán)境信息管理、真實交通流場景還原、在線進行駕駛仿真實驗、駕駛實驗數(shù)據(jù)實時采集與可視化等。系統(tǒng)經(jīng)過測試確保能平穩(wěn)運行,滿足輕量化、自動化、智能化的業(yè)務功能需求,且能夠有效減少駕駛實驗成本、擴大數(shù)據(jù)樣本,為研究人員提供一個具有普適性的輕量化實驗平臺。此外,系統(tǒng)還提供了數(shù)據(jù)接口,可針對特定需求進行二次開發(fā)。隨著智能化技術(shù)的不斷發(fā)展,未來如何更有效地融合虛擬現(xiàn)實、大數(shù)據(jù)、人工智能等新技術(shù)對駕駛仿真系統(tǒng)進行精細化完善,驅(qū)動行車環(huán)境安全評估與優(yōu)化設(shè)計,是需要進一步研究的重點。