王齊超,杜海林,張杭鋮
基于云通信的智能車輛行駛狀態(tài)監(jiān)測系統(tǒng)分析
王齊超,杜海林,張杭鋮
(長安大學 汽車學院,陜西 西安 710018)
只依靠單車智能很難實現(xiàn)高階自動駕駛,但通過將車、云、路、人結(jié)合起來,可大幅提高車輛的環(huán)境感知和控制決策能力,從而給出智能車輛行駛過程中的全局最優(yōu)方案。文章搭建了基于云通信的車輛行駛狀態(tài)監(jiān)測系統(tǒng)。先用車載端機器人操作系統(tǒng)(ROS)對各傳感器的數(shù)據(jù)進行整合,然后通過WebSocket協(xié)議上傳至云端,并在云端使用Redis緩存中間件對數(shù)據(jù)高效存儲。云端系統(tǒng)通過基于Token的安全驗證技術(shù)進行安全訪問,并對數(shù)據(jù)再次整合??蛻舳送ㄟ^HTTP協(xié)議來進行監(jiān)測數(shù)據(jù)的請求,并且在客戶端設計出了每種監(jiān)測數(shù)據(jù)的展示頁面。最后,在實車上布置相應傳感器進行監(jiān)測系統(tǒng)驗證,結(jié)果表明,該系統(tǒng)具有良好的可靠性和穩(wěn)定性。
車聯(lián)網(wǎng);云端監(jiān)測;高效數(shù)據(jù)存儲;云通信;智能車輛;行駛狀態(tài)
在信息化背景下,汽車也在飛速的智能化,但前期快速發(fā)展的僅僅是單車智能,相較而言車聯(lián)網(wǎng)的發(fā)展有些滯后[1],然而最近幾年隨著國家利好政策的陸續(xù)出臺,國內(nèi)智能網(wǎng)聯(lián)汽車產(chǎn)業(yè)正在不斷加快發(fā)展步伐[2-3]。智能網(wǎng)聯(lián)汽車相對于單車智能而言最大的優(yōu)勢就是可以結(jié)合整個車聯(lián)網(wǎng)系統(tǒng)中其他車輛的路況信息,做到云端信息的實時共享,從而給出當前車輛行駛的全局最優(yōu)解,而與車聯(lián)網(wǎng)相輔相成的云計算技術(shù),可以提升整個系統(tǒng)的資源分配和快速部署的能力[4-5]。
早在20世紀80年代,歐洲就啟動項目研究車車通信、車路通信和輔助駕駛等先進技術(shù)[6]。日本在20世紀90年代建立了道路交通情報通信系統(tǒng)(Vehicle Information and Communication System, VICS),可將處理后的交通信息狀況與衛(wèi)星定位、電子地圖等有機結(jié)合并提供給車輛駕駛者參考使用[7]。美國于2004年創(chuàng)造了“車載隨意移動網(wǎng)絡(Vehicular ad-hoc network, VANET)”一詞,即車聯(lián)網(wǎng)。
國內(nèi)車聯(lián)網(wǎng)的研究起步較晚,但在通信層面采用的是比專用短程通信技術(shù)(Dedicated Short Range Communication, DSRC)更為先進的蜂窩車聯(lián)網(wǎng)(Cellular Vehicle to Everything, C-V2X)[8]技術(shù),因此,近兩三年里正在慢慢追趕上美國、歐洲和日本。在國內(nèi)政策的支持下,各大車企和互聯(lián)網(wǎng)頭部科技公司紛紛開始聯(lián)手研發(fā)車聯(lián)網(wǎng),如百度的Apollo計劃,阿里和上汽合作研發(fā)的車聯(lián)網(wǎng)智能系統(tǒng)AliOS等[9]。
本文通過結(jié)合車聯(lián)網(wǎng)和云服務,開發(fā)出了基于云通信的智能網(wǎng)聯(lián)汽車行駛狀態(tài)監(jiān)測系統(tǒng),并且經(jīng)過實驗驗證,該監(jiān)測系統(tǒng)能夠準確接收、解析、分享高效存儲車載端各傳感器上傳的數(shù)據(jù),客戶端也可正常實現(xiàn)智能網(wǎng)聯(lián)汽車行駛狀態(tài)的監(jiān)測及數(shù)據(jù)可視化。
本文中的監(jiān)測系統(tǒng)通過無線網(wǎng)絡云通信來進行信息傳輸,因此,采用的是傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol, TCP/IP),即傳輸控制/網(wǎng)絡協(xié)議,TCP/IP協(xié)議屬于操作系統(tǒng)底層已經(jīng)規(guī)范好的協(xié)議,上層有Socket接口讓用戶來使用TCP/IP協(xié)議,本系統(tǒng)并沒有自定義Socket通信協(xié)議規(guī)范,而是使用的HTTP協(xié)議和WebSocket協(xié)議[10]。這兩種協(xié)議可以完成文中車載端、云端、瀏覽器客戶端系統(tǒng)的相互通信,并且這兩種應用層的協(xié)議在完成度和可靠性上都表現(xiàn)較好,可以在整個系統(tǒng)中屏蔽掉底層最原始的TCP/IP協(xié)議中的通信細節(jié)問題。
在互聯(lián)網(wǎng)通信中,應用層的協(xié)議基本都是以TCP/IP協(xié)議簇作為基石而發(fā)展起來的。在TCP/IP協(xié)議簇的應用層PC端開發(fā)中有兩種開發(fā)方式:一種是B/S方式,這種實際上就是Browser/Server方式,即瀏覽器客戶端/服務器模式;另外一種是C/S方式,也就是Client/Server方式,即專用客戶端/服務器模式。因為B/S架構(gòu)有著跨平臺、客戶端零維護和可擴展性高等優(yōu)勢,所以本系統(tǒng)選擇了這種開發(fā)模式。
操作系統(tǒng)底層在使用網(wǎng)絡通信的時候,會使用輸入輸出(Input Output, IO)來進行通信,為了不讓同步阻塞影響系統(tǒng)的運行,本文中使用同步非阻塞IO技術(shù),即IO多路復用來提升系統(tǒng)的IO通信效率。模型如圖1所示。
本文中的系統(tǒng)使用了SpringBoot框架代替?zhèn)鹘y(tǒng)的JavaWeb來實現(xiàn)基于云通信的車聯(lián)網(wǎng)系統(tǒng)的云端系統(tǒng),SpringBoot框架是由Java語言編寫,用來代替配置比較繁重的Spring而出現(xiàn)的框架,可以做到與其他框架的快速整合,本質(zhì)屬于一個模型/視圖/控制器(Model, View, Controller, MVC)式的框架。
本文中系統(tǒng)的客戶端應用了LayUI框架,該框架有個極大的優(yōu)點就是其定義了很多客戶端與云端交互的樣式接口,如分頁表格,只需在客戶端配置好接口,云端則按照定義好的接口規(guī)則返回數(shù)據(jù),即可完成頁面的展示,極大減少了云端開發(fā)人員的開發(fā)成本。本系統(tǒng)在LayUI中集成了jQuery的JS庫[11],利用這個庫簡化Ajax的方式可以使用比較短的代碼來實現(xiàn)異步請求。本文中在兩種情形下需要使用Ajax,其一是在客戶端獲取來自云端的實時數(shù)據(jù)時,這里出于系統(tǒng)復雜度的考慮使用Ajax輪詢的方式來進行實時數(shù)據(jù)的獲取,其二是在用戶提交請求數(shù)據(jù)時,需要使用Ajax方式對云端進行提交,這種提交方式會提高數(shù)據(jù)請求效率,并也可作為前后端分離系統(tǒng)的基礎[12]。
圖1 IO多路復用
本文中的系統(tǒng)在存儲端有Redis和MySQL兩種選擇,由于車載端使用GPS、激光等傳感器采集的數(shù)據(jù)是實時變化的,如果全部寫進持久化的MySQL數(shù)據(jù)庫中,會導致云端硬盤存儲不足,從而需要清理歷史數(shù)據(jù),不利于對車輛歷史狀態(tài)的監(jiān)測,并且當系統(tǒng)中車輛數(shù)較多時,也會導致較大的IO堵塞,不利于客戶端的及時響應。
Redis[13]是一種由C語言編寫的鍵值對數(shù)據(jù)庫。其存儲特點是將數(shù)據(jù)以鍵值對的方式存儲到云端的內(nèi)存中,可以將云端接收來自車載端的數(shù)據(jù),以鍵值對的形式存進云端系統(tǒng)的內(nèi)存中,車載端不斷傳來的數(shù)據(jù)可以依靠鍵值對的覆蓋特性進行內(nèi)存數(shù)據(jù)的實時刷新,同時,可以有選擇性地將數(shù)據(jù)也存進MySQL中進行可靠的持久化存儲,并且由于數(shù)據(jù)是存在內(nèi)存中,因此,在客戶端發(fā)起數(shù)據(jù)查詢請求的時候,可以將數(shù)據(jù)直接從內(nèi)存中讀出來,可以極大提高整個系統(tǒng)的響應速度。因此,在獲取實時數(shù)據(jù)和歷史數(shù)據(jù)時,云端將采用不同的存取策略,如圖2所示。
圖2 Redis緩存策略
本文主要通過SpringBoot框架來完成云端應用系統(tǒng)的搭建,此框架進行Web應用搭建時可以簡化配置。在車載端通過WebSocket協(xié)議與云端建立連接時需要對不同的車輛數(shù)據(jù)進行分類,因此,本系統(tǒng)在連接時附上路徑變量,Redis通過鍵值對存儲時,其鍵不僅需要存儲對應信息的描述名,還需要存儲對應的車輛id。為了做到這點,首先需要在客戶端登錄時先獲取Session,后在車載端與云端建立WebSocket連接后,將車輛id存入到云端Session中,此時對于每一個客戶端都對應其唯一的Session,用戶在發(fā)起HTTP請求監(jiān)測車輛狀態(tài)信息時,可先從Session中獲取到車輛id,再去Redis中得到對應車輛id的各種車輛狀態(tài)信息,而其車輛id是在車輛加入車聯(lián)網(wǎng)系統(tǒng)時已分配好,如圖3所示。
圖3 Redis信息分類策略
在整個云端系統(tǒng)應用中,主要是通過云端將整個數(shù)據(jù)鏈路打通,其中包括對于各種數(shù)據(jù)的訪問。其次云端還需通過接收來自客戶端的HTTP請求來響應客戶端的請求,此時在云端返回指定的數(shù)據(jù)即可。對于客戶端方面,云端存放著很多對客戶端所響應的頁面,這些頁面需要一定的安全規(guī)則才可以進行訪問,只有得到這些頁面的訪問權(quán),才可以使用頁面中的訪問規(guī)則去云端請求對應的數(shù)據(jù)。
Token即令牌[14],在客戶端登錄時,服務端會向客戶端簽發(fā)Token,以此讓客戶端在進行請求時,能夠使云端得知其是否有進行請求的權(quán)限,其整體登錄請求如圖4所示。
圖4 Token驗證登錄
本文采用基于Token的JWT(JSON Web Token)技術(shù)[15]來完成令牌登錄驗證的功能。在系統(tǒng)中使用JWT之后,可在云端得到客戶端請求中的JWT信息之后,即可直接解密得到用戶信息,以此來判斷訪問權(quán)限,而不需要像Token需要再去數(shù)據(jù)庫中進行比對。在系統(tǒng)經(jīng)過JWT驗證之后,客戶端即可訪問位于云端的各種資源,并可使云端顯示出所監(jiān)測的頁面。
在云端進行數(shù)據(jù)監(jiān)測的時候,出于系統(tǒng)的實時性和高并發(fā)性考慮,從Redis中獲取數(shù)據(jù),而登錄時的賬號密碼因其相對固定從MySQL中獲取。
在客戶端進行數(shù)據(jù)監(jiān)測時,主要是使用設計相應的頁面及進行合理的布局,隨后再將數(shù)據(jù)取出來進行監(jiān)測,因此,在本部分將主要使用LayUI框架及原生的超文本標記語言(Hyper Text Mar kup Language, HTML)及 層疊樣式表(Cascading Style Sheets, CSS)對頁面進行設計與布局,另外在數(shù)據(jù)交互時,主要是使用Ajax這種無頁面刷新的方式來進行請求參數(shù)的提交及監(jiān)測數(shù)據(jù)的提取,由于原生的Ajax不方便進行操作,因此,在本文中主要使用jQuery來進行Ajax的操作。
本文對基于云通信的智能網(wǎng)聯(lián)汽車行駛狀態(tài)監(jiān)測系統(tǒng)在校內(nèi)道路進行了實車實驗,實驗的軟硬件環(huán)境為實驗車輛麗馳V5-T、車載電腦、控制器局域網(wǎng)(Controller Area Network, CAN)數(shù)據(jù)采集模塊、GPS數(shù)據(jù)采集模塊、激光雷達距離數(shù)據(jù)采集模塊、圖像數(shù)據(jù)采集模塊、車內(nèi)網(wǎng)絡設備、車載供電設備、實驗電腦、機器人操作系統(tǒng)(Robot Operating System, ROS)、IDEA、云服務器及遠程安全外殼(Secure Shell, SSH)登錄工具和瀏覽器等。
GPS設備開啟后,車載電腦將接收到數(shù)據(jù)并上傳到云端存入Redis中,客戶端訪問時,進行高德地圖應用程序接口(Application Programming Interface, API)的可視化及經(jīng)緯度的逆地址編碼操作,繼而得到客戶端頁面,運行過程頁面如圖5、圖6所示。
圖5 GPS數(shù)據(jù)上傳
圖6 GPS數(shù)據(jù)可視化頁面
激光雷達得到前方障礙物距離后,進行數(shù)據(jù)解析,并上傳到云端Redis中,客戶端實時讀取數(shù)據(jù),通過隊列結(jié)構(gòu)顯示前15 s的歷史距離數(shù)據(jù)和當前實時數(shù)據(jù),運行過程頁面如圖7、圖8所示。
對前方的車道線目標進行圖像檢測后,將車道線坐標數(shù)據(jù)變換后得到世界坐標系對應的實際距離數(shù)據(jù),車載電腦處理后發(fā)往云端存入Redis中,車輛左邊為負方向,右邊為正方向,客戶端訪問時,將通過對canvas進行對應的數(shù)據(jù)設置,得到實時的車輛位置圖,運行頁面如圖9、圖10所示。
圖7 前方距離數(shù)據(jù)上傳
圖8 前方距離頁面
圖9 左右車道線距離數(shù)據(jù)上傳
圖10 左右車道線距離實時頁面
本文采用以Java語言編寫的SpringBoot框架來完成整個云端系統(tǒng),整合了WebSocket對于Java的支持來完成云端對于車載端和瀏覽器客戶端的WebSocket通信,最后采用JWT來完成對頁面的安全訪問。本文使用B/S架構(gòu)設計出系統(tǒng)的瀏覽器客戶端監(jiān)測頁面來展示監(jiān)測數(shù)據(jù),采用的是LayUI瀏覽器客戶端框架,結(jié)合jQuery的JS(JavaScript)框架使用Ajax異步刷新數(shù)據(jù),來將云端的數(shù)據(jù)展示在瀏覽器客戶端頁面上。本文中的系統(tǒng)采用MySQL關系型數(shù)據(jù)庫來對數(shù)據(jù)進行持久化存儲,但是在并發(fā)高、數(shù)據(jù)量大時會導致系統(tǒng)擁堵,所以在瀏覽器客戶端進行數(shù)據(jù)實時監(jiān)測時,采用緩存中間件Redis來提升系統(tǒng)的整體IO效率。最后實車試驗表明,本文中的云通信監(jiān)測系統(tǒng)能夠正常工作。
[1] 崔志斌.面向智能網(wǎng)聯(lián)汽車的云數(shù)據(jù)平臺的設計與實現(xiàn)[D].成都:電子科技大學,2020.
[2] 徐勇.工業(yè)和信息化部發(fā)放四張5G牌照我國5G時代正式開啟[J].中國無線電,2019(6):1.
[3] 湯立波,康陳.車聯(lián)網(wǎng)產(chǎn)業(yè)融合發(fā)展趨勢[J].電信科學, 2019,35(11):96-100.
[4] 張一衡,沈剛.重點營運車輛動態(tài)數(shù)據(jù)在智慧高速中的應用[J].中國交通信息化,2015(S1):22-24.
[5] 李克強,戴一凡,李升波,等.智能網(wǎng)聯(lián)汽車(ICV)技術(shù)的發(fā)展現(xiàn)狀及趨勢[J].汽車安全與節(jié)能學報,2017,8 (1):1-14.
[6] 王一鳴.一文看懂“車聯(lián)網(wǎng)”的前世今生[J].物聯(lián)網(wǎng)技術(shù),2018,8(6):6-8.
[7] 李宏海,劉冬梅,王晶.日本VICS系統(tǒng)的發(fā)展介紹[J].交通標準化,2011(15):107-113.
[8] SHANZHI C,QIANG L,YONG W,et al.C-V2X Equi- pment Identification Management and Authentication Mechanism[J].中國通信,2021,18(8):297-306.
[9] 郭王虎.BAT全面布局,搶占智慧出行先機[J].智能網(wǎng)聯(lián)汽車,2020(4):78-81.
[10] 席佩瑤,陳森林,周子偉,等.數(shù)據(jù)實時通信與可視化系統(tǒng)的設計與實現(xiàn)[J].自動化與儀表,2022,37(1):55-59.
[11] 曾玉紅.基于j Query的電子工資條前端頁面設計與開發(fā)[J].電腦知識與技術(shù),2021,17(10):79-80.
[12] 臧金梅.基于AJAX異步處理的疫情JSON數(shù)據(jù)查詢[J].信息技術(shù)與信息化,2021(5):120-122.
[13] 秦溧,艾青.基于Redis技術(shù)的頁面緩存研究[J].科技風,2021(12):74-76.
[14] 漆瑞豐,周建中,劉懿.基于token令牌的水資源管理決策支持系統(tǒng)網(wǎng)絡安全體系研究[J].水力發(fā)電,2021, 47(11):125-130.
[15] 陳佳.一種基于JWT令牌認證的電力系統(tǒng)微服務認證授權(quán)方案[J].電工技術(shù),2021(16):151-154.
Analysis of Intelligent Vehicle Driving Condition Monitoring System Based on Cloud Communication
WANG Qichao, DU Hailin, ZHANG Hangcheng
( School of Automobile, Chang'an University, Xi'an 710018, China )
It is difficult to realize high-order autonomous driving only by relying on single-vehicle intelligence. However, the combination of vehicle, cloud, road and human can greatly improve the vehicle's environmental perception and control decision-making ability, so as to give the global optimal scheme in the process of intelligent vehicle driving. In this paper, a vehicle driving condition monitoring system based on cloud communication was built. Firstly, the on-board Robot Operating System (ROS) system was used to integrate the data of each sensor, then the data were uploaded to the cloud through WebSocket protocol and stored efficiently by Redis cache middleware in the cloud. The cloud system used Token-based security verification technology for secure access and data re-integration.The client requested monitoring data through the HTTP protocol and designed a display page for each monitoring data on the client. Finally, the corresponding sensors were deployed on the real vehicle to verify the monitoring system. The results showed that the system had good reliability and stability.
Car networking; Cloud monitoring; Efficient data storage;Cloud communication;Intelligent vehicle;Driving condition
TN915.81
A
1671-7988(2022)23-51-05
TN915.81
A
1671-7988(2022)23-51-05
10.16638/j.cnki.1671-7988.2022.023.010
王齊超(1999—),男,碩士研究生,研究方向為無人駕駛,E-mail:1720783615@qq.com。