王忠勇,趙毅棟,李雅瓊
(鄭州大學信息工程學院,鄭州450001)
目前我國實現智能化公交的城市寥寥無幾,雖然杭州、長沙、武漢、佛山等城市已經出現智能公交,但也僅僅是部分線路。當前遠程車輛監控系統存在數據傳輸速度慢、不能及時全面反饋整車運行狀態信息、不能滿足視頻和語音等其他多媒體功能的缺點[1]。為了提高公交智能化程度,方便公交管理,本文設計了一個無線視頻監控與定位結合的系統。此系統使用視頻壓縮技術,通過無線網絡WiFi和3G網絡利用RTP協議來傳輸實時視頻流,并利用我國自主的北斗系統結合GPS導航系統來實現定位跟蹤。
GPS車載定位監控系統由車載終端、客戶監控中心及相關的業務管理系統組成,如圖1所示。車載終端獲取GPS定位信息、車輛信息等,通過GPRS移動通信網絡將這些信息發送到客戶監控中心,并且接收中心的業務指令。客戶監控中心提供實時監控、調度處理和業務管理等功能。
車載終端主要由攝像頭、北斗&GPS模塊、ARM處理器、無線網卡、3G模塊構成。主要完成以下功能:

圖1 系統組成圖
①實時視頻的采集和壓縮,并建立客戶端與服務器的連接,然后把實時的視頻流上傳至監控中心服務器。
②利用北斗與GPS模塊獲取定位信息,把實時的位置、速度、經度、維度等信息發送至監控終端的服務器。
③通過WiFi和3G來實現與互聯網的連接,登陸客戶監控中心。
網絡傳輸部分使用3G與WiFi,提供監控中心與車載終端的數據交互鏈路,使車載終端與服務器建立連接。
客戶監控中心主要是建立起一個服務器,接收終端傳來的實時視頻數據和定位信息,并解壓顯示實時視頻和定位信息。
對比目前的車載視頻監控終端,本系統有兩大特點:
①視頻傳輸可以使用WiFi和3G兩種模式,目前我國已有很多大城市實現了WiFi覆蓋,如果整條線路都有WiFi覆蓋,則使用WiFi來傳輸。相比3G傳輸視頻,WiFi的延時小得多,能夠更好地實現實時監控。
②實時接收BD2和GPS導航衛星信號,可以使用我國自主研制的北斗定位,擺脫對GPS的過分依賴。
硬件的連接接口如圖2所示,模擬攝像頭采集視頻,經A/D轉換數字化之后送入Hi3515進行視頻的壓縮。北斗與GPS模塊經串口把定位信息傳遞給處理器,然后通過USB口把壓縮之后的視頻數據和定位信息經WiFi網絡和3G網絡傳輸到Internet。

圖2 硬件接口圖
2.1.1 主控制器
目前嵌入式處理器種類繁多,系統的主要功能是進行視頻的壓縮傳輸,因此視頻采集壓縮的處理速度和對網絡的支持是主要參數。本文采用的Hi3515是ARM9處理器內核帶有視頻硬件加速引擎,提供H.264和MJPEG多協議編解碼和雙碼流編碼能力,相比通用的S3C2440和S3C6410來說,Hi3515使用硬件視頻壓縮,比軟件壓縮快5~10s,幾乎沒有延時。
系統使用Linux操作系統,Linux操作系統的內核結構在網絡方面是非常完整的,提供了十兆位、百兆位及千兆位的以太網,還有無線網絡、令牌環等的支持[]。
2.1.2 WiFi模塊
對于WiFi網絡的支持本文使用驅動芯片為RT3070的無線網卡,由于Linux系統本身已經支持類似的網卡,所以只需在Linux系統內核中稍加配置即可實現系統對此網卡的支持。此網卡是USB接口,在Linux操作系統中只需操作USB即可對網卡進行相應的操作。
2.1.3 北斗&GPS模塊
系統的定位使用的是北斗&GPS模塊定位相結合的方法,自動根據定位的精度來決定使用北斗還是GPS來定位。北京聯星的CC50-BG衛星導航模塊是我國自主知識產權的定位模塊,具有小體積、多系統、高靈敏度、低功耗、易集成的特點,可以實現機動載體的實時高精度三維定位、三維測速、精確授時。同時,支持BD2B1和GPS L1兩個頻點,標準NMEA0183數據輸出,數據刷新率為1Hz。使用串口與Hi3515進行數據交互[4]。模塊電路圖如圖3所示。

圖3 北斗&GPS模塊電路設計
2.1.4 3G模塊
對于3G網絡的支持本文使用華為的EM770W模塊,華為官網有此模塊的驅動移植說明,因此Linux驅動移植相對簡單并且穩定。本系統使用USB接口與3G模塊相連接,保證了數據傳輸速率并且方便數據讀寫。該模塊支持中國聯通的WCDMA,目前中國聯通的3G網絡相對較完善,能夠最大程度地保障數據傳輸的實時穩定。
車載終端的軟件部分主要是獲取實時視頻流并壓縮打包、WiFi網卡和3G驅動的編譯、移植。
2.2.1 獲取實時視頻并壓縮打包傳輸
使用海思公司提供捕獲實時視頻流與硬件壓縮的API來完成視頻壓縮和打包,流程圖如圖4所示。
這一部分中重點是碼流的打包發送。首先必須熟悉H.264碼流格式與RTP協議。
(1)H.264基本流
H.264的基本流由一系列NALU(Network Abstraction Layer Unit)組成[5],不同的NALU數據量各不相同。H.264規范提到當數據流是儲存在介質上時,在每個NALU前添加起始碼0x000001,用來指示一個NALU的起始和終止位置。在這樣的機制下,*在碼流中檢測起始碼,作為一個NALU的起始標識,當檢測到下一個起始碼時,當前NALU結束。每個NALU單元由一個字節的NALU頭(NALU Header)和若干個字節的載荷數據(RBSP)組成,如圖5所示。

