APP下载

基于Android的环境监控系统的软件开发

2017-03-29高仁智尚丽辉

电子科技 2017年1期
关键词:服务器端移动机器人客户端

高仁智,尚丽辉,涂 煊

(1.上海理工大学 光电信息与计算机工程学院,上海 200093;2.上海工业自动化仪表研究院,上海 200093)

基于Android的环境监控系统的软件开发

高仁智1,尚丽辉1,涂 煊2

(1.上海理工大学 光电信息与计算机工程学院,上海 200093;2.上海工业自动化仪表研究院,上海 200093)

针对传统建筑环境监控中,采用固定节点的监控与可移动性能差等问题,提出了在远程监控系统中利用移动设备的通信、数据处理功能对远程环境进行监控。文中模拟利用Andriod手机同装有(机器人操作系统)的机器人进行组网通信视频数据采集和处理以及基于TCP协议在服务器端实现对图像获取和处理,实现了移动终端对装有ROS系统机器人的数据通信与控制。

环境监控;移动终端;Android;机器人操作系统

随着大型公共建筑的增多,其能耗和环境监测问题日益突出。为了监控环境与能耗参数,一般采用固定安装在建筑物内的大量传感器节点,采集环境和能耗参数。近年来,将安装有环境测量传感器的移动机器人用于环境监控,成为一种新的技术方案。由于移动机器人在自主或在遥操作模式下能够灵活地深入危险场所、探测有害气体等环境参数,甚至传送远程视音频信息,因此能有效弥补传统环境与能耗监控系统的缺点,灵活地提供所需探测点的环境参数信息,增强遥操作者的临场感效果。

本文在此背景下,提出了针对传统环境监控系统交互能力差,便携能力差及人为获取环境信息艰难等问题的解决方案,该方案使用智能终端设备,获取监控系统中机器人提供的一系列数据,同时反馈给监控端用户。此外,对方案的可实施性,本文均提供了实验分析和探究结果。

1 监控系统核心技术

1.1 嵌入式智能终端在监控中的应用

在对环境进行监控的过程中,需要对大量的实时数据进行采集和初步处理,这就需要使用大量的传感器和数据通信设备。同时,传统监控端使用的PC,其的体积和连网方式不便,不便于现场监控人员对环境的实时掌控。综合这两点,在环境监控中使用嵌入式[1]智能终端可较好的解决这些问题。嵌入式的移动终端可不受地理限制,对环境进行实时动态监控。

1.2 Android和移动机器人在监控中的使用

移动机器[2]人是一个集环境感知、动态决策与规划[3]、行为控制与执行[4]等多功能于一体的综合系统[5]。其除了具有较高的智能度外,还具备较好的灵活移动能力,能在各种环境中动态的获取各种指定的环境信息,并对信息进行处理分析。目前智能手机的普及率较高,若能将智能机同移动机器人相互结合,系统在环境监控过程中的灵活度和使用范围将得到大幅的提高。

1.3 ROS(机器人操作系统)

ROS是一种分布式的进程框架,这使得执行程序可各自独立地设计,松散的、实时地相组合并将其提供给Android的客户端。最后,在搭建好的ROS运行平台下,利用Android智能和该平台进行通信,模拟客户端与机器人的交互流程与测试结果。

2 环境监测数据服务器与通信软件设计

2.1 Qt实现多线程服务器

Qt[6]是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序。信号与槽的搭配使用为Qt构造了一个强大的部件编程机制[7]。

2.2 视频转码

在视频方面,Android设备主要支持对H.264 AVC与MPEG-4 SP编码方式。所以,需要将已获得的avi格式视频转换成MPEG-4。要实现视频的转码,需要用到视频转码工具,本文采用Avconv工具。

2.3 服务器调试及其软件界面设计

在服务器端,需要加入对视频流的控制操作组件,如打开摄像头、停止摄像、开始监控等。在真实的机器人硬件系统上,若其软件部分设计了相关的界面调试内容,则调试起来会方便、快捷[8-9]。部分软件界面实现如图1所示,主要是视频和环境信息的显示,以及系统调试信息的打印。

图1 服务器软件界面截图

3 系统Android客户端设计与实现

3.1 客户端总体设计及需求分析

客户端的职责是同用户进行交互,将用户想了解的机器人参数显示出来。同时,还需将用户的指令发送给ROS的服务器程序端,用于对服务器端的机器人进行控制。为实现客户端与服务器的系统管理,其之间的逻辑调用关系如图2所示。

图2 程序框架

由图2可知,客户端程序分为两个主体部分,体现在Android程序中就是两个Activity;分别是MainActivity与 ShowActivity。

