馮興樂,王建建,張 哲,陳 鵬
(長安大學信息工程學院,陜西 西安 710064)
在以車聯網為核心的智能交通系統中,車輛從路側單元下載地圖、上傳車輛周圍的路況和交通流信息,以及車輛之間通過接力方式傳送前方擁堵路段的圖像信息等應用場景,都需要在車聯網的物理層和鏈路控制層能夠支持寬帶實時的圖像傳輸功能。然而由于車聯網特殊的應用場景,通信節(jié)點(車輛)的移動速度較快,在某一路側范圍能夠用于傳輸的有效時間較短。因此,研究高速動態(tài)車輛之間的寬帶實時傳輸技術對于普及車聯網具有重要意義。
在車聯網的通信傳輸方面,主要包括車車通信與車路通信,車車通信是相鄰車輛之間在相互移動過程中的通信傳輸,主要用于車輛安全方面,如車距保持,車速自適應調整等。車路通信是車輛與路邊設施之間的通信,屬于移動節(jié)點與固定節(jié)點的通信,主要面向非安全性應用,如下載地圖,車輛誘導等[1-2]。由于車聯網還處于起步階段,目前研究集中于控制信令和窄帶數據的短距離傳輸,如802.11P 的專用短距離通信(DSRC)[3-4]。
本文以移動節(jié)點自組網為對象,以車載高清攝像頭模塊為采集模塊,利用具有高處理能力的ARM9內核的友善之臂Mini2440為硬件開發(fā)平臺,通過無線WiFi模塊將圖像信息傳給路側單元,整個開發(fā)過程采用以Linux2.6.32.2為內核的操作系統為軟件開發(fā)平臺,搭建基于嵌入式Linux的無線圖像傳輸系統模型。
本文主要針對車聯網應用場景中,車輛終端將拍攝到的圖像信息通過無線方式傳送到路側設備單元,為了實現這一目標,先期在實驗室內搭建車路通信實驗模型,結構框圖如圖1所示。具體思路是:在無線遙控小車上面架設高清攝像頭[5]、ARM開發(fā)板、自行設計的相機控制電路和光電編碼器電路,對攝像頭的攝像參數進行控制,將采集到的圖像信息通過網口傳輸到S3C2440A處理器,經圖像壓縮、編碼后經過串口發(fā)給無線網卡,最后經無線信道發(fā)送到路側設備單元,并在顯示屏上顯示車輛拍攝到的圖像。
圖1 系統硬件設計方案
下面結合設備選型說明本方案的工作原理:
1)USB高清攝像頭
在車聯網的應用場景中,主要采集車輛內部和周圍的交通信息,如駕駛員的頭像和面部圖像,以此作為判斷疲勞駕駛的依據,車輛前方的擁堵和事故圖像,并將這些圖像傳送通過車車接力或車路協同機制傳給后面的車輛,提醒后車提前擇路分流。因此,攝像頭需要具備自適應調整拍攝速率和拍攝參數,例如在光線較暗的區(qū)域需要加大光圈,在高速行駛時需要將相機設置為運動拍攝模式,并可設置鏡頭的ZOOM景深參數等。
基于上述考慮,本系統采用熱插型的數字攝像頭中星微zc301,該相機的圖像輸出格式為BMP位圖格式,最大分辨力可達到640×480,另外,在高速運動的應用場合,能夠通過提高采集速率,拍攝高動態(tài)情況下的連續(xù)圖像。
2)相機控制電路
該電路的主要功能是根據拍攝環(huán)境(光強,方位),控制攝像機的焦距、景深和光圈參數。該電路主要根據S3C2440監(jiān)測到的環(huán)境情況,經過一定的算法,通過S3C2440的I/O輸出端口輸出3組控制指令,經本電路轉換為一定時長的控制電平,分別控制攝像機的內置電機,最后調整攝像機的焦距、景深和光圈,使其處于最佳的拍攝狀態(tài)。具體電路如圖2所示,單片機發(fā)出電壓脈沖,然后通過LM324負反饋放大電路,將電壓從5 V放大到相機的驅動電壓8 V,并通過74LS06反向放大電流,從而達到控制相機線圈的目的。
圖2 相機控制電路
另外,為了獲得連續(xù)圖像的視頻信息,本系統還設計了和車輛軸承相聯動的相機控制電路。工作原理為:在小車驅動軸承上面安裝光電編碼器,型號為歐姆龍E6B2-CWZ6C,編碼器與軸承以相同的速率旋轉,按照預設的拍攝幀速率,設定編碼器每旋轉一定角度,即車輪行進一段距離,光電編碼器將輸出一個脈沖信號,并將該脈沖通過相機控制電路對相機進行一次外觸發(fā),實現一次拍攝。該功能主要用于采集路況信息,使其得到和車速無關的圖像信息。另外,還可以根據編碼器的脈沖數得到編碼器轉的圈數,從而得出行車距離,除以行車時間得到行車速度。
3)ARM開發(fā)板
在車聯網的圖像傳輸過程中,主要應用場景為面向交通安全的實時傳輸,因此對ARM系統的實時性和處理能力有較高的要求,另外,由于ARM開發(fā)板需要同時連接攝像頭和無線網卡,需要配置較多的USB接口和網口。本系統采用三星公司產生的MINI2440開發(fā)板,它是以S3C2440A為微處理器的ARM9開發(fā)板,一方面,它能滿足車載終端體積小的要求,另外,該開發(fā)板支持對Linux內核進行適當的裁剪、編譯,通過線程化中斷系統與自旋鎖改互斥鎖的手段,提高系統的實時性,用以支持車聯網圖像傳輸對實時性的要求[6]。
4)無線網卡
在面向行車安全的車聯網圖像傳輸系統中,對傳輸設備具有較高的要求。首先,由于涉及到行車安全,要求傳輸的時延在1~5 s之內;其次,傳輸圖像需要較大的帶寬,當然,可以通過基于運動圖像的硬件壓縮方法降低圖像的存儲大小;最后,無論是車車通信,還是車路通信,都屬于短距離無線傳輸,通常傳輸距離在100 m以內。
基于上述考慮,本系統采用TP-LINK WN322 G+的無線網卡,該網卡的有效帶寬能夠達到6 Mbit/s,傳輸時延為秒級,傳輸距離大于100 m,能夠滿足本系統的需要。
首先,搭建嵌入式Linux軟件平臺,在ARM上下載bootloader,移植USB攝像頭驅動、USB無線網卡驅動到內核,優(yōu)化提高內核實時性,重新編譯后下載到ARM,下載文件系統到ARM。其次,利用Linux內核提供的圖像采集接口Video For Linux Two(V4L2)對編寫的視頻采集程序進行編譯。最后,針對小車控制程序和圖像視頻采集程序進行了測試。主程序采用多線程編程,利用函數pthread_creat()創(chuàng)建圖像采集線程cap_th和無線傳輸線程server_th,把采集到的圖像緩存拷貝到網絡傳輸緩沖區(qū),并通過socket將數據發(fā)送至接收端。
圖像采集的基本流程如圖3所示,具體步驟為:
1)打開視頻設備
int fd=open(“/dev/video0”,O_RDWR|O_NONBLOCK,0);
其中,O_NONBLOCK是非阻塞模式打開視頻設備,這是因為在車聯網系統中,由于車輛的快速運動,需要實時地傳遞信息,即使尚未捕獲到信息,驅動依舊會把緩存(DQBUFF)里的內容返回給應用程序,因此采用非阻塞模式[7]。
2)設定屬性和采集方式
設定圖像的捕獲格式,即設定采集圖像的分辨力(高和寬)、數據的存儲類型等。采集格式關鍵字是V4L2_PIX_
圖3 圖像采集基本流程圖
FMT_YUYV,此外還用到一個結構體:struct v4l2_format。具體實現過程的關鍵步驟為[8-9]:
structv4l2_format fmt;
fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;//采集格式
fmt.fmt.pix.width=640;
fmt.fmt.pix.height=480;//要采集的圖像的寬度與高度,即采集圖像的大小
fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV;//圖像存儲類型,采用YUYV格式
fmt.fmt.pix.field=V4L2_FIELD_INTERLACED;
V4L2_BUF_TYPE_VIDEO_CAPTURE表示圖像采集中采用流數據類型。攝像采集初始圖像大小為640×480(像素),內存映射中,一幀圖像輸出的數據格式是YUYV,這種模式占用的內存要小于RGB彩色格式。
3)開始采集
在本系統中使用mmap內存映射的方式進行圖像采集,mmap能夠加速I/O訪問,并且能夠使得不同進程共享同一文件,提高采集效率。具體操作如下:
struct v4l2_requestbuffers req;//定義內存分配關鍵字
req.memory=V4L2_MEMORY_MMAP;//mmap關鍵字
ioctl(fd,VIDIOCGMBUF,&buf);//獲取視頻設備幀緩沖
data=mmap(NULL,buf.size,PROT_READ|PROT_WRITE,MAP_SHARE,fd,0);//映射內存
通過mmap,攝像頭采集到的圖像就映射到內存區(qū),這些映射內容可以進行讀寫,并且可以被不同的進程共享。
4)處理采集數據
由于采集圖像的文件輸出格式BMP占用內存較大,而在車聯網中,高速運行的車載端需要把BMP格式轉換成高壓縮比的JPG格式。圖像壓縮是LIBJEPG函數庫完成,關鍵步驟有:
jcs.image_width=320;
jcs.image_height=240;//壓縮后圖像分辨力為320*240
jcs.input_components=3;//3表示彩色位圖
jcs.in_color_space=JCS_RGB;//JCS_RGB表示彩色圖像
jpeg_set_default(&jcs);//初始化圖片壓縮格式
jpeg_set_quality(&jcs,80,true);//初始化圖片壓縮質量
5)關閉視頻設備
使用close()函數關閉視頻設備:close(fd)。
傳輸協議有TCP和UDP,本系統中,由于傳輸對象是圖像,不涉及視頻流的傳輸,因此采用基于TCP的可靠數據傳輸協議?;赥CP的數據傳輸流程如圖4所示,系統采用客戶端/服務器(C/S)模式。其中,車載端為客戶端,路側單元是服務器端,從客戶端向服務器端發(fā)送圖像。
圖4 TCP傳輸流程圖
關鍵性的程序設計體現在文件傳輸過程中的讀寫,具體實現中用到read()和write()函數??蛻舳送ㄟ^讀函數讀取圖像信息,然后把讀到的數據寫到服務器端文件描述符(fd)所指示的臨時緩存buffer中,然后服務器端就直接使用read()來讀取緩存區(qū)的信息,最后釋放臨時緩存。
本實驗設備和測試條件如下:1)勻速行駛的車輛為圖像采集單元。在車輛上安裝攝像頭、嵌入式系統和無線網卡;2)路側的固定筆記本計算機為接收設備。計算機通過無線網卡接收來自車輛采集的圖像信息;3)攝像頭采集的圖像分辨力為640×480,每秒采集15次,每次1幀,保存1次;4)測試環(huán)境為空曠的道路,周圍沒有遮擋,不存在多徑傳輸效應。
測試內容為測試車速、圖像大小、通信距離等對傳輸時延、掉包率、誤碼率的影響。
實驗一:通信距離和通信速率的測定。
在收發(fā)兩端均為靜止狀態(tài),發(fā)送1 Mbit/s的圖像,在不采用定向天線的情況下,能夠實現可靠傳輸的有效距離大致為120~150 m,考慮到車聯網通信系統中,路側的無線信標通常的設置間隔為200 m,也就是說,無線信標的覆蓋半徑為100 m,同時考慮到在有遮擋的使用場合和存在多普勒效應的移動場合,為了穩(wěn)妥起見,后面的實驗距離均設置為100 m。
在靜止狀態(tài)下,無線網卡的傳輸帶寬可達到6 Mbit/s,接收端能夠完全接收車載端采集到的圖像,傳輸時延很小,圖像無失真現象,掉包率與誤碼率可忽略不計。
實驗二:車速對傳輸時延和掉包率的影響,結果見表1。
表1 車速和圖像大小對傳輸時延和掉包率的影響
表1的數據表明:
1)在車速固定的情況下,隨著圖像文件大小的增加,傳輸時延逐漸增大,在低速情況下,單位時間內的傳輸速率基本恒定,但在高速情況下,隨著圖像文件大小的逐漸增加,傳輸速率呈降低的趨勢。這是因為,圖像文件大小的增加,相應的傳輸時間增加,車輛和無線信標之間的距離加大,傳輸出現錯誤并重傳的概率增加,掉包率升高,因此導致平均傳輸速率降低。鑒于這種情況,在傳輸質量要求較高的場合,應該將一個文件分割為多個小文件,由多個信標接力傳輸。
2)在圖像文件大小固定的情況下,隨著車速的逐漸增加,傳輸時延和掉包率逐漸增大。這是因為,車速越高,有效傳輸時間越短,且車輛和無線信標之間的距離加大,多普勒效應越明顯,傳輸出現錯誤并重傳的概率增加,掉包率升高,因此導致平均傳輸速率降低,甚至不能完成預定的傳輸任務。因此,在車速較高的場合,更應該將一個文件分割為多個小文件,由多個信標接力傳輸。
3)通過實驗可知,通常圖像大小與傳輸時延是一對矛盾,圖像越大,占用的帶寬也就越寬,在傳輸過程中的傳輸時延也就越長。因此需要根據不同的應用場景,選擇不同的優(yōu)先策略。例如在面向安全的應用場景,傳輸實時性的要求放在第一位,而對圖像傳輸質量的要求可以適當放寬,在此條件下,可以考慮將圖像的輸出格式由BMP轉換為JPG格式,盡管JPG格式的圖像會有一些失真,但會大幅壓縮圖像大小,進而提高傳輸的實時性。
本文基于ARM9微處理器和Linux2.6.32內核的嵌入式開發(fā)板和無線網卡,實現了無線圖像的采集與傳輸。本文的新穎之處在于把嵌入式產品應用于車聯網系統中,并通過實驗分析傳輸質量與傳輸時延這一對矛盾。后續(xù)的車聯網中的實時視頻傳輸工作有待進一步深入。
[1]MARKUS M,THOMAS M.The internet of vehicles or the second generation of telematic services[EB/OL].[2012-04-20].http://ercim-news.ercim.eu/en77/special/the-internet-of-vehicles-or-the-second-generation-of-telematic-services.
[2]須超,王新紅,劉富強.車聯網網絡架構與煤質接入機制研究[J].中興通信技術,2011,17(3):16-20.
[3]呂子茹.基于WAVE的車載通信系統介紹[J].現代電信科技,2010,8(8):50-54.
[4]RASHID A S,AMRAN B H N,AZRIN B A,et al.Evaluation of the IEEE 802.11p-based TDMA MAC method for road side-to-vehicle communications[J].International Journal of Network and Mobile Technologies,2010,1(2):81-87.
[5]李鋒,秦嘉凱.基于嵌入式Linux的實時網絡視頻監(jiān)控系統[J].電視技術,2011,35(23):145-148.
[6]梁中華,吳曉云,馮興樂.基于Linux內核修改的車載監(jiān)控系統實時性研究[J].現代電子技術,2010,33(15):173-176.
[7]李先茂,王蓉,孫晟,等.基于Linux遠程圖像采集控制系統的設計[J].微計算機信息,2010,26(35):99-101.
[8]SCHIMEK M H,DIRKS B,VERKUIL H,et al.Video for Linux two API specification[EB/OL].[2012-04-20].http://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html.
[9]卜銳.基于DM355的微型飛行器飛行控制和視頻處理系統研制[D].南京:南京航空航天大學,2010.