高龍琛,丁 月,陳永紅,劉 政,邢建平
(1.山東大學 微電子學院,山東 濟南 250101;2.濟南市城市公共客運管理服務中心,山東 濟南 250013)
隨著國家經(jīng)濟的發(fā)展,對教育行業(yè)的投入逐年增加。但由于缺乏有效監(jiān)管,校車事故頻繁發(fā)生。自2013年起,我國校車傷亡事件數(shù)量逐年上漲,單起事故的傷殘率與死亡率由2013年的3.5人/起、0.75人/起上升至2016年的13.38人/起、2.25人/起,給社會造成了極大危害[1]。因此,排除安全隱患,對校車進行實時監(jiān)控刻不容緩。
物聯(lián)網(wǎng)技術的發(fā)展帶動車聯(lián)網(wǎng)行業(yè)的興起。大量車輛接入互聯(lián)網(wǎng),將自身內(nèi)部信息通過網(wǎng)絡傳輸至聯(lián)網(wǎng)服務端平臺,以保證車聯(lián)網(wǎng)系統(tǒng)的實時運作。傳統(tǒng)的車聯(lián)網(wǎng)終端加入互聯(lián)網(wǎng)通過使用GPRS模塊接入IPv4網(wǎng)絡,WebGIS(網(wǎng)絡地理信息系統(tǒng))服務平臺和數(shù)據(jù)庫也在IPv4環(huán)境中工作。隨著Internet規(guī)模的日益擴大,車聯(lián)網(wǎng)網(wǎng)絡中各終端對網(wǎng)絡IP地址數(shù)量的要求越來越大,產(chǎn)生了大量的地址需求,傳統(tǒng)方式已無法滿足當前需求。IPv4地址的短缺日益嚴重,不適用于大規(guī)模車輛加入互聯(lián)網(wǎng)以及車與車之間的網(wǎng)絡連接。車載終端需要獨立的IP地址才能與服務平臺建立對等的通信連接,IPv6網(wǎng)絡無疑為車聯(lián)網(wǎng)的發(fā)展提供了一種便捷的技術路線。在IPv6網(wǎng)絡下建立車聯(lián)網(wǎng)系統(tǒng),實現(xiàn)車聯(lián)網(wǎng)中人-車互聯(lián)、車-車互聯(lián)的場景,實時掌握車輛動態(tài)信息,才能有效預防人為原因造成的重大安全事故。
本系統(tǒng)融合了WebGIS服務平臺、Oracle分布式數(shù)據(jù)庫、安全網(wǎng)關等集存儲、訪問、轉(zhuǎn)發(fā)于一體的云端車聯(lián)網(wǎng)云服務平臺,設計基于嵌入式Linux的車載終端設備,實現(xiàn)了高精度北斗/GPS厘米級定位系統(tǒng),開發(fā)了基于V4L2框架的視頻服務器系統(tǒng)。監(jiān)管人員能夠?qū)崟r監(jiān)控終端報警數(shù)據(jù),實現(xiàn)對報警數(shù)據(jù)的記錄、查詢,第一時間預警、處理危險情況。
本系統(tǒng)旨在解決難以實時監(jiān)管車輛的問題。車聯(lián)網(wǎng)監(jiān)控系統(tǒng)需要完成對車輛信息的獲取、云端數(shù)據(jù)的存儲與獲取、云平臺指令下發(fā),以及實現(xiàn)人-機交互等功能,系統(tǒng)架構如圖1所示。車載終端獲取車輛實時信息,包括終端定位數(shù)據(jù)、車身OBD(車載自動診斷系統(tǒng))數(shù)據(jù)以及監(jiān)控視頻相關數(shù)據(jù)等,通過網(wǎng)絡將數(shù)據(jù)加密后上傳至安全網(wǎng)關,安全網(wǎng)關接收到終端數(shù)據(jù)后,將數(shù)據(jù)進行拆包、校驗、解密后,轉(zhuǎn)發(fā)至分布式數(shù)據(jù)庫中分類儲存。WebGIS監(jiān)控管理服務平臺用于向監(jiān)管人員實時顯示車輛定位信息,包括對車身數(shù)據(jù)的調(diào)取,如油耗、剎車、車速等;向平臺實時展示報警數(shù)據(jù),如超速行駛、車身狀態(tài)異常等。云平臺嵌入大數(shù)據(jù)分析框架,可對駕駛?cè)藛T的急加速、急減速等不良駕駛行為進行次數(shù)統(tǒng)計,通過分析駕駛員的駕駛歷史,對其進行安全駕駛等級劃分,從而激勵駕駛?cè)藛T文明駕駛。
圖1 車聯(lián)網(wǎng)系統(tǒng)架構
車載定位終端需要完成對車輛信息的獲取與實時數(shù)據(jù)的上傳,以及視頻服務器的運行。車載終端如圖2所示。選取ARM Cortex-A9作為系統(tǒng)處理器單元,終端內(nèi)部運行嵌入式Linux操作系統(tǒng)。板載UVC高清攝像頭、北斗/GPS雙頻高精度定位模塊、WiFi/4G模塊,以及CAN網(wǎng)關設備接口。
圖2 高清視頻服務器設計
ARM Cortex-A9處理器是基于指令集ARMv7的A系列處理器,相比上一代處理器,它在降低功耗的同時提升了功效和峰值性能,適應性良好。其中,內(nèi)部媒體處理引擎(MPE)可加強特定應用中的性能表現(xiàn),滿足長時間電池供電需求。嵌入式Linux系統(tǒng)因其免費開源、易移植、性能穩(wěn)定、開發(fā)周期短等特點,被廣泛應用于嵌入式設備中。本系統(tǒng)基于嵌入式Linux系統(tǒng)編程,實現(xiàn)車聯(lián)網(wǎng)終端設備中包括IPv6網(wǎng)絡加入、高精度定位信息處理、車身OBD數(shù)據(jù)獲取、遠程視頻服務器等功能。
終端系統(tǒng)中的CPU通過讀取GPS/北斗定位模塊的數(shù)據(jù)與INS慣導模塊的數(shù)據(jù)[2],將GPS/北斗定位源數(shù)據(jù)與慣導原件的源數(shù)據(jù)進行數(shù)據(jù)融合,采用動態(tài)加權融合算法降低慣性導航系統(tǒng)在工作過程中的累計誤差,實現(xiàn)厘米級精度定位,保證校車定位信息的可靠性。結(jié)合速度、姿態(tài)、位置的誤差方程,建立組合導航狀態(tài)方程(連續(xù)系統(tǒng))。通過狀態(tài)方程可以遞推出下一時刻的速度、姿態(tài)、位置,用于與差分定位的輸出進行融合。由狀態(tài)轉(zhuǎn)移方程得到下一時刻的位置、速度等數(shù)據(jù)。
式中:X為狀態(tài)矢量;F為狀態(tài)轉(zhuǎn)移矩陣;G表示噪聲驅(qū)動;W表示系統(tǒng)噪聲矢量矩陣[3]。將算法用C語言離散化表示,定義輸出函數(shù),執(zhí)行程序后即可得到下一時刻的速度、位置等信息。在嵌入式Linux系統(tǒng)下運行該程序時,需要使用ARM-Linux-gcc工具編譯程序,然后將交叉編譯環(huán)境中生成的程序拷貝至ARM平臺系統(tǒng)中運行。
車載終端需完成對UVC攝像頭視頻的獲取、封裝、儲存以及壓縮等。本系統(tǒng)遠程視頻服務器采用V4L2(Video for Linux Two)架構[4],該架構是Linux為視頻設備提供的標準接口,主要包括V4L2相關底層數(shù)據(jù)結(jié)構和V4L2相關底層驅(qū)動接口,可使程序具備發(fā)現(xiàn)和操作設備的能力。視頻服務器工程流程如圖3所示。初始化輸入設備相關函數(shù),通過FFmpeg程序?qū)⒉杉膱D像壓縮編碼為適合網(wǎng)絡流媒體傳輸?shù)腍.264格式,并將圖像壓入緩沖區(qū),供輸出函數(shù)調(diào)用。FFmpeg可以記錄、轉(zhuǎn)換數(shù)字音視頻,并將其轉(zhuǎn)化為開源計算機程序[5]。輸出函數(shù)通過創(chuàng)建Socket進程綁定本地IPv6地址與端口,回應客戶端發(fā)起的UDP請求,將圖像或視頻數(shù)據(jù)通過HTTP應答的方式發(fā)送至客戶端,供客戶端讀取調(diào)用。對視頻實現(xiàn)H.264壓縮編碼需要借助FFmpeg相關庫,在交叉編譯環(huán)境下安裝編譯完成之后將FFmpeg庫生成的動態(tài)鏈接庫復制到嵌入式Linux系統(tǒng)[6]。將程序移植到ARM Cortex-A9 硬件開發(fā)平臺,在Ubuntu平臺下搭建ARM-Linux交叉開發(fā)環(huán)境,將程序拷貝至ARM平臺。
圖3 高精度定位數(shù)據(jù)的獲取
車聯(lián)網(wǎng)系統(tǒng)運行在IPv6網(wǎng)絡環(huán)境中,數(shù)據(jù)鏈路中的通信協(xié)議不再適用,需構建適用于IPv6網(wǎng)絡的數(shù)據(jù)包格式。車載終端需定時向云平臺上傳數(shù)據(jù),通過TCP協(xié)議建立與云平臺數(shù)據(jù)通信鏈路的連接,上傳數(shù)據(jù)包括車輛登錄與退出、終端心跳包傳輸、車身OBD數(shù)據(jù)傳輸、報警、監(jiān)控視頻傳輸?shù)刃畔?。通信網(wǎng)關接收到數(shù)據(jù)后,對不同的數(shù)據(jù)包進行處理,包括對每一幀數(shù)據(jù)的校驗、解密、拆包,將有效數(shù)據(jù)根據(jù)數(shù)據(jù)庫規(guī)則存入對應數(shù)據(jù)庫中。其中,車載終端向服務平臺上傳的定位報警數(shù)據(jù)主要包括車載終端ID、IPv6地址、端口、定位數(shù)據(jù)、定位時間、速度、報警、油耗,以及附加消息;多媒體數(shù)據(jù)包括ID、IPv6地址、多媒體數(shù)據(jù)類型、數(shù)據(jù)包大小、數(shù)據(jù)格式、附加消息等;平臺向車載終端下發(fā)的指令消息包括車載終端ID、IPv6地址、指令類型、指令數(shù)據(jù)、附加消息等;指令類型包括視頻監(jiān)控調(diào)取、視頻畫面抓拍、當前終端數(shù)據(jù)上傳等。通信協(xié)議格式見表1所列。
表1 通信協(xié)議格式
數(shù)據(jù)庫用于存儲車輛相關信息以及多媒體信息等,供WebGIS服務平臺使用JDBC組件調(diào)取使用。數(shù)據(jù)庫是車聯(lián)網(wǎng)系統(tǒng)的關鍵,用于支撐車聯(lián)網(wǎng)云平臺的數(shù)據(jù)調(diào)用以及數(shù)據(jù)分析。網(wǎng)關系統(tǒng)通過ODBC組件與數(shù)據(jù)庫進行數(shù)據(jù)交互,網(wǎng)關將終端上傳的不同類型的數(shù)據(jù)解析后,將有效數(shù)據(jù)寫入數(shù)據(jù)庫。數(shù)據(jù)庫參數(shù)見表2所列。
表2 數(shù)據(jù)庫參數(shù)
定位信息包括定位車輛的經(jīng)度、緯度、速度、IPv6地址、定位時間等,用于在車聯(lián)網(wǎng)平臺獲取數(shù)據(jù)庫信息并實時顯示在車聯(lián)網(wǎng)平臺。
車聯(lián)網(wǎng)云服務平臺包括監(jiān)控管理平臺、網(wǎng)關系統(tǒng)、分布式數(shù)據(jù)庫等,其中監(jiān)控管理網(wǎng)站平臺需要完成對車輛信息的顯示,包括對定位數(shù)據(jù)與WebGIS數(shù)據(jù)的融合,與道路匹配,以及提供車聯(lián)網(wǎng)云計算平臺相關服務。云服務平臺架構基于WebGIS+Oracle[7]數(shù)據(jù)庫,使用Java Web完成前端服務程序與后端數(shù)據(jù)處理程序。平臺應用分層搭建,主要分為應用層、服務接口、業(yè)務層、存儲層、數(shù)據(jù)處理層、通信層、設備層,如圖4所示。
圖4 云服務平臺架構
(1)云計算環(huán)境支撐層IaaS:為云服務對象提供統(tǒng)一的訪問界面,包裝云服務資源、建立服務等級SLA、管理云服務對象狀態(tài)和請求等。
(2)平臺服務層PaaS:通過構建分布式服務平臺,對外提供平臺級服務,包括開發(fā)環(huán)境、平臺資源、服務資源。PaaS提供了消息中間件、數(shù)據(jù)持久化存儲、多媒體存儲、統(tǒng)一配置、用戶權限、數(shù)據(jù)分析、運維管理中心等基礎服務;對外提供了服務的限流、降級、熔斷、路由等核心功能。
(3)軟件服務層SaaS:該層主要基于PaaS提供的資源開發(fā)業(yè)務構建核心業(yè)務,搭建微服務業(yè)務集群,Open API應用通過前端軟負載對外提供軟件服務。該層主要實現(xiàn)具體的業(yè)務邏輯,通過微服務開發(fā)方式把系統(tǒng)業(yè)務拆分成多個單元模塊,降低模塊耦合性,提高系統(tǒng)健壯性。系統(tǒng)通過Open API提供與其他接入方的數(shù)據(jù)接口。
車載終端內(nèi)部ARM平臺使用基于Linux 3.0內(nèi)核的Qt嵌入式操作系統(tǒng),內(nèi)核內(nèi)部集成IPv6協(xié)議棧,ARM平臺硬件板載MT6620 WiFi/藍牙芯片,設備經(jīng)無線網(wǎng)絡接入校園網(wǎng),通過無狀態(tài)地址自動配置協(xié)議獲取全局IPv6地址。硬件平臺如圖5所示。
圖5 車載終端硬件平臺
遠程視頻服務器初始化完成后,查詢IPv6地址下有無UDP請求,若有,則根據(jù)請求做出應答,通過板載LCD觸摸顯示屏顯示實時UVC攝像頭畫面。通過Socket綁定IPv6地址與端口號,與網(wǎng)關系統(tǒng)建立IPv6網(wǎng)絡下的TCP連接,完成登錄、數(shù)據(jù)上傳等信息交互。
網(wǎng)關選用Windows Server 2012版本,通過監(jiān)聽本地IPv6地址[8]與對應端口號,接收來自車載終端上傳的數(shù)據(jù),將數(shù)據(jù)校驗解密后通過ODBC連接數(shù)據(jù)源,將數(shù)據(jù)存入分布式數(shù)據(jù)庫。
分布式數(shù)據(jù)庫集群采用Oracle RAC,其架構的最大特點是將整個RAC集群建立在一個共享的存儲設備之上,節(jié)點之間高速互聯(lián)。在Oracle安裝文件夾目錄中修改listener.ora文件中的監(jiān)聽地址,使數(shù)據(jù)庫監(jiān)聽程序監(jiān)聽本地IPv6地址。系統(tǒng)工作流程如圖6所示。車載終端通過加入無線IPv6網(wǎng)絡監(jiān)聽云平臺有無指令下發(fā),同時實時保持與網(wǎng)關間的通信鏈路;網(wǎng)關系統(tǒng)實時監(jiān)聽來自終端與平臺的數(shù)據(jù)并處理,之后加密轉(zhuǎn)發(fā)至數(shù)據(jù)庫。
圖6 車聯(lián)網(wǎng)系統(tǒng)運行流程
打開設備運行程序,終端車載設備向網(wǎng)關上傳數(shù)據(jù),發(fā)送登錄注冊信息與終端定位數(shù)據(jù),地圖實時顯示當前數(shù)據(jù),通過歷史回放可以查詢當前車輛行駛軌跡等信息。云平臺還具備報警數(shù)據(jù)上傳、駕駛員駕駛行為分析、路況查詢等功能。監(jiān)控平臺展示界面如圖7所示。
圖7 監(jiān)控平臺展示圖
硬件平臺板載2路UVC高清攝像頭,一路拍攝司機,一路拍攝車內(nèi)乘客。待終端遠程視頻服務器程序初始化完畢,車輛根據(jù)功能提示打開車載視頻,并根據(jù)數(shù)據(jù)庫保存的車載終端的IPv6地址,打開對應視頻服務器8080端口。遠程視頻監(jiān)控測試圖如圖8所示。
圖8 遠程視頻監(jiān)控測試圖
本文簡述了IPv6網(wǎng)絡下校車監(jiān)控系統(tǒng)的搭建與實施,分別對校車監(jiān)控各子系統(tǒng)做了簡要分析,通過在校車內(nèi)部安裝監(jiān)控系統(tǒng),實現(xiàn)在IPv6網(wǎng)絡環(huán)境下的校車遠程監(jiān)管與視頻實時監(jiān)控。該系統(tǒng)能夠預防由于監(jiān)管不足造成的人為行車事故,實現(xiàn)向下一代網(wǎng)絡環(huán)境下車聯(lián)網(wǎng)系統(tǒng)的過渡以及原型驗證。