进入这一Activity后,首先要设置开启视频模式,按下该按钮后,客户端会向服务器发出一个视屏通话请求,服务器接收到修改信号后开始将PC端的视频数据通过Socket发送给客户端,客户端接收到相关数据并缓存下来,调用视频播放程序进行视频播放。

3.2 客户端主要模块

3.2.1 客户端UI界面

客户端界面[10]的目标如图3的效果。

图3 界面初步设计

这样一个界面包含了能同服务器端进行交互的所有要素。手机程序开启之后,第一件事就是获取界面所有组件的ID。这之后等待用户操作,首先检测网络连接按钮是否被按下,后续的所有操作都在网络建立好的基础上进行。检测到该连接按钮被按下后,继续检测IP地址输入框内是否输入了符合IPv4地址规范的字符串,如果有,那么将这个IP地址存下来,并创建一个线程,在线程中根据之前获取的IP地址来建立一个Socket。需要注意的是,在Android 4.0之后的版本是不允许用户在主线程中建立网络连接的,即用户要建立一个网络连接,就必须新建一个线程,并在线程内完成Socket或其他的网络连接。

3.2.2 Android网络通信模块与多线程

安卓通信[10]主要依靠Socket网络编程,在获取服务器端的视频流信息时,使用的是sufaceView类,并直接使用了Http协议来获取服务器端的视频流信息。首先,最依赖的还是Socket通信。要实现多线程,在大多数情况下,均可使用Thread线程类,Thread比较简单,直接匿名创建重写run方法,调用start方法执行即可。但对于Android平台来说UI控件均没有设计成为线程安全类型,所以需要引入同步机制来刷新界面[11-12]。

3.2.3 Android视频播放模块

在本系统中,视频的采集和转码都已在服务器端的程序中实现了,所以在Android程序中,需要做的就是播放服务器端处理好的视频。本文使用的是MediaPlayer和SurfaceView配合的方案。该模块程序流程如图4所示。

图4 视频播放流程图

在上述函数中,最重要的两个函数setDataSource和setDisplay,分别指定了视频播放的资源和视频播放器,播放资源可设置为网络域名,这是使用了Http协议来接收视频信息。

4 演示系统与系统测试

4.1 Android客户端与服务器功能演示

在对本系统进行测试演示时,需要将PC端的服务器和Android端的客户程序打开,PC和手机需同时连入局域网内。首先打开Ubuntu系统的终端,输入“ifconfig”指令[13],终端会显示出当前PC机所用的IP地址。

之后需要启动ROS系统,输入指令:#roscore。再打开ROS的rosbridge节点,用于接收手机端的连接请求,注意,这里需要重新打开一个终端用来输入:#rosrun rosbridge rosbridge.py。获取了PC的IP地址并开启了服务器后,在手机客户端的IP地址输入框内输入PC的IP地址,输入后点击连接,若弹出连接成功提示,表示已正确连接。

随后在视频播放框的下方输入框内输入查询环境参数的指令,本系统中,对应的测试指令功能如下:(1)CO2,查询二氧化碳浓度值;(2)WET,查询当前空气湿度值;(3)TEMP,查询当前温度值;(4)ABOUT,查询软件信息。

客户端可输入以上几个指令来模拟查询对应的信息。接下来就是较为重要的视频通信[14-15],首先,在服务器端的程序中开启摄像头,并点击开始监控。此时,服务器的视频界面里含有监控的画面如图5所示。

图5 服务器监控画面

打开服务器端的程序并获取了摄像头的视频信息后,在手机客户端输入相关的地址信息后,点击连接,播放视频,可利用手机客户端的程序来播放服务器端的视频信息。通过Http协议传输的视频信息需要进行一定的缓冲。所以,在视频播放之前,需要等待一段时间。这是由于网络传输的延迟,网络传输的速率也是影响视频播放质量的重要因素。

4.2 Android客户端控制ROS节点演示

要实现对ROS节点的控制,首先需要将ROS系统及ROS的相关节点打开,让其处于运行状态,其次通过手机的前后左右按钮来对节点进行模拟控制。运行效果如图6所示。

图6 手机终端控制ROS节点

4.3 数据分析

本系统中,需要测试只有一个或多个客户端接入系统时,视频的通信质量。首先,测试了服务器中只有一个手机客户端接入时的数据,如图7所示,在1 min之内,手机端播放的视频最高帧率为23 fps,最低为8.5 fps,平均之后,帧率为14.32 fps,通过观察图7中的曲线可知,视频播放过程中,帧率的波动比较大,说明视频传输不够稳定。

图7 单客户端视频帧率

下一步就是测试多个客户端接入到服务器时,客户端所播放视频的帧率波动。同样,通过截取客户端1 min内的视频帧率变化曲线来进行分析,如图8所示。最高的帧率为21 fps,最低为6 fps,平均值为15.61 fps。结果表明,在服务器对多个手机客户端进行视频连接时,播放品质下降不明显。

