基于嵌入式Linux的无线图像传输在车联网的应用

2012-06-07 04:15冯兴乐王建建
电视技术 2012年21期
关键词:网卡时延摄像头

冯兴乐,王建建,张 哲,陈 鹏

(长安大学信息工程学院,陕西 西安 710064)

在以车联网为核心的智能交通系统中,车辆从路侧单元下载地图、上传车辆周围的路况和交通流信息,以及车辆之间通过接力方式传送前方拥堵路段的图像信息等应用场景,都需要在车联网的物理层和链路控制层能够支持宽带实时的图像传输功能。然而由于车联网特殊的应用场景,通信节点(车辆)的移动速度较快,在某一路侧范围能够用于传输的有效时间较短。因此,研究高速动态车辆之间的宽带实时传输技术对于普及车联网具有重要意义。

在车联网的通信传输方面,主要包括车车通信与车路通信,车车通信是相邻车辆之间在相互移动过程中的通信传输,主要用于车辆安全方面,如车距保持,车速自适应调整等。车路通信是车辆与路边设施之间的通信,属于移动节点与固定节点的通信,主要面向非安全性应用,如下载地图,车辆诱导等[1-2]。由于车联网还处于起步阶段,目前研究集中于控制信令和窄带数据的短距离传输,如802.11P 的专用短距离通信(DSRC)[3-4]。

本文以移动节点自组网为对象,以车载高清摄像头模块为采集模块,利用具有高处理能力的ARM9内核的友善之臂Mini2440为硬件开发平台,通过无线WiFi模块将图像信息传给路侧单元,整个开发过程采用以Linux2.6.32.2为内核的操作系统为软件开发平台,搭建基于嵌入式Linux的无线图像传输系统模型。

1 系统硬件设计方案

本文主要针对车联网应用场景中,车辆终端将拍摄到的图像信息通过无线方式传送到路侧设备单元,为了实现这一目标,先期在实验室内搭建车路通信实验模型,结构框图如图1所示。具体思路是:在无线遥控小车上面架设高清摄像头[5]、ARM开发板、自行设计的相机控制电路和光电编码器电路,对摄像头的摄像参数进行控制,将采集到的图像信息通过网口传输到S3C2440A处理器,经图像压缩、编码后经过串口发给无线网卡,最后经无线信道发送到路侧设备单元,并在显示屏上显示车辆拍摄到的图像。

图1 系统硬件设计方案

下面结合设备选型说明本方案的工作原理:

1)USB高清摄像头

在车联网的应用场景中,主要采集车辆内部和周围的交通信息,如驾驶员的头像和面部图像,以此作为判断疲劳驾驶的依据,车辆前方的拥堵和事故图像,并将这些图像传送通过车车接力或车路协同机制传给后面的车辆,提醒后车提前择路分流。因此,摄像头需要具备自适应调整拍摄速率和拍摄参数,例如在光线较暗的区域需要加大光圈,在高速行驶时需要将相机设置为运动拍摄模式,并可设置镜头的ZOOM景深参数等。

基于上述考虑,本系统采用热插型的数字摄像头中星微zc301,该相机的图像输出格式为BMP位图格式,最大分辨力可达到640×480,另外,在高速运动的应用场合,能够通过提高采集速率,拍摄高动态情况下的连续图像。

2)相机控制电路

该电路的主要功能是根据拍摄环境(光强,方位),控制摄像机的焦距、景深和光圈参数。该电路主要根据S3C2440监测到的环境情况,经过一定的算法,通过S3C2440的I/O输出端口输出3组控制指令,经本电路转换为一定时长的控制电平,分别控制摄像机的内置电机,最后调整摄像机的焦距、景深和光圈,使其处于最佳的拍摄状态。具体电路如图2所示,单片机发出电压脉冲,然后通过LM324负反馈放大电路,将电压从5 V放大到相机的驱动电压8 V,并通过74LS06反向放大电流,从而达到控制相机线圈的目的。

图2 相机控制电路

另外,为了获得连续图像的视频信息,本系统还设计了和车辆轴承相联动的相机控制电路。工作原理为:在小车驱动轴承上面安装光电编码器,型号为欧姆龙E6B2-CWZ6C,编码器与轴承以相同的速率旋转,按照预设的拍摄帧速率,设定编码器每旋转一定角度,即车轮行进一段距离,光电编码器将输出一个脉冲信号,并将该脉冲通过相机控制电路对相机进行一次外触发,实现一次拍摄。该功能主要用于采集路况信息,使其得到和车速无关的图像信息。另外,还可以根据编码器的脉冲数得到编码器转的圈数,从而得出行车距离,除以行车时间得到行车速度。

3)ARM开发板

在车联网的图像传输过程中,主要应用场景为面向交通安全的实时传输,因此对ARM系统的实时性和处理能力有较高的要求,另外,由于ARM开发板需要同时连接摄像头和无线网卡,需要配置较多的USB接口和网口。本系统采用三星公司产生的MINI2440开发板,它是以S3C2440A为微处理器的ARM9开发板,一方面,它能满足车载终端体积小的要求,另外,该开发板支持对Linux内核进行适当的裁剪、编译,通过线程化中断系统与自旋锁改互斥锁的手段,提高系统的实时性,用以支持车联网图像传输对实时性的要求[6]。

4)无线网卡

在面向行车安全的车联网图像传输系统中,对传输设备具有较高的要求。首先,由于涉及到行车安全,要求传输的时延在1~5 s之内;其次,传输图像需要较大的带宽,当然,可以通过基于运动图像的硬件压缩方法降低图像的存储大小;最后,无论是车车通信,还是车路通信,都属于短距离无线传输,通常传输距离在100 m以内。

