林勇 陈飞
关键词:机器人;视频;监控;系统
早期的监控系统以闭路电视为主,即模拟闭路电视监控系统[1]。这类系统主要应用于公安及安防领域,只适应较小的地理范围,应用灵活性较差,不易扩展功能,而且工程施工难度也较大,视频、音频及控制信号都需要线路铺设,工程量大。经过几年的发展,随后出现数字化监控系统,把音视频信号的采集与存储定为数字形式存储文件,质量高,与系统之间交换数据方便可靠,但该系统同样存在一些弊端,要实现远距离音视频传输,两端设备成本高,线路铺设工序不可少,不易维护。近年来,随着互联网通信技术、数字图像处理技术的发展,基于互联网的视频监控系统出现便迅速普及,系统不再铺设专用数据传输通道,音频及视频文件传输稳定性、可靠性大大提高。视频监控应用领域已经从单一的安防方向扩大到交通、教育、家庭、物业及金融等领域,人们安全生活得到保障。在信息化、数字化、智能化的当今社会,视频监控技术、物联网等新技术之间开发创新必不可少,这一变化正一步步走近人们生活,可见人们生活方式和工作方式正在改变[2]。
1 监控现状分析
1.1 监控现状
无论是物业监控,还是交通监控,视频监控大多采用有线方式。一般将摄像头采集到的图像通过网线传送到监视器,工作人员坐在终端监视器前查看监视的结果。监控人员被束缚在监视前,视觉疲劳,另外摄像头采集图像的范围区域也受到限制,只能监控到特定的范围,监控区域受限,存在盲区。这些情况监控人员需要到现场巡查,不能时刻现场蹲守,监控区域的安全得不到保障。
1.2 存在问题与对策
前期的移动机器人运动控制都是通过遥控器来完成,应用距离受到局限,随着移动通信技术飞速发展,通信设备的功能也日益强大,Android手机不仅仅用来通话,越来越多地运用来管理个人日常事务上。如果摄像头安装在活动机器人或小车上,再通过手机连接网络控制机器人,机器人载有摄像头监控物质所处环境,这样可以避免监控盲区达到完美监控效果。基于Android的移动机器人监控系统不仅克服了传统监控终端不能带在身边的缺点,还能让视频监控与运动机器人技术相结合,在运动过程中实现视频监控与数据传输。根据监控环境,个人调整的机器人运动状态,克服固定终端视频监控覆盖范围小,不具备移动性存在盲区等缺点。这样的功能将给人们的生活、工作带来更多便利。
2 系统结构设计
2.1 系统硬件模块设计
移动机器人监控系统的外形选用小车结构,由几部分硬件组成,分别是Wi-Fi模块、STM32微控制器模块、摄像头、电机及履带等控制器件组成。客户端选用Android智能手机。其系统框图如图1。
Android 客户端一般选用华为系列智能手机即可,比如P系列。Wi-Fi模块采用TP-LINK类小型无线路由器如WR703N,为智能手机和移动机器人提供通信的Wi-Fi通道,该无线路由器移植OpenWrt开源系统,并安装Mjpg-streamer和Ser2net软件。对于移植在Wi-Fi内的mjpg_streamer软件目的是把从摄像头采集的图像,以数据流的形式,通过网络IP地址传输到客户端浏览器,这样摄像头数据通过Wi-Fi以流的形式传给手机客户端。Ser2net软件是一个通用的Socket转串口的软件,能够实现TCP/IP格式的数据与串口数据互相之间转换,方便与STM32模块之间通信。USB摄像头为数字摄像头。STM32F105芯片是微控制器,是移动机器人的核心处理器,相当于电脑的CPU,配备2200mAh 8A12V电池组提供电源。移动机器人车轮用履带结构防止运行中翻车,保持稳定性。STM32F105中心处理器是32位微处理器,由意大利意法半导体公司研发,芯片设计ARM Cortex-M3 内核,工作频率最高可達72MHZ,芯片内集成有定时器、DMA控制器,外围有USB接口、UART、CAN等多种功能接口,成本低,运行功耗也较低,功能齐全的外设与接口,具有良好性能,在智能控制领域应用较为广泛。应用Keil集成开发环境,Keil为STM32芯片提供了多种函数库,方便选择调用现有函数对芯片集成器、接口进行配置,方便高效[2]。
2.2 系统开发软件
系统软件开发环境包括Android操作系统开发环境和移动机器人驱动开发调试环境Keil[3]。
2.2.1 Android 操作系统开发环境
Android操作系统是由谷歌公司和开放手机联盟共同开发,主要应用于移动设备,比如智能手机、平板等操作系统[4]。谷歌公司在Android系统上内置了很多现有的应用、通信功能及互联网浏览器等。高效的Android系统是完全开源,方便研发者调用。综合考虑系统采用Android Studio作为系统终端开发模拟环境。安装过程分为两个步骤:1) 安装JDK;2) 安装an?droind Studio。
2.2.2 移动机器人控制开发环境
系统中移动机器人控制运用STM32处理芯片,这款芯片应用Keil uVision 开发软件下载仿真开发。Keil软件开发平台由德国Keil公司开发,软件包括C 编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等,功能强大。它将上述功能集成在一起,构成方便易用的模拟开发环境和强大的软件仿真调试工具,研究开发人员应用广泛。
安装Keil 开发软件后,打开软件点击:Projiet->New uVision Project……新建一个项目界面,指定路径,便于管理,这样不同功能程序放到不同名称文件夹下,项目工程文件命名。从器件库中选择所有的芯片型号,比如STM32F105芯片,进行相关配置。在工程项目下我们可以新建代码文件,写源程序,然后编译、连接调试、运行、保存和下载。仿真器将目标文件下载到STM32芯片处理器,进行仿真调试等工作,例如J-Link仿真器支持Keil集成开发环境,支持STM32 处理器中的ARM Cortex-M3内核[5],程序下载快,效率高,通过USB接口供电,即插即用,非常方便。
3 系统功能设计
基于Android操作系统的小型移动机器人,以An?droid 客户端为载体,通过Wifi 局域网连接控制端STM32F105芯片,控制移动机器人运动状态,同时将运动过程中拍摄的图像数据实时通过Wifi传送给An?droid客户端。
3.1 移动机器人运动状态控制设计
客户端怎样发送或接收控制数据,根据Android 平台开发App对应按钮,应用TCP协议,通信中双工连接客户端和服务器端。客户端即手机,服务器端即Wi-Fi模块及运动机器人核心处理器。设计思想中运用java.net.*包,包中提供了Socket和serverSocket类,输入流使用getinputstream()和read()的方法读取输入流中数据。输出流利用getoutputstream()和Write()方法获得向输出流中写数据,实现了双向通信数据的交换,达到软件控制移动机器人目的,即客户端手机控制了移动机器人。
3.1.1 移动机器人运动状态控制方案
Wi-Fi模块移植了串口透传Ser2net软件,ser2net 软件是一个允许gensio接受器和gensio连接器之间连接的程序。ser2net的作用可以将Wi-Fi控制数据通过USB转TTL连接线传给STM32F105控制板,当然可以将STM32F105控制板信息通过TTL转USB传输给Wi-Fi模块串口,既保证芯片供电又进行数据传输通信。应用Android 开发平台设计客户端手机App 按钮,加套接字Socket进行编程启动数据传给Wi-Fi模块,使用Wi-Fi模块的2001端口通过串口透传给服务器端控制主板,进行移动机器人运动状态控制。
3.1.2 移动机器人运动状态控制软件实现方法
控制移动机器人运动状态可以应用通信协议中包头和包尾起校验功能,校验控制指令均设为0Xff,类型位设置为0x00,表示运动状态进行控制,命名位表示移动机器人处于不同运动状态,例如停止、前进、后退、左转和右转分别设置为0x00、0x01、0x02、0x03、0x04等。
按照通信协议向移动机器人发出控制指令,例如安卓手机客户端App可点击后退按钮,借助输出流编程outputstream发出如下控制指令,达到控制目的。
Outputstream. write(new byte[] {(byte) 0xff, (byte)0x00, (byte) 0x02 (byte) 0x00, (byte) 0xff});
Outputstream.flush();
3.2 移动机器人视频监控设计
安卓手机客户端通过HTTP协议和URL通过端口映射从Wi-Fi模块获得视频流,从而进行视频解析与显示工作。在播放视频过程中可以应用安卓客户端App对视频任意一帧抓拍,通过安卓手机客户端应用程序按钮查看通过USB数字摄像头采集经过压缩成MJPEG格式的视频数据。
3.2.1 移动机器人视频监控设计方案
安卓客户端根据移动机器人运动所处的环境,采集数据。视频监控系统有视频采集模块、视频传输模块、视频接收模块、视频解析与显示模块等。Wi-Fi模块内移植mjpg-streamer软件,mjpg-streamer是一个优秀的视频流服务器软件,它可以通过HTTP的方式访问系统上面的兼容摄像头,做到远程视频传输的效果。若想把MJPEG格式的视频流传给Wi-Fi模块,我们应用数字摄像头采集动态或静态图像,边采集边把输入的数据以流的形式,通过网络IP地址传输到客户浏览器端。Wi-Fi模块通过USB接口与摄像头相连,这样给Wi-Fi模块提供电源的同时,采集到的数据将以MJPEG 格式的视频流传给 Wi-Fi 模塊。再通过移植的mjpg-streamer 视频流服务器的输入组件inputuvc和输出组件output-http来实现视频数据传输。流媒体采用流式传输技术,发送方所要发送的视频文件并不是事先录制好存储在服务器上,而是同时录和发,而接收客户端采用同步下载同步解压,在App端播放。
3.2.2 移动机器人视频监控实现方法
Wi-Fi 模块内移植视频流服务器mjpg-streamer,mjpg-streamer输出组件output-http用HTTP协议进行视频数据传输。HTTP协议支持客户/服务器模式,简单、快速、灵活的传输方式,最主要的是无连接也能传输,即客户端接收视频主要通过HTTP协议和URL来实现。一般URL有四个部分组成:<协议>://<主机>:< 端口>/<路径>,安卓客户端从Wi-Fi模块获取视频数据,通过端口映射技术,根据Wi-Fi模块服务器的IP 地址,例如192.168.5.10,那么URL 如下所示:http://192.168.5.10:8080/?action=stream,数字8080表示Wi-Fi模块服务器上用来进行视频传输的端口,?action=stream 表示视频数据具体的名称。若将http://192.168.5.10:8080/?action=snapshot,此时安卓客户端按钮获取到的不是动态连续的视频,而是一幅幅静态的图像。
4 结束语
基于Android平台的移动开发系统,具有开发周期短、开源效率高、操作方便及友好人机界面等优点,灵活的控制性能,可以弥补传统机器人控制不灵活、便携性差等缺点,受到广大研发者的好评。本文设计基于Android平台的小型移动机器人视频监控控制系统,在客户端用Android Studio设计客户端应用程序App,结合控制板STM32F105微处理器,在路由器内植入串口透传软件Ser2net,完成移动机器人的运动方向的控制设计。在路由器内植入Mjpg-Streamer视频流服务器软件,再应用端口映射技术从而达到局域网内控制移动机器人运动和视频监控的设计目的。在此基础上后期可以进一步将控制对象的距离范围扩大,由局域网迁移到广域网,满足更为广泛应用需求。