王齊超,杜海林,張杭鋮
基于云通信的智能車輛行駛狀態監測系統分析
王齊超,杜海林,張杭鋮
(長安大學 汽車學院,陜西 西安 710018)
只依靠單車智能很難實現高階自動駕駛,但通過將車、云、路、人結合起來,可大幅提高車輛的環境感知和控制決策能力,從而給出智能車輛行駛過程中的全局最優方案。文章搭建了基于云通信的車輛行駛狀態監測系統。先用車載端機器人操作系統(ROS)對各傳感器的數據進行整合,然后通過WebSocket協議上傳至云端,并在云端使用Redis緩存中間件對數據高效存儲。云端系統通過基于Token的安全驗證技術進行安全訪問,并對數據再次整合。客戶端通過HTTP協議來進行監測數據的請求,并且在客戶端設計出了每種監測數據的展示頁面。最后,在實車上布置相應傳感器進行監測系統驗證,結果表明,該系統具有良好的可靠性和穩定性。
車聯網;云端監測;高效數據存儲;云通信;智能車輛;行駛狀態
在信息化背景下,汽車也在飛速的智能化,但前期快速發展的僅僅是單車智能,相較而言車聯網的發展有些滯后[1],然而最近幾年隨著國家利好政策的陸續出臺,國內智能網聯汽車產業正在不斷加快發展步伐[2-3]。智能網聯汽車相對于單車智能而言最大的優勢就是可以結合整個車聯網系統中其他車輛的路況信息,做到云端信息的實時共享,從而給出當前車輛行駛的全局最優解,而與車聯網相輔相成的云計算技術,可以提升整個系統的資源分配和快速部署的能力[4-5]。
早在20世紀80年代,歐洲就啟動項目研究車車通信、車路通信和輔助駕駛等先進技術[6]。日本在20世紀90年代建立了道路交通情報通信系統(Vehicle Information and Communication System, VICS),可將處理后的交通信息狀況與衛星定位、電子地圖等有機結合并提供給車輛駕駛者參考使用[7]。美國于2004年創造了“車載隨意移動網絡(Vehicular ad-hoc network, VANET)”一詞,即車聯網。
國內車聯網的研究起步較晚,但在通信層面采用的是比專用短程通信技術(Dedicated Short Range Communication, DSRC)更為先進的蜂窩車聯網(Cellular Vehicle to Everything, C-V2X)[8]技術,因此,近兩三年里正在慢慢追趕上美國、歐洲和日本。在國內政策的支持下,各大車企和互聯網頭部科技公司紛紛開始聯手研發車聯網,如百度的Apollo計劃,阿里和上汽合作研發的車聯網智能系統AliOS等[9]。
本文通過結合車聯網和云服務,開發出了基于云通信的智能網聯汽車行駛狀態監測系統,并且經過實驗驗證,該監測系統能夠準確接收、解析、分享高效存儲車載端各傳感器上傳的數據,客戶端也可正常實現智能網聯汽車行駛狀態的監測及數據可視化。
本文中的監測系統通過無線網絡云通信來進行信息傳輸,因此,采用的是傳輸控制協議/網際協議(Transmission Control Protocol/Internet Protocol, TCP/IP),即傳輸控制/網絡協議,TCP/IP協議屬于操作系統底層已經規范好的協議,上層有Socket接口讓用戶來使用TCP/IP協議,本系統并沒有自定義Socket通信協議規范,而是使用的HTTP協議和WebSocket協議[10]。這兩種協議可以完成文中車載端、云端、瀏覽器客戶端系統的相互通信,并且這兩種應用層的協議在完成度和可靠性上都表現較好,可以在整個系統中屏蔽掉底層最原始的TCP/IP協議中的通信細節問題。
在互聯網通信中,應用層的協議基本都是以TCP/IP協議簇作為基石而發展起來的。在TCP/IP協議簇的應用層PC端開發中有兩種開發方式:一種是B/S方式,這種實際上就是Browser/Server方式,即瀏覽器客戶端/服務器模式;另外一種是C/S方式,也就是Client/Server方式,即專用客戶端/服務器模式。因為B/S架構有著跨平臺、客戶端零維護和可擴展性高等優勢,所以本系統選擇了這種開發模式。
操作系統底層在使用網絡通信的時候,會使用輸入輸出(Input Output, IO)來進行通信,為了不讓同步阻塞影響系統的運行,本文中使用同步非阻塞IO技術,即IO多路復用來提升系統的IO通信效率。模型如圖1所示。
本文中的系統使用了SpringBoot框架代替傳統的JavaWeb來實現基于云通信的車聯網系統的云端系統,SpringBoot框架是由Java語言編寫,用來代替配置比較繁重的Spring而出現的框架,可以做到與其他框架的快速整合,本質屬于一個模型/視圖/控制器(Model, View, Controller, MVC)式的框架。
本文中系統的客戶端應用了LayUI框架,該框架有個極大的優點就是其定義了很多客戶端與云端交互的樣式接口,如分頁表格,只需在客戶端配置好接口,云端則按照定義好的接口規則返回數據,即可完成頁面的展示,極大減少了云端開發人員的開發成本。本系統在LayUI中集成了jQuery的JS庫[11],利用這個庫簡化Ajax的方式可以使用比較短的代碼來實現異步請求。本文中在兩種情形下需要使用Ajax,其一是在客戶端獲取來自云端的實時數據時,這里出于系統復雜度的考慮使用Ajax輪詢的方式來進行實時數據的獲取,其二是在用戶提交請求數據時,需要使用Ajax方式對云端進行提交,這種提交方式會提高數據請求效率,并也可作為前后端分離系統的基礎[12]。