基于上述考虑,本系统采用TP-LINK WN322 G+的无线网卡,该网卡的有效带宽能够达到6 Mbit/s,传输时延为秒级,传输距离大于100 m,能够满足本系统的需要。

2 软件设计

首先,搭建嵌入式Linux软件平台,在ARM上下载bootloader,移植USB摄像头驱动、USB无线网卡驱动到内核,优化提高内核实时性,重新编译后下载到ARM,下载文件系统到ARM。其次,利用Linux内核提供的图像采集接口Video For Linux Two(V4L2)对编写的视频采集程序进行编译。最后,针对小车控制程序和图像视频采集程序进行了测试。主程序采用多线程编程,利用函数pthread_creat()创建图像采集线程cap_th和无线传输线程server_th,把采集到的图像缓存拷贝到网络传输缓冲区,并通过socket将数据发送至接收端。

2.1 图像采集

图像采集的基本流程如图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,摄像头采集到的图像就映射到内存区,这些映射内容可以进行读写,并且可以被不同的进程共享。

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)。

2.2 无线传输

传输协议有TCP和UDP,本系统中,由于传输对象是图像,不涉及视频流的传输,因此采用基于TCP的可靠数据传输协议。基于TCP的数据传输流程如图4所示,系统采用客户端/服务器(C/S)模式。其中,车载端为客户端,路侧单元是服务器端,从客户端向服务器端发送图像。

图4 TCP传输流程图

关键性的程序设计体现在文件传输过程中的读写,具体实现中用到read()和write()函数。客户端通过读函数读取图像信息,然后把读到的数据写到服务器端文件描述符(fd)所指示的临时缓存buffer中,然后服务器端就直接使用read()来读取缓存区的信息,最后释放临时缓存。

3 实验结果与分析

本实验设备和测试条件如下:1)匀速行驶的车辆为图像采集单元。在车辆上安装摄像头、嵌入式系统和无线网卡;2)路侧的固定笔记本计算机为接收设备。计算机通过无线网卡接收来自车辆采集的图像信息;3)摄像头采集的图像分辨力为640×480,每秒采集15次,每次1帧,保存1次;4)测试环境为空旷的道路,周围没有遮挡,不存在多径传输效应。

测试内容为测试车速、图像大小、通信距离等对传输时延、掉包率、误码率的影响。

实验一:通信距离和通信速率的测定。

在收发两端均为静止状态,发送1 Mbit/s的图像,在不采用定向天线的情况下,能够实现可靠传输的有效距离大致为120~150 m,考虑到车联网通信系统中,路侧的无线信标通常的设置间隔为200 m,也就是说,无线信标的覆盖半径为100 m,同时考虑到在有遮挡的使用场合和存在多普勒效应的移动场合,为了稳妥起见,后面的实验距离均设置为100 m。

在静止状态下,无线网卡的传输带宽可达到6 Mbit/s,接收端能够完全接收车载端采集到的图像,传输时延很小,图像无失真现象,掉包率与误码率可忽略不计。

实验二:车速对传输时延和掉包率的影响,结果见表1。

表1 车速和图像大小对传输时延和掉包率的影响

表1的数据表明:

1)在车速固定的情况下,随着图像文件大小的增加,传输时延逐渐增大,在低速情况下,单位时间内的传输速率基本恒定,但在高速情况下,随着图像文件大小的逐渐增加,传输速率呈降低的趋势。这是因为,图像文件大小的增加,相应的传输时间增加,车辆和无线信标之间的距离加大,传输出现错误并重传的概率增加,掉包率升高,因此导致平均传输速率降低。鉴于这种情况,在传输质量要求较高的场合,应该将一个文件分割为多个小文件,由多个信标接力传输。

2)在图像文件大小固定的情况下,随着车速的逐渐增加,传输时延和掉包率逐渐增大。这是因为,车速越高,有效传输时间越短,且车辆和无线信标之间的距离加大,多普勒效应越明显,传输出现错误并重传的概率增加,掉包率升高,因此导致平均传输速率降低,甚至不能完成预定的传输任务。因此,在车速较高的场合,更应该将一个文件分割为多个小文件,由多个信标接力传输。

3)通过实验可知,通常图像大小与传输时延是一对矛盾,图像越大,占用的带宽也就越宽,在传输过程中的传输时延也就越长。因此需要根据不同的应用场景,选择不同的优先策略。例如在面向安全的应用场景,传输实时性的要求放在第一位,而对图像传输质量的要求可以适当放宽,在此条件下,可以考虑将图像的输出格式由BMP转换为JPG格式,尽管JPG格式的图像会有一些失真,但会大幅压缩图像大小,进而提高传输的实时性。

4 小结

本文基于ARM9微处理器和Linux2.6.32内核的嵌入式开发板和无线网卡,实现了无线图像的采集与传输。本文的新颖之处在于把嵌入式产品应用于车联网系统中,并通过实验分析传输质量与传输时延这一对矛盾。后续的车联网中的实时视频传输工作有待进一步深入。

[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的实时网络视频监控系统[J].电视技术,2011,35(23):145-148.

[6]梁中华,吴晓云,冯兴乐.基于Linux内核修改的车载监控系统实时性研究[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.

猜你喜欢
网卡时延摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
基于GCC-nearest时延估计的室内声源定位
Server 2016网卡组合模式
基于改进二次相关算法的TDOA时延估计
FRFT在水声信道时延频移联合估计中的应用
基于分段CEEMD降噪的时延估计研究
挑战Killer网卡Realtek网游专用Dragon网卡
奔驰360°摄像头系统介绍
RHEL7 Network Teaming(网卡绑定)配置与测试