邹子敬1,2,齐洁1,2,张嘉衡1,2
(1.东华大学 信息科学与技术学院, 上海 201620; 2.东华大学 数字化纺织服装技术教育部工程研究中心, 上海 201620)
摘要:以开源监控软件Zabbix为平台,以嵌入式机器人为对象,开发了基于无线通信的嵌入式机器人运行状态数据采集和监控系统。该监控系统由被监控嵌入式机器人、监控服务器、监控客户端代理、远程登录终端以及基于特定代码的数据采集与传输方法等构成,可以监控机器人的电池状态、速度、与各方向障碍物距离等运行状态参数。
关键词:嵌入式机器人; Zabbix; 监控; secureCRT
0引言
随着机器人技术的飞速发展,机器人已成为生活智能、工业智能的重要组成部分。随着机器人产业的高智能性、高自主性,机器人工作任务更加多样,工作环境更加复杂,工作负载越来越高,而影响机器人使用寿命、导致工作故障的因素也越来越多。但目前嵌入式机器人并没有一套针对工作状态的可视化操作界面,现有的机器人远程监控系统往往依赖于机器人厂商所提供的监控平台,不但不具有通用性,而且往往价格昂贵,使很多致力于机器人行业的小公司望而却步[1] 。目前对于嵌入式机器人的工作状态完全依赖于有经验的机器人工程师对工作实际情况的分析,并没有深入到系统层面,对于嵌入式机器人的CPU工作负载、详细实时运行状态更是一无所知,这对于长期、高效、安全地使用机器人是不利的,而且也不利于对机器人的新功能集成与二次开发,所以有必要开发一套针对于嵌入式机器人运行状态、CPU参数实时反馈的可视化监控系统。
监控系统作为工业自动化不可或缺的重要组成部分,能够快速定位系统故障,实时反映系统的运行状态,作为工业自动化的眼睛,在如今更加智能化、人性化的时代有着重要的意义。监控系统在互联网行业早已广泛存在,各种开源的监控软件也以优秀的数据采集性能、良好的界面展示体现监控的价值。但是目前监控的思想还比较局限,传统制造业多数还依赖于有经验的工程师进行故障处理,这是十分低效的。本文将互联网行业对服务器性能的监控思想应用于新兴的机器人产业,以提供良好交互的监控数据显示。将监控系统应用于机器人产业、传统制造业等行业,对实现工业产品高效的故障排查以及良好的人机交互具有重要的现实意义。
本文从监控系统的搭建、嵌入式机器人运行状态参数的获取与通信、数据监控三个方面进行阐述。监控系统的整体架构及操作流程如图1、图2所示。
本文采用开源监控软件Zabbix作为监控系统的主体,Zabbixserver包括Zabbixserver、监控数据库、Web端页面三个组成部分。通过数据传输终端登录嵌入式机器人操作系统,并将机器人运行数据保存在数据传输终端,数据传输终端将数据传递给作为监控终端的Windows机器,Windows机器再将数据传递给虚拟机上的监控服务器,完成监控。
1监控系统的搭建
1.1Zabbix简介
本文采用开源的监控软件Zabbix作为监控系统的主体,Zabbix是一种基于Web端的可视化的提供分布式系统监视以及网络性能监视的企业级解决方案。Zabbix能够监视多种网络参数,并且提供灵活的告警机制,拥有良好的图表显示界面,支持多种数据格式的传输,采用经典的C/S(Server/Client)模式对指定网络设备的性能进行监控[2]。Zabbix主要用于对网络参数的监控,但不局限于此,鉴于其强大的数据传输能力,以及优秀的图表显示功能,本文采用其用于嵌入式机器人运行状态的监控。如图3所示为Zabbix的系统架构图。
1.2Zabbix-server安装与数据库配置
Zabbix系统依赖于Linux操作系统(本文中采用Windows机器上Linux虚拟机的形式),以及Apache、php、mysql等软件,分别用于Zabbix的Web端显示以及监控数据的存储。在上述软件环境中进行Zabbixserver的源码编译与安装[3]。
本文采用的监控系统数据库为mysql数据库,由于当使用root用户启动Zabbix进程时,系统会自动切换到Zabbix用户,所以需要在Linux系统中添加一个Zabbix用户组以及Zabbix用户。登录数据库创建Zabbix用户,并且赋予权限;创建名为Zabbix的数据库,数据库采用UTF8的编码格式;在Zabbixserver端的服务器上的MySQL数据库中创建Zabbix用户,并设置Zabbix用户的对应密码;以Zabbix用户登录MySQL后,使用Zabbix源码包中的schema.sql、images.sql、data.sql对Zabbix库进行初始化操作。完成数据库配置后,在Zabbixserver.conf文件中修改对应数据库信息的配置项。Windows机器在浏览器中输入虚拟机IP完成Zabbix登录后,Zabbix部分显示界面如图4所示。
2机器人状态数据的获取与通信
2.1Khepera IV机器人简介
Khepera IV是一款高端桌面机器人。其周身设置有8个红外传感器,用于感知距离、环境光线或者测量障碍物,范围从2 mm~250 mm,每个传感器间隔45°。同时配有5个超声波传感器(左右各2个,正前方1个),用于近距离探测,范围从250 mm~2 500 mm。正前方有1个彩色摄像头。此外还有三轴陀螺仪、三轴加速度计等传感器、直流有刷电机以及一些开源软件,使人能够创建复杂的行为。图5所示为Khepera IV机器人的三视图。
部分组成点:1.发光二极管;2.串行线(S)连接器;
3.复位按钮;4.编码轮来选择运行模式;5.红外线接近传感器;
6.电池充电器插孔;7.开关电池开关。
2.2机器人运行状态参数
Khepera IV机器人需要在Linux环境下进行代码编译,其目前能够支持的功能有行进间避障以及定点移动等。Khepera IV机器人通过自带的超声波传感器和红外传感器进行测距,能够探知与障碍物的距离。机器人的三种控制方式包括:速度控制、位置控制以及空闲模式。速度值由机器人的异步电机所控制,异步电机的转速采用脉宽调制(PMW),而机器人的位置则通过对编码器进行脉冲计数来记录经过的距离。综上所述,机器人的运行状态参数包括:速度、位置、与障碍物的距离、电池的使用情况、CPU负载程度等。
2.3数据采集与通信
2.3.1SSH协议简介
SSH(Secure Shell)协议主要用于在非安全的网络环境中进行安全的远程登录和其他网络服务[4]。与其他非安全性的网络数据传输协议FTP、Telnet等不同,SSH协议提供了一套基于公钥与私钥的认证系统,用于服务器的远程登录。
SSH协议结构包括传输层协议、用户认证层协议、连接层协议。基于上述体系结构以及SSH协议成熟的密钥体系,SSH的连接建立过程为:
(1)协议版本协商
首先需要统一两个连接方的协议版本以及软件版本。此过程基于TCP协议,由发出连接请求方打开22号端口,等待被请求方的连接,完成TCP连接后,由请求方发出TCP请求,用于统一协议版本等,被请求方响应TCP请求,返回协议版本号等。
(2)加密算法统一
协议版本统一后需要进行加密算法的确认与统一,双方将自己支持的公钥算法列表、加密算法列表发送给对方,双方通过DH交换算法协商出统一的算法列表,用于会话加密。
(3)用户认证
由请求方发送本方的用户名以及认证方法等作为报文内容发送给被请求方,被请求方使用该认证方法进行认证,若认证失败,则返回失败内容进行再次认证,直到认证成功或者认证超时。
(4)会话请求与交互
完成用户认证与请求方的会话请求后,建立SSH连接的双方可以在加密模式下进行数据传输。
2.3.2数据通信的实现
通过在机器人操作系统中设置基于本地路由器的WiFi模式,采用secureCRT通过SSH协议登录到机器人操作系统,完成由机器人运行代码保存在机器人操作系统上的机器数据的传输。
由于机器人的操作系统不支持Zabbixagent端的安装,所以无法直接将运行数据传递给Zabbixserver端,在机器人的操作系统上编写代码,使用sz下载命令将机器人的运行数据下载到本地的Windows机器上,采用Linux系统的crontab定时任务,定时执行sz下载命令,将机器人运行状态文件从远程登录终端定时下载到监控客户端,并且更新监控客户端上已有的机器人运行状态数据文件。通过以上方法完成机器人的数据采集以及数据通信。
3数据监控的实现
在完成了监控系统的搭建以及数据的采集和传输后,需要将传输到本地Windows机器上的运行数据作为监控项传递给Windows机器上的作为Zabbixserver端的Linux虚拟机,以实施监控。采用Zabbixagent数据通信方式对Windows机器采集到的机器人运行数据进行监控。由于Zabbixserver端所在的虚拟机与Zabbixagent所在的Windows机器处在同一网段下,所以server端与agent可以基于TCP/IP协议进行数据交互。完成在Windows机器上Zabbixagent端的安装与启动后,在server端的Web页面添加监控,在Web端的configuration下的host中选择Create host,创建被监控主机,IP地址选择本地的Windows机器IP地址,选择刚创建的监控主图6Zabbix添加监控项流程图机中的item项,创建监控项。Zabbix中添加监控的流程如图6所示。
表1所示为监控项电池余量的创建实例。
需要在Zabbix_agentd.conf文件中配置特定脚本代码实现对监控客户端自定义监控项的数据监控,配置如下:
UserParameter=robot[*]
C:\\Python26\\python
C:\\Users\\Administrator\\Desktop\\robot.py $1
其中,robot[*]代表监控项名称,*表示能够传入任意参数。由于机器人的运行状态数据以键值对的形式保存在本地,采用python脚本以正则匹配的方式读取各项的值,返回给server端,其中$1为传入的参数。部分脚本代码如下:
import os
import sys
import re
stat = sys.argv[1]
for i in open('C:\\\\Users\\\\Administrator\\\\Desktop\\\\robot.txt','r'):
i=i.replace('\\n','')
y=re.search(stat,i)
if y:
result=i.split(':')[1]
print result
sys.exit()
else:
continue
表2所示为机器人在某一时刻运行状态的数据及说明。
4监控结果
4.1机器人各个运行参数的监控显示
机器人运行了20 min左右,各个参数的监控数据如图7~图10。
4.2监控结果分析
本文测试选取了监控项中最具代表性的4项,即机器人的电池余量、机器人右轮的行驶速度、与左边方向的障碍物距离以及机器人右轮行驶的总里程数。其中电池余量随着机器人的运行显示逐渐减少的趋势;车轮的速度由于行驶过程中会出现避障、转弯等运行方式,所以速度呈随机性分布,但变化范围不大;由于机器人的初始位置处于障碍物中,所以超声波传感器探测的距离值较小,此时的速度也较小;右轮的总里程数是由机器人内部的编码器脉冲计数所统计,表示的是机器人从初始状态开始的行驶距离,所以呈递增趋势。监控数据每1 min刷新一次,实时性高,与实际情况相符,达到了监控预期效果。
5结束语
自动化、智能化已经渗透到了各个领域,监控系统作为自动化的一双眼睛,可以第一时间发现故障,告知相关工作者。本文采用传统的网络监控软件Zabbix实现对可移动机器人的运行状态的数据监控,通过良好的数据图表显示以完成对机器人性能的监控,达到对机器人透明、高效的使用。本文提出的方法可以移植到具有操作系统的黑盒型智能设备、工业机器,还可以集中监控机器人集群,对于高效、快速地定位故障、排除故障,提高系统性能具有重要的意义。
参考文献
[1] 刘磊.工业机器人远程诊断服务系统的设计开发[D].大连:大连理工大学,2014.
[2] 张朝阳. 利用Zabbix进行系统和网络管理[J].计算机时代,2008(10):1922.
[3] 姚仁捷.Zabbix监控系统深度实践[M].北京:电子工业出版社,2014.
[4] 张国防. 基于SSH协议的Linux远程管理[J].计算机安全,2014(12):3739.