圖1 IO多路復用
本文中的系統在存儲端有Redis和MySQL兩種選擇,由于車載端使用GPS、激光等傳感器采集的數據是實時變化的,如果全部寫進持久化的MySQL數據庫中,會導致云端硬盤存儲不足,從而需要清理歷史數據,不利于對車輛歷史狀態的監測,并且當系統中車輛數較多時,也會導致較大的IO堵塞,不利于客戶端的及時響應。
Redis[13]是一種由C語言編寫的鍵值對數據庫。其存儲特點是將數據以鍵值對的方式存儲到云端的內存中,可以將云端接收來自車載端的數據,以鍵值對的形式存進云端系統的內存中,車載端不斷傳來的數據可以依靠鍵值對的覆蓋特性進行內存數據的實時刷新,同時,可以有選擇性地將數據也存進MySQL中進行可靠的持久化存儲,并且由于數據是存在內存中,因此,在客戶端發起數據查詢請求的時候,可以將數據直接從內存中讀出來,可以極大提高整個系統的響應速度。因此,在獲取實時數據和歷史數據時,云端將采用不同的存取策略,如圖2所示。

圖2 Redis緩存策略
本文主要通過SpringBoot框架來完成云端應用系統的搭建,此框架進行Web應用搭建時可以簡化配置。在車載端通過WebSocket協議與云端建立連接時需要對不同的車輛數據進行分類,因此,本系統在連接時附上路徑變量,Redis通過鍵值對存儲時,其鍵不僅需要存儲對應信息的描述名,還需要存儲對應的車輛id。為了做到這點,首先需要在客戶端登錄時先獲取Session,后在車載端與云端建立WebSocket連接后,將車輛id存入到云端Session中,此時對于每一個客戶端都對應其唯一的Session,用戶在發起HTTP請求監測車輛狀態信息時,可先從Session中獲取到車輛id,再去Redis中得到對應車輛id的各種車輛狀態信息,而其車輛id是在車輛加入車聯網系統時已分配好,如圖3所示。

圖3 Redis信息分類策略
在整個云端系統應用中,主要是通過云端將整個數據鏈路打通,其中包括對于各種數據的訪問。其次云端還需通過接收來自客戶端的HTTP請求來響應客戶端的請求,此時在云端返回指定的數據即可。對于客戶端方面,云端存放著很多對客戶端所響應的頁面,這些頁面需要一定的安全規則才可以進行訪問,只有得到這些頁面的訪問權,才可以使用頁面中的訪問規則去云端請求對應的數據。
Token即令牌[14],在客戶端登錄時,服務端會向客戶端簽發Token,以此讓客戶端在進行請求時,能夠使云端得知其是否有進行請求的權限,其整體登錄請求如圖4所示。

