引言
目前我国实现智能化公交的城市寥寥无几,虽然杭州、长沙、武汉、佛山等城市已经出现智能公交,但也仅仅是部分线路。当前远程车辆监控系统存在数据传输速度慢、不能及时全面反馈整车运行状态信息、不能满足视频和语音等其他多媒体功能的缺点[1]。为了提高公交智能化程度,方便公交管理,本文设计了一个无线视频监控与定位结合的系统。此系统使用视频压缩技术,通过无线网络WiFi和3G网络利用RTP协议来传输实时视频流,并利用我国自主的北斗系统结合GPS导航系统来实现定位跟踪。
1 系统总体设计与说明
GPS车载定位监控系统由车载终端、客户监控中心及相关的业务管理系统组成,如图1所示。车载终端获取GPS定位信息、车辆信息等,通过GPRS移动通信网络将这些信息发送到客户监控中心,并且接收中心的业务指令。客户监控中心提供实时监控、调度处理和业务管理等功能。
图1 系统组成图
车载终端主要由摄像头、北斗&GPS模块、ARM处理器、无线网卡、3G模块构成。主要完成以下功能:
① 实时视频的采集和压缩,并建立客户端与服务器的连接,然后把实时的视频流上传至监控中心服务器。
② 利用北斗与GPS模块获取定位信息,把实时的位置、速度、经度、维度等信息发送至监控终端的服务器。
③ 通过WiFi和3G来实现与互联网的连接,登陆客户监控中心。
网络传输部分使用3G与WiFi,提供监控中心与车载终端的数据交互链路,使车载终端与服务器建立连接。
客户监控中心主要是建立起一个服务器,接收终端传来的实时视频数据和定位信息,并解压显示实时视频和定位信息。
对比目前的车载视频监控终端,本系统有两大特点:
① 视频传输可以使用WiFi和3G两种模式,目前我国已有很多大城市实现了WiFi覆盖,如果整条线路都有WiFi覆盖,则使用WiFi来传输。相比3G传输视频,WiFi的延时小得多,能够更好地实现实时监控。
② 实时接收 BD2和GPS导航卫星信号,可以使用我国自主研制的北斗定位,摆脱对GPS的过分依赖。
2 车载终端与网络传输的设计
2.1 硬件设计
硬件的连接接口如图2所示,模拟摄像头采集视频,经A/D转换数字化之后送入Hi3515进行视频的压缩。北斗与GPS模块经串口把定位信息传递给处理器,然后通过USB口把压缩之后的视频数据和定位信息经WiFi网络和3G网络传输到Internet。
图2 硬件接口图
2.1.1 主控制器
目前嵌入式处理器种类繁多,系统的主要功能是进行视频的压缩传输,因此视频采集压缩的处理速度和对网络的支持是主要参数。本文采用的Hi3515是ARM9处理器内核带有视频硬件加速引擎,提供H.264和MJPEG多协议编解码和双码流编码能力,相比通用的S3C2440和S3C6410来说,Hi3515使用硬件视频压缩,比软件压缩快5~10 s,几乎没有延时。
系统使用Linux操作系统,Linux操作系统的内核结构在网络方面是非常完整的,提供了十兆位、百兆位及千兆位的以太网,还有无线网络、令牌环等的支持[]。
2.1.2 WiFi模块
对于WiFi网络的支持本文使用驱动芯片为RT3070的无线网卡,由于Linux系统本身已经支持类似的网卡,所以只需在Linux系统内核中稍加配置即可实现系统对此网卡的支持。此网卡是USB接口,在Linux操作系统中只需操作USB即可对网卡进行相应的操作。
2.1.3 北斗&GPS模块
系统的定位使用的是北斗&GPS模块定位相结合的方法,自动根据定位的精度来决定使用北斗还是GPS来定位。北京联星的CC50BG卫星导航模块是我国自主知识产权的定位模块,具有小体积、多系统、高灵敏度、低功耗、易集成的特点,可以实现机动载体的实时高精度三维定位、三维测速、精确授时。同时,支持 BD2 B1和GPS L1两个频点,标准 NMEA0183数据输出,数据刷新率为1 Hz。使用串口与Hi3515进行数据交互[4]。模块电路图如图3所示。
图3 北斗&GPS模块电路设计
2.1.4 3G模块
对于3G网络的支持本文使用华为的EM770W模块,华为官网有此模块的驱动移植说明,因此Linux驱动移植相对简单并且稳定。本系统使用USB接口与3G模块相连接,保证了数据传输速率并且方便数据读写。该模块支持中国联通的WCDMA,目前中国联通的3G网络相对较完善,能够最大程度地保障数据传输的实时稳定。
2.2 软件设计
车载终端的软件部分主要是获取实时视频流并压缩打包、WiFi网卡和3G驱动的编译、移植。
2.2.1 获取实时视频并压缩打包传输
使用海思公司提供捕获实时视频流与硬件压缩的API来完成视频压缩和打包,流程图如图4所示。
图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所示。
图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所示。
图9 服务器端算法流程
2.2.2 北斗&GPS模块信号的获取与发送
使用北斗&GPS模块,标准NMEA0183数据输出,数据刷新率为1 Hz,使用串口就可以读取串口数据。为减小车载终端的压力,从串口读取数据之后并不处理数据,而是把获取的原始数据经TCP发送到监控中心。流程图如图10所示。
图10 北斗&GPS信号的获取与发送流程图
2.2.3 WiFi无线网卡驱动的编译与移植
使用无线网卡驱动RT3070,驱动分为STA驱动和SoftAP驱动两种。STA驱动支持无线网卡工作在STA模式下,而SoftAP的驱动支持无线网卡工作在软AP的模式下,可以作为一个软的接入点。本文使用STA模式。无线网卡驱动的编译移植略——编者注。
2.2.4 3G网卡驱动移植
使用的3G模块式EM770W,这个3G模块驱动全面,可移植性好。主要工作是配置3G模块驱动和ppp网络协议栈。具体移植过程略——编者注。
3 监控中心软件设计
监控中心主要是建立起服务器,通过网络来获取车载终端上传的实时数据。获取定位信息和解压显示实时视频。
3.1 实时视频解压显示
由于使用的是标准的H.264压缩,因此可以借助于开源的软件来进行视频的解压。这方面开源的软件很多,比如LIVE555、VLC等。本文使用的是VLC,通过编写一个w.sdp配置文件,VLC就能播放实时的H.264视频流,配置文件的模式如下:
m=video 8888 RTP/AVP 96//表示使用的网络协议和端口号
a=rtpmap:96 H264//表示视频流格式
a=framerate:15//表示帧率
c=IN IP4 192.168.1.200//表示目标地址IP
通过上面的配置文件就能够获得使用RTSP协议传输的帧率为15fps的H.264视频流,端口号为8888,视频传输的目的IP是192.168.1.200。只需简单地修改配置文件即可应用到自己的应用中。
3.2 北斗&GPS模块信号的获取
由于北斗&GPS模块信号是由车载终端建立的TCP客户端打包发送的,因此监控中心还需要建立一个TCP服务器来获取数据。这里获取的是原始的数据,可以根据NMEA0183协议来解析收到的数据从而获得车辆的位置、速度等信息。本系统设计了一个测试软件来模拟监控中心的服务器端,界面如图11所示。
图11 模拟监控中心软件
结语
本文设计了一种车载嵌入式视频监控定位系统,本系统利用视频压缩、WiFi、3G、北斗&GPS模块定位等技术,实现一个智能公交的监控系统模型,该系统可以实时地监控公交的运行。实验证明该系统具有数据延时小、定位准确、运行稳定易维护等特点。