李 勇 张以帅 唐广耀 赖惠鸽
(宁夏大学机械工程学院,宁夏 银川 750021)
基于移动监控机器人的视频监控系统设计
李 勇 张以帅 唐广耀 赖惠鸽
(宁夏大学机械工程学院,宁夏 银川 750021)
在分析了典型移动监控机器人视频监控系统结构和功能的基础上,采用嵌入式Linux+ARM的结构,提出了基于B/S架构的智能家居视频监控系统设计方法,实现了对移动监控机器人的远程视频监控。分析了影响视频流畅度的因素,提出了基于MJPEG的压缩技术设计方法。试验表明,系统设计紧凑、视频流畅,符合移动监控机器人视频监控系统前端一体化和监控网络化的发展要求。
智能家居 移动监控机器人(MSR) 视频 远程监控 嵌入式 Linux 服务器 NFS
随着嵌入式技术的不断发展,对移动监控机器人的性能提出了更高的要求。尤其是对于移动监控机器人的视频监控系统而言,需要提升视频图像的流畅、清晰度,避免图像失真。因此,设计了一种视频数字化、前端一体化、监控网络化的视频采集系统,符合目前视频采集系统发展的趋势[1]。
嵌入式Linux操作系统主要由启动引导程序、嵌入式内核、根文件系统三部分组成[2]。本文通过移植符合S3C2440微处理器架构的嵌入式Linux系统,并在此基础上开发出基于USB摄像头的视频采集应用程序,再移植嵌入式平台的Web服务器,实现了监控网络化的视频采集要求;同时,在Web服务器端采用MJPEG编解码技术,改善了视频的流畅度。
系统整体结构如图1所示。系统以S3C2440微处理器为核心,移植符合要求的嵌入式Linux操作系统;根据S3C244O的架构和外围设备的特性定制相应的内核,添加相关的协议和驱动(比如TCP/IP协议、USB驱动等),移植基于内存的可读可写的文件系统ramdisk;在视频采集部分,通过配置USB驱动和网卡芯片DM9000的相应参数、移植Web服务器Boa,实现了监控网络化;终端设备可通过浏览器访问该服务器,实现远程监控。
图1 系统整体结构图
嵌入式系统主要由嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件构成[3]。本文选用mini2440开发板作为嵌入式硬件设备,移植符合mini2440开发板的Linux嵌入式操作系统;同时,搭建交叉开发环境,进行视频采集应用程序的开发。
2.1 Linux操作系统的移植
Linux是一款开源的类Unix操作系统,其具有良好的可移植性、广泛的硬件可支持性、源代码开放性等优点[4],在嵌入式领域赢得青睐。嵌入式Linux的移植主要包括Bootload移植、内核移植、根文件系统制作这三方面的工作。
2.1.1 Bootload的移植
Bootload作为系统启动引导程序,主要分为两个阶段。第一个阶段主要包括异常向量表的设置、CPU的时钟频率设置、将第二阶段的代码拷贝到RAM、设置堆栈、初始化数据段等;第二阶段包括初始化nandflash、Flash、内存,同时将内核和根文件系统映射到内存等[5]。所以Bootload的移植主要是根据处理器的架构,设置以上两个阶段的各项工作。
2.1.2 内核的移植
内核是提供硬件抽象层、磁盘文件系统控制、多任务功能的系统级软件[6]。完整的Linux内核实现了很多重要的微内核体系,在不同的层次上被划分为不同的子系统,如串口属于TTY子系统、网卡属于网络子系统、触摸屏和按键都属于输入子系统,FLASH属于块设备子系统和MTD子系统。Linux内核层、硬件层、用户层的关系如图2所示。
图2 内核结构图
编译出来的内核保存在:/arch/arm/boot/uIamge。
具体内核制作过程如下。
①清除原有配置:使用make distclean命令。
②配置内核,使用make menuconfig ARCH=arm 命令,接着配置相关驱动(配置之前将相关的驱动放到对应的目录里,不然可能配置失败)。
③编译内核,使用make uImage ARCH=arm CROSS_COMPILE=arm-linux- 命令。
2.1.3 NFS文件系统的制作
Linux系统的基本思想之一就是一切都是文件[7],所有跟硬件相关的内容都以文件的形式保存在根文件系统的相应目录下,所以制作一款符合开发要求的文件系统尤为重要。常用的文件系统类型包括:基于NandFlash的文件系统(如yaffs2、UbiFS等)、基于内存的文件系统(如ramdisk、initramfs等)、基于网络的文件系统(如NFS)。通常在开发阶段,需要频繁地向开发板烧写程序。为了加快开发速度,常采用基于网络的文件系统NFS;在产品开发完成并将要发布阶段,常常采用基于内存的文件系统ramdisk,以保证系统每次启动时都将内核加载到内存中。所以本文选用基于网络的文件系统NFS,制作过程如下。
①下载Bootload和内核,启动开发板,在控制台进行相关参数设置:
setenv bootargs noinitrd console = ttySAC0,115200 init =/init
root=/dev/nfs rw nfsroot=192.168.1.2:/home/ARM-5ji/lesson4/rootfs ip=192.168.1.104:192.168.1.2:192.168.1.1:255.255.255.0:eth0:off
配置完成后,启动NFS:
vim /etc/exports :添加/home/ARM-5ji/lesson4/rootfs*(rw,sync,no_root_squash) /etc/init.d/nfs restart
这样就完成了根文件系统的相关操作,在使用时将开发的应用程序放到/rootfs根文件下即可。
2.2 交叉编译环境的搭建
嵌入式开发采用的是交叉编译开发环境。交叉编译指的是在一台机器上编译出能在其他机器上运行的程序代码,这里特指在PC上编译出适合在开发板上运行的可执行程序。PC机采用X86的平台,由它编译出来的程序只适用于X86的平台。而ARM平台要运行基于ARM架构的程序,因此,必须在PC机上搭建能编译ARM平台的编译器。在此选用arm-linux-gcc4.3.2版本的跨平台C语言编译器,编译出的程序适合在目标机(如ARM平台)上运行。
在开发板上搭建嵌入式服务器,可实现视频的采集和网络传输。
3.1 视频采集的实现
上文已经将USB摄像头的驱动编译进内核,所以通过USB摄像头就可以获取视频数据,然后采用有损压缩算法(motion jpeg,MJPEG)技术对数据进行数据处理。服务器端的数据采集软件主要通过Linux内核提供的V4L2接口实现[8]。V4L2是Linux内核提供的音视频驱动接口,V4L2对于不同的视频采集设备进行了封装,提出了统一的接口,方便了顶层应用程序的开发。V4L2的具体操作流程如图3所示。
图3 V4L2接口操作流程图
3.2 视频传输的实现
系统要求实现多个客户端的访问,所以每当有客户端要求访问服务器时,都要创建一个线程来实现数据交互,同时服务器要保证各线程间数据的同步。由于视频通过网络实现传输,所以采用面向连接的字节序协议TCP/IP。它是基于socket套接字网络编程实现的,具体流程如图4所示。
图4 socket通信流程图
3.3 嵌入式Web服务器的实现
常用的嵌入式web服务器主要有Boa、lighttpd、shttpd等[9]。Boa是一款轻量级的web服务器,它的可执行代码只有70 KB左右,支持通用网关技术(common gateway interface,CGI)接口,安全性能高,所以本系统选用Boa服务器。Boa的移植过程如下:
①配置、编译、安装Boa到开发板(./configure+make+arm-linux-strip Boa);
②通过Vimboa.conf实现端口、添加用户、日志、是否支持CGI接口等配置;
③将写好的html文本文件、cgi文件存放到对应的目录下面。
通过以上步骤,可以将采集的视频文件通过CGI接口传送到Boa服务器;同时,客户端提交的表单也可以通过Boa服务器传送给CGI进行处理。
MJPEG的理论依据是:图像的信号频谱线大都分布在0~6 MHz的范围内,变换后的图像通常为低频信号,高频信号占比很少或者仅在有细微纹理细节时才出现。MJPEG将运动的视频序列分解成连续的静态图片来处理,这样虽然会造成在视频数据分解成静态图片的过程中的部分数据丢失,但是由于人类视觉的迟钝,并不能感觉到那部分丢失的数据。MJPEG压缩技术正是利用人类视觉对高频信息部分不敏感的特点来进行数据压缩的。
MJPEG技术是采用离散余弦变换(discrete cosine transform,DCT)为基础的有损压缩算法[10]。它将图像由色彩空间域变换到频谱域,由于相邻两点像素包含的信息很相近,故采用图像信号频谱分析表。
DCT变换公式为:
(1)
当u=v≠0时,C(u)=1,C(v)=1。f(i,j)经过DCT变换后,将包含大量信息的低频信号保留下来。虽然变换过程本身并不产生压缩作用,但是变换后的频率系数却非常有利于码率压缩。量化是对DCT系数的一个优化过程,其将连续的视频信号离散为不连续的数字信号,并利用肉眼的高频不敏感特性对数据进行大幅压缩。进行编码之后,保存经过压缩的图像数据格式,并加上文件开始标记Start Of Image=FFD8和文件结束标记End Of Image =FFD9。
系统采用B/S架构设计(即目标板作为服务器端,其他移动终端作为客户端),可以通过浏览器访问。首先利用SecureCRT设置目标板的IP地址,将目标板的IP地址设为192.168.1.2,启动NFS文件系统并通过TFTP服务器加载内核和根文件系统。系统启动后,在浏览器输入该IP地址就可以进入该视频监控系统进行相关功能测试。该系统测试的重点是视频的流畅度和可靠性。流畅度测试是通过移动采集前端设备来查看传输到客户端的视频是否存在“卡顿”现象。试验表明:经过MJPEG技术处理过的视频完全符合预想的效果,大大改善了视频的流畅度。可靠性测试主要测试嵌入式服务器的性能,由于嵌入式服务器采用多线程技术设计,解决了多用户访问服务器时发生跌宕的问题;同时,采用线程池来提高服务器快速响应的性能。测试结果证明,该嵌入式服务器具备支持多用户访问、响应速度较快等优点,具有一定的可靠性。
为了实现系统的开机自启动,需要修改系统的启动脚本文件。通过vim编辑器打开/etc/init.d/rcS,在里面添加如下内容:
/bin/boa/&
/bin/mjpg_stream
-i“input_uvc.so”-d $DEVICE -f $fps -r $DESOLUTION -O
“output_http.so -w www” &
系统上电后,会直接启动Boa服务器,实现与客户端的视频传输。
本文在分析典型智能家居视频监控系统的结构与功能的基础上,总结出适用于本系统的基本构架。通过在ARM9处理器上移植嵌入式Linux操作系统和搭建Web服务器,实现了摄像头数据的网络传输;利用CGI来处理客户端提交的表单数据,实现了网络视频监控。为了提高视频的流畅度,在服务器端采用MJPEG技术实现视频的编解码,改善了视频“卡顿”的现象。
[1] 王宏志.基于ARM-Linux远程视频监控系统设计[J].吉林大学学报,2014(1):103-107.
[2] 张文梅. 基于 ZigBee的家居监控系统设计[J].计算机应用与软件,2015,32(3):314-316.
[3] 刘向举,刘丽娜.基于物联网的室内环境监测系统的研究[J].传感器与微系统, 2013,32(3):37-42.
[4] 王龙山,马珺.基于物联网的家居综合监测系统[J].电子技术应用,2013,39(2):78-81.
[5] 闫学勤. ZigBee+3G网络在新型井道式电梯监控系统中的应用[J].自动化仪表,2015,21(1):1-4.
[6] 王真星,石林祥.嵌入式web服务器应用的关键技术研究[J].计算机工程与应用,2009,45(28):79-82.
[7] 孙天泽.嵌入式设计与Linux驱动开发-基于ARM9处理器[M].北京:电子工业出版社,2005.
[8] 胡昊. 基于Eclipse的嵌入式集成开发环境的研究与实现[J].计算机工程与设计,2014,35(9):45-47.
[9] ZHENG D,XIAO Z Y,XIA X. Multiple measurement models of articulated arm coordinate measuring machines [J]. Chinese Journal of Mechanical Engineering,2015,28(10):35-38.
[10]马振,宋雅庆. 低成本智能家居系统设计[J]. 自动化仪表,2015,28(3):49-52.
Design of the Video Monitoring System Based on Movable Surveillance Robot
On the basis of analyzing the structure and functions of the typical video monitoring system using movable surveillance robot,by adopting structure of embedded Linux+ ARM,the design method of smart home video monitoring system is proposed based on B/S structure,which realizes the remote video monitoring for movable surveillance robot. The factors which affect the video fluency are analyzed,and the design method of compression technique based on MJPEG is proposed. Experiments show that the system design is compact,offering smooth video,and in line with the developing requirements of front-end integration and monitoring networking for movable surveillance robot video monitoring system.
Smart home Movable surveillance robot (MSR) Video Remote monitoring Embedded Linux Server NFS
李勇(1990—),男,现为宁夏大学机械工程专业在读硕士研究生;主要从事机电系统智能控制、嵌入式系统开发方向的研究。
TH7;TP36
A
10.16086/j.cnki.issn 1000-0380.201608015
修改稿收到日期:2016-01-04。