圖4 Token驗證登錄
本文采用基于Token的JWT(JSON Web Token)技術[15]來完成令牌登錄驗證的功能。在系統中使用JWT之后,可在云端得到客戶端請求中的JWT信息之后,即可直接解密得到用戶信息,以此來判斷訪問權限,而不需要像Token需要再去數據庫中進行比對。在系統經過JWT驗證之后,客戶端即可訪問位于云端的各種資源,并可使云端顯示出所監測的頁面。
在云端進行數據監測的時候,出于系統的實時性和高并發性考慮,從Redis中獲取數據,而登錄時的賬號密碼因其相對固定從MySQL中獲取。
在客戶端進行數據監測時,主要是使用設計相應的頁面及進行合理的布局,隨后再將數據取出來進行監測,因此,在本部分將主要使用LayUI框架及原生的超文本標記語言(Hyper Text Mar kup Language, HTML)及 層疊樣式表(Cascading Style Sheets, CSS)對頁面進行設計與布局,另外在數據交互時,主要是使用Ajax這種無頁面刷新的方式來進行請求參數的提交及監測數據的提取,由于原生的Ajax不方便進行操作,因此,在本文中主要使用jQuery來進行Ajax的操作。
本文對基于云通信的智能網聯汽車行駛狀態監測系統在校內道路進行了實車實驗,實驗的軟硬件環境為實驗車輛麗馳V5-T、車載電腦、控制器局域網(Controller Area Network, CAN)數據采集模塊、GPS數據采集模塊、激光雷達距離數據采集模塊、圖像數據采集模塊、車內網絡設備、車載供電設備、實驗電腦、機器人操作系統(Robot Operating System, ROS)、IDEA、云服務器及遠程安全外殼(Secure Shell, SSH)登錄工具和瀏覽器等。
GPS設備開啟后,車載電腦將接收到數據并上傳到云端存入Redis中,客戶端訪問時,進行高德地圖應用程序接口(Application Programming Interface, API)的可視化及經緯度的逆地址編碼操作,繼而得到客戶端頁面,運行過程頁面如圖5、圖6所示。

圖5 GPS數據上傳

圖6 GPS數據可視化頁面
激光雷達得到前方障礙物距離后,進行數據解析,并上傳到云端Redis中,客戶端實時讀取數據,通過隊列結構顯示前15 s的歷史距離數據和當前實時數據,運行過程頁面如圖7、圖8所示。
對前方的車道線目標進行圖像檢測后,將車道線坐標數據變換后得到世界坐標系對應的實際距離數據,車載電腦處理后發往云端存入Redis中,車輛左邊為負方向,右邊為正方向,客戶端訪問時,將通過對canvas進行對應的數據設置,得到實時的車輛位置圖,運行頁面如圖9、圖10所示。

圖7 前方距離數據上傳

圖8 前方距離頁面

圖9 左右車道線距離數據上傳

圖10 左右車道線距離實時頁面
本文采用以Java語言編寫的SpringBoot框架來完成整個云端系統,整合了WebSocket對于Java的支持來完成云端對于車載端和瀏覽器客戶端的WebSocket通信,最后采用JWT來完成對頁面的安全訪問。本文使用B/S架構設計出系統的瀏覽器客戶端監測頁面來展示監測數據,采用的是LayUI瀏覽器客戶端框架,結合jQuery的JS(JavaScript)框架使用Ajax異步刷新數據,來將云端的數據展示在瀏覽器客戶端頁面上。本文中的系統采用MySQL關系型數據庫來對數據進行持久化存儲,但是在并發高、數據量大時會導致系統擁堵,所以在瀏覽器客戶端進行數據實時監測時,采用緩存中間件Redis來提升系統的整體IO效率。最后實車試驗表明,本文中的云通信監測系統能夠正常工作。
[1] 崔志斌.面向智能網聯汽車的云數據平臺的設計與實現[D].成都:電子科技大學,2020.
[2] 徐勇.工業和信息化部發放四張5G牌照我國5G時代正式開啟[J].中國無線電,2019(6):1.
[3] 湯立波,康陳.車聯網產業融合發展趨勢[J].電信科學, 2019,35(11):96-100.
[4] 張一衡,沈剛.重點營運車輛動態數據在智慧高速中的應用[J].中國交通信息化,2015(S1):22-24.
[5] 李克強,戴一凡,李升波,等.智能網聯汽車(ICV)技術的發展現狀及趨勢[J].汽車安全與節能學報,2017,8 (1):1-14.
[6] 王一鳴.一文看懂“車聯網”的前世今生[J].物聯網技術,2018,8(6):6-8.
[7] 李宏海,劉冬梅,王晶.日本VICS系統的發展介紹[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].智能網聯汽車,2020(4):78-81.
[10] 席佩瑤,陳森林,周子偉,等.數據實時通信與可視化系統的設計與實現[J].自動化與儀表,2022,37(1):55-59.
[11] 曾玉紅.基于j Query的電子工資條前端頁面設計與開發[J].電腦知識與技術,2021,17(10):79-80.
[12] 臧金梅.基于AJAX異步處理的疫情JSON數據查詢[J].信息技術與信息化,2021(5):120-122.
[13] 秦溧,艾青.基于Redis技術的頁面緩存研究[J].科技風,2021(12):74-76.
[14] 漆瑞豐,周建中,劉懿.基于token令牌的水資源管理決策支持系統網絡安全體系研究[J].水力發電,2021, 47(11):125-130.
[15] 陳佳.一種基于JWT令牌認證的電力系統微服務認證授權方案[J].電工技術,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。