图8 多客户端视频帧率

通过对连续60帧的视频数据进行统计,结合前面的视频帧率数据,可计算出视频的传输速度等系列数据,如表1所示。

表1 视频数据分析

5 结束语

设计了一种适于环境监控系统,并介绍了系统的组成部分,以及结构与运行模式。针对监控系统

的基本要求,设计了一款Android智能手机应用程序,同时实现了与该应用程序配套进行测试的服务器。针对移动机器人的监控系统,分析了智能移动终端在该系统中的重要性,给出了移动终端在该监控系统中需要实现的内容;且开发了一个基于ROS操作系统的机器人仿真服务器平台,模拟了移动机器人获取环境数据,使用Qt为该服务器平台增加用户界面。

[1] 左璐.嵌入式系统现状与发展前景研究[J].现代商贸工业,2010,22(15):331-332.

[2] 赵全保.移动机器人网络控制中的关键技术研究[D].天津:天津理工大学,2006.

[3] Fong T,Thorpe C,Baur C.Multi-robot remote driving with collaborative control[J].Industrial Electronics,2003,50(4): 699-704.

[4] Tira-Thompson E,Touretzky D S.The tekkotsu robotics development environment[C].Istanbul:IEEE ICRA,2011.

[5] 刘其峰,朱世强,刘松国,等.开放式移动机器人嵌入式控制系统的设计与实现[J]机电工程,2007,24(9): 56-58,66.

[6] 张建伟,张立伟,胡颖,等.开源机器人操作系统-ROS[M].北京:科学出版社,2012.

[7] 任小龙.环境在线监控系统运维优化思考与建议[J].环境监控与预警,2012(6):35-37.

[8] 张昆,朱微维.智能建筑监控系统中控制逻辑的设计与实现[J].工业控制计算机,2012,25(3):32-33.

[9] 刘清,吴军,郭建明,等.基于Internet的移动机器人网络监控系统[J].武汉理工大学学报:信息与管理工程版,2009,31(6):913-916.

[10] 朱效洲.户外环境下基于视觉的移动机器人可通行区域识别研究[D].长沙:国防科学技术大学,2012.

[11] Patrick R.Goebel ROS by example[M].UT,USA:ROS Groovy,2013.

[ 2] 余荣发.基于Android 的移动视频监控系统的设计与实现[D].广州:华南理工大学,2011.

[13] Mark Summerfield. Advanced Qt programming: creating great software with C++ and Qt4[M].New York:Prentice Hall,2010.

[14] Jasmin Blanchette, Mark Summerfield. C++ GUI programming with Q t4[M].New York:Prentice Hall,2006.

[15] Carpin S,Lewis M,Wang J,et a1.USARSim:a robot simulator for research and education[C].Shanghai:IEEE Intemational Conference on Robotics and Automation,2007.

[16] Bradski G, Kaehler A. Learning opencv: computer vision with the openCV library [M].USA:O’Reilly Media, Inc,2007.

Environment Monitoring System Software Development Based on Android

GAO Renzhi1,SHANG Lihui1,TU Xuan2

(1. School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology,Shanghai 200093, China ; 2. Shanghai Institute of Process Automation Instrumentation, Shanghai 200093, China )

Considering the fixed nodes in traditional monitoring in building environment and poor mobility performance, this paper proposed the use of mobile devices in the remote monitoring system communication, data processing functions for remote monitoring of the environment. In this paper, simulating use of Android mobile phone equipped with ROS (Robot Operating System) of the robot group network communication video data acquisition, processing, and TCP-based protocol on the server side to achieve image acquisition and processing, the mobile terminal equipped with a robotic system ROS data communication and control implementation.

environmental monitoring; mobile terminal; Android; ROS

2016- 03- 06

上海市自然科学基金资助项目(15ZR1429300)

高仁智(1990-),男,硕士研究生。研究方向:智能控制理论与Linux嵌入式开发。尚丽辉(1977-),女,博士,讲师。研究方向:智能控制论与复杂网络控制理论。涂煊(1974-),男,高级工程师。研究方向:无线短程数据传输网络系统在工业环境下的开发与应用。

10.16180/j.cnki.issn1007-7820.2017.01.032

TN929.5;TP277.5

A

1007-7820(2017)01-115-04

猜你喜欢

服务器端移动机器人客户端
移动机器人自主动态避障方法
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Twincat的移动机器人制孔系统
基于Qt的安全即时通讯软件服务器端设计
极坐标系下移动机器人的点镇定
基于引导角的非完整移动机器人轨迹跟踪控制