圖4 視頻壓縮傳輸流程圖

圖5 NALU單元序列
NALU頭格式如圖6所示。

圖6 NALU單元頭格式
(2)RTP協議
每一個RTP數據包都由固定包頭(Header)和載荷(Payload)兩個部分組成,其中包頭前12個字節的含義是固定的,而載荷則可以是音頻或視頻數據。RTP固定包頭如圖7所示。

圖7 RTP固定包頭
從RTP數據包的格式不難看出,它包含了傳輸媒體的類型、格式、序列號、時間戳以及是否有附加數據等信息。這些都為實時的流媒體傳輸提供了相應的基礎。而傳輸控制協議RTCP為RTP傳輸提供了擁塞控制和流控制,它的具體包結構和各字段的含義可參考RFC3550[6],此處不再贅述。
前面分別討論了RTP協議及H.264基本流的結構,那么如何使用RTP協議來傳輸H.264視頻。一個有效的辦法就是從H.264視頻中剝離出每個NALU,在每個NALU前添加相應的RTP包頭,然后將包含RTP包頭和NALU的數據包發送出去。
(3)H.264流媒體傳輸系統的實現
一個完整的流媒體傳輸系統包含服務器端和客戶端兩個部分。對于服務器端,其主要任務是讀取H.264視頻,從碼流中分離出每個NALU單元,分析NALU的類型,設置相應的RTP包頭,封裝RTP數據包并發送。而對于客戶端來說,其主要任務則是接收RTP數據包,從RTP包中解析出NALU單元,然后進行解碼播放。該流媒體傳輸系統的框架如圖8所示。

圖8 H264流媒體傳輸系統框圖
其中服務器端是在車載終端運行的,客戶端是在監控中心通過開源軟件實現的。服務器的算法流程如圖9所示。
2.2.2 北斗&GPS模塊信號的獲取與發送
使用北斗&GPS模塊,標準NMEA0183數據輸出,數據刷新率為1Hz,使用串口就可以讀取串口數據。為減小車載終端的壓力,從串口讀取數據之后并不處理數據,而是把獲取的原始數據經TCP發送到監控中心。流程圖如圖10所示。
2.2.3 WiFi無線網卡驅動的編譯與移植
使用無線網卡驅動RT3070,驅動分為STA驅動和Soft-AP驅動兩種。STA驅動支持無線網卡工作在STA模式下,而SoftAP的驅動支持無線網卡工作在軟AP的模式下,可以作為一個軟的接入點。本文使用STA模式。無線網卡驅動的編譯移植略——編者注。
2.2.4 3G網卡驅動移植
使用的3G模塊式EM770W,這個3G模塊驅動全面,可移植性好。主要工作是配置3G模塊驅動和ppp網絡協議棧。具體移植過程略——編者注。
監控中心主要是建立起服務器,通過網絡來獲取車載終端上傳的實時數據。獲取定位信息和解壓顯示實時視頻。

圖9 服務器端算法流程

圖10 北斗&GPS信號的獲取與發送流程圖
由于使用的是標準的H.264壓縮,因此可以借助于開源的軟件來進行視頻的解壓。這方面開源的軟件很多,比如LIVE555、VLC等。本文使用的是VLC,通過編寫一個w.sdp配置文件,VLC就能播放實時的H.264視頻流,配置文件的模式如下:

通過上面的配置文件就能夠獲得使用RTSP協議傳輸的幀率為15fps的H.264視頻流,端口號為8888,視頻傳輸的目的IP是192.168.1.200。只需簡單地修改配置文件即可應用到自己的應用中。
由于北斗&GPS模塊信號是由車載終端建立的TCP客戶端打包發送的,因此監控中心還需要建立一個TCP服務器來獲取數據。這里獲取的是原始的數據,可以根據NMEA0183協議來解析收到的數據從而獲得車輛的位置、速度等信息。本系統設計了一個測試軟件來模擬監控中心的服務器端,界面如圖11所示。

圖11 模擬監控中心軟件
本文設計了一種車載嵌入式視頻監控定位系統,本系統利用視頻壓縮、WiFi、3G、北斗&GPS模塊定位等技術,實現一個智能公交的監控系統模型,該系統可以實時地監控公交的運行。實驗證明該系統具有數據延時小、定位準確、運行穩定易維護等特點。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1] 齊光石.基于3G技術遠程車輛監控系統的設計與實現[D] .長春:吉林大學,2012.
[2] 田鵬飛.基于GPS&GPRS的車載監控終端硬件設計[D] .合肥:中國科學技術大學,2006.
[3] 清華遠見嵌入式培訓中心.嵌入式Linux應用程序開發[M] .北京:人民郵電出版社,2009:2-3.
[4] 北京東方聯星科技有限公司.CC50-BG V2.0Spec[OL] .[2013-06] .http://www.olinkstar.com.
[5] 國際電信聯盟.ITU-T H.264建議書[EB/OL] .[2013-06] .http://www.itu.int/en/pages/default.aspx.
[6] Network Working Group.RFC3550[EB/OL] .[2013-06] .http://www.ietf.org/rfc/rfc3550.txt.