鄒子敬1,2,齊潔1,2,張嘉衡1,2
?。?.東華大學 信息科學與技術學院, 上海 201620; 2.東華大學 數(shù)字化紡織服裝技術教育部工程研究中心, 上海 201620)
摘要:以開源監(jiān)控軟件Zabbix為平臺,以嵌入式機器人為對象,開發(fā)了基于無線通信的嵌入式機器人運行狀態(tài)數(shù)據(jù)采集和監(jiān)控系統(tǒng)。該監(jiān)控系統(tǒng)由被監(jiān)控嵌入式機器人、監(jiān)控服務器、監(jiān)控客戶端代理、遠程登錄終端以及基于特定代碼的數(shù)據(jù)采集與傳輸方法等構成,可以監(jiān)控機器人的電池狀態(tài)、速度、與各方向障礙物距離等運行狀態(tài)參數(shù)。
關鍵詞:嵌入式機器人; Zabbix; 監(jiān)控; secureCRT
0引言
隨著機器人技術的飛速發(fā)展,機器人已成為生活智能、工業(yè)智能的重要組成部分。隨著機器人產(chǎn)業(yè)的高智能性、高自主性,機器人工作任務更加多樣,工作環(huán)境更加復雜,工作負載越來越高,而影響機器人使用壽命、導致工作故障的因素也越來越多。但目前嵌入式機器人并沒有一套針對工作狀態(tài)的可視化操作界面,現(xiàn)有的機器人遠程監(jiān)控系統(tǒng)往往依賴于機器人廠商所提供的監(jiān)控平臺,不但不具有通用性,而且往往價格昂貴,使很多致力于機器人行業(yè)的小公司望而卻步[1] 。目前對于嵌入式機器人的工作狀態(tài)完全依賴于有經(jīng)驗的機器人工程師對工作實際情況的分析,并沒有深入到系統(tǒng)層面,對于嵌入式機器人的CPU工作負載、詳細實時運行狀態(tài)更是一無所知,這對于長期、高效、安全地使用機器人是不利的,而且也不利于對機器人的新功能集成與二次開發(fā),所以有必要開發(fā)一套針對于嵌入式機器人運行狀態(tài)、CPU參數(shù)實時反饋的可視化監(jiān)控系統(tǒng)。
監(jiān)控系統(tǒng)作為工業(yè)自動化不可或缺的重要組成部分,能夠快速定位系統(tǒng)故障,實時反映系統(tǒng)的運行狀態(tài),作為工業(yè)自動化的眼睛,在如今更加智能化、人性化的時代有著重要的意義。監(jiān)控系統(tǒng)在互聯(lián)網(wǎng)行業(yè)早已廣泛存在,各種開源的監(jiān)控軟件也以優(yōu)秀的數(shù)據(jù)采集性能、良好的界面展示體現(xiàn)監(jiān)控的價值。但是目前監(jiān)控的思想還比較局限,傳統(tǒng)制造業(yè)多數(shù)還依賴于有經(jīng)驗的工程師進行故障處理,這是十分低效的。本文將互聯(lián)網(wǎng)行業(yè)對服務器性能的監(jiān)控思想應用于新興的機器人產(chǎn)業(yè),以提供良好交互的監(jiān)控數(shù)據(jù)顯示。將監(jiān)控系統(tǒng)應用于機器人產(chǎn)業(yè)、傳統(tǒng)制造業(yè)等行業(yè),對實現(xiàn)工業(yè)產(chǎn)品高效的故障排查以及良好的人機交互具有重要的現(xiàn)實意義。
本文從監(jiān)控系統(tǒng)的搭建、嵌入式機器人運行狀態(tài)參數(shù)的獲取與通信、數(shù)據(jù)監(jiān)控三個方面進行闡述。監(jiān)控系統(tǒng)的整體架構及操作流程如圖1、圖2所示。


本文采用開源監(jiān)控軟件Zabbix作為監(jiān)控系統(tǒng)的主體,Zabbixserver包括Zabbixserver、監(jiān)控數(shù)據(jù)庫、Web端頁面三個組成部分。通過數(shù)據(jù)傳輸終端登錄嵌入式機器人操作系統(tǒng),并將機器人運行數(shù)據(jù)保存在數(shù)據(jù)傳輸終端,數(shù)據(jù)傳輸終端將數(shù)據(jù)傳遞給作為監(jiān)控終端的Windows機器,Windows機器再將數(shù)據(jù)傳遞給虛擬機上的監(jiān)控服務器,完成監(jiān)控。
1監(jiān)控系統(tǒng)的搭建
1.1Zabbix簡介
本文采用開源的監(jiān)控軟件Zabbix作為監(jiān)控系統(tǒng)的主體,Zabbix是一種基于Web端的可視化的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡性能監(jiān)視的企業(yè)級解決方案。Zabbix能夠監(jiān)視多種網(wǎng)絡參數(shù),并且提供靈活的告警機制,擁有良好的圖表顯示界面,支持多種數(shù)據(jù)格式的傳輸,采用經(jīng)典的C/S(Server/Client)模式對指定網(wǎng)絡設備的性能進行監(jiān)控[2]。Zabbix主要用于對網(wǎng)絡參數(shù)的監(jiān)控,但不局限于此,鑒于其強大的數(shù)據(jù)傳輸能力,以及優(yōu)秀的圖表顯示功能,本文采用其用于嵌入式機器人運行狀態(tài)的監(jiān)控。如圖3所示為Zabbix的系統(tǒng)架構圖。

1.2Zabbix-server安裝與數(shù)據(jù)庫配置
Zabbix系統(tǒng)依賴于Linux操作系統(tǒng)(本文中采用Windows機器上Linux虛擬機的形式),以及Apache、php、mysql等軟件,分別用于Zabbix的Web端顯示以及監(jiān)控數(shù)據(jù)的存儲。在上述軟件環(huán)境中進行Zabbixserver的源碼編譯與安裝[3]。
本文采用的監(jiān)控系統(tǒng)數(shù)據(jù)庫為mysql數(shù)據(jù)庫,由于當使用root用戶啟動Zabbix進程時,系統(tǒng)會自動切換到Zabbix用戶,所以需要在Linux系統(tǒng)中添加一個Zabbix用戶組以及Zabbix用戶。登錄數(shù)據(jù)庫創(chuàng)建Zabbix用戶,并且賦予權限;創(chuàng)建名為Zabbix的數(shù)據(jù)庫,數(shù)據(jù)庫采用UTF8的編碼格式;在Zabbixserver端的服務器上的MySQL數(shù)據(jù)庫中創(chuàng)建Zabbix用戶,并設置Zabbix用戶的對應密碼;以Zabbix用戶登錄MySQL后,使用Zabbix源碼包中的schema.sql、images.sql、data.sql對Zabbix庫進行初始化操作。完成數(shù)據(jù)庫配置后,在Zabbixserver.conf文件中修改對應數(shù)據(jù)庫信息的配置項。Windows機器在瀏覽器中輸入虛擬機IP完成Zabbix登錄后,Zabbix部分顯示界面如圖4所示。

2機器人狀態(tài)數(shù)據(jù)的獲取與通信
2.1Khepera IV機器人簡介
Khepera IV是一款高端桌面機器人。其周身設置有8個紅外傳感器,用于感知距離、環(huán)境光線或者測量障礙物,范圍從2 mm~250 mm,每個傳感器間隔45°。同時配有5個超聲波傳感器(左右各2個,正前方1個),用于近距離探測,范圍從250 mm~2 500 mm。正前方有1個彩色攝像頭。此外還有三軸陀螺儀、三軸加速度計等傳感器、直流有刷電機以及一些開源軟件,使人能夠創(chuàng)建復雜的行為。圖5所示為Khepera IV機器人的三視圖。
部分組成點:1.發(fā)光二極管;2.串行線(S)連接器;
3.復位按鈕;4.編碼輪來選擇運行模式;5.紅外線接近傳感器;
6.電池充電器插孔;7.開關電池開關。

2.2機器人運行狀態(tài)參數(shù)
Khepera IV機器人需要在Linux環(huán)境下進行代碼編譯,其目前能夠支持的功能有行進間避障以及定點移動等。Khepera IV機器人通過自帶的超聲波傳感器和紅外傳感器進行測距,能夠探知與障礙物的距離。機器人的三種控制方式包括:速度控制、位置控制以及空閑模式。速度值由機器人的異步電機所控制,異步電機的轉(zhuǎn)速采用脈寬調(diào)制(PMW),而機器人的位置則通過對編碼器進行脈沖計數(shù)來記錄經(jīng)過的距離。綜上所述,機器人的運行狀態(tài)參數(shù)包括:速度、位置、與障礙物的距離、電池的使用情況、CPU負載程度等。
2.3數(shù)據(jù)采集與通信
2.3.1SSH協(xié)議簡介
SSH(Secure Shell)協(xié)議主要用于在非安全的網(wǎng)絡環(huán)境中進行安全的遠程登錄和其他網(wǎng)絡服務[4]。與其他非安全性的網(wǎng)絡數(shù)據(jù)傳輸協(xié)議FTP、Telnet等不同,SSH協(xié)議提供了一套基于公鑰與私鑰的認證系統(tǒng),用于服務器的遠程登錄。
SSH協(xié)議結構包括傳輸層協(xié)議、用戶認證層協(xié)議、連接層協(xié)議?;谏鲜鲶w系結構以及SSH協(xié)議成熟的密鑰體系,SSH的連接建立過程為:
(1)協(xié)議版本協(xié)商
首先需要統(tǒng)一兩個連接方的協(xié)議版本以及軟件版本。此過程基于TCP協(xié)議,由發(fā)出連接請求方打開22號端口,等待被請求方的連接,完成TCP連接后,由請求方發(fā)出TCP請求,用于統(tǒng)一協(xié)議版本等,被請求方響應TCP請求,返回協(xié)議版本號等。
?。?)加密算法統(tǒng)一
協(xié)議版本統(tǒng)一后需要進行加密算法的確認與統(tǒng)一,雙方將自己支持的公鑰算法列表、加密算法列表發(fā)送給對方,雙方通過DH交換算法協(xié)商出統(tǒng)一的算法列表,用于會話加密。
?。?)用戶認證
由請求方發(fā)送本方的用戶名以及認證方法等作為報文內(nèi)容發(fā)送給被請求方,被請求方使用該認證方法進行認證,若認證失敗,則返回失敗內(nèi)容進行再次認證,直到認證成功或者認證超時。
?。?)會話請求與交互
完成用戶認證與請求方的會話請求后,建立SSH連接的雙方可以在加密模式下進行數(shù)據(jù)傳輸。
2.3.2數(shù)據(jù)通信的實現(xiàn)
通過在機器人操作系統(tǒng)中設置基于本地路由器的WiFi模式,采用secureCRT通過SSH協(xié)議登錄到機器人操作系統(tǒng),完成由機器人運行代碼保存在機器人操作系統(tǒng)上的機器數(shù)據(jù)的傳輸。
由于機器人的操作系統(tǒng)不支持Zabbixagent端的安裝,所以無法直接將運行數(shù)據(jù)傳遞給Zabbixserver端,在機器人的操作系統(tǒng)上編寫代碼,使用sz下載命令將機器人的運行數(shù)據(jù)下載到本地的Windows機器上,采用Linux系統(tǒng)的crontab定時任務,定時執(zhí)行sz下載命令,將機器人運行狀態(tài)文件從遠程登錄終端定時下載到監(jiān)控客戶端,并且更新監(jiān)控客戶端上已有的機器人運行狀態(tài)數(shù)據(jù)文件。通過以上方法完成機器人的數(shù)據(jù)采集以及數(shù)據(jù)通信。
3數(shù)據(jù)監(jiān)控的實現(xiàn)
在完成了監(jiān)控系統(tǒng)的搭建以及數(shù)據(jù)的采集和傳輸后,需要將傳輸?shù)奖镜豔indows機器上的運行數(shù)據(jù)作為監(jiān)控項傳遞給Windows機器上的作為Zabbixserver端的Linux虛擬機,以實施監(jiān)控。采用Zabbixagent數(shù)據(jù)通信方式對Windows機器采集到的機器人運行數(shù)據(jù)進行監(jiān)控。由于Zabbixserver端所在的虛擬機與Zabbixagent所在的Windows機器處在同一網(wǎng)段下,所以server端與agent可以基于TCP/IP協(xié)議進行數(shù)據(jù)交互。完成在Windows機器上Zabbixagent端的安裝與啟動后,在server端的Web頁面添加監(jiān)控,在Web端的configuration下的host中選擇Create host,創(chuàng)建被監(jiān)控主機,IP地址選擇本地的Windows機器IP地址,選擇剛創(chuàng)建的監(jiān)控主圖6Zabbix添加監(jiān)控項流程圖機中的item項,創(chuàng)建監(jiān)控項。Zabbix中添加監(jiān)控的流程如圖6所示。


表1所示為監(jiān)控項電池余量的創(chuàng)建實例。
需要在Zabbix_agentd.conf文件中配置特定腳本代碼實現(xiàn)對監(jiān)控客戶端自定義監(jiān)控項的數(shù)據(jù)監(jiān)控,配置如下:
UserParameter=robot[*]
C:\\Python26\\python
C:\\Users\\Administrator\\Desktop\\robot.py $1
其中,robot[*]代表監(jiān)控項名稱,*表示能夠傳入任意參數(shù)。由于機器人的運行狀態(tài)數(shù)據(jù)以鍵值對的形式保存在本地,采用python腳本以正則匹配的方式讀取各項的值,返回給server端,其中$1為傳入的參數(shù)。部分腳本代碼如下:
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所示為機器人在某一時刻運行狀態(tài)的數(shù)據(jù)及說明。
4監(jiān)控結果
4.1機器人各個運行參數(shù)的監(jiān)控顯示
機器人運行了20 min左右,各個參數(shù)的監(jiān)控數(shù)據(jù)如圖7~圖10。



4.2監(jiān)控結果分析
本文測試選取了監(jiān)控項中最具代表性的4項,即機器人的電池余量、機器人右輪的行駛速度、與左邊方向的障礙物距離以及機器人右輪行駛的總里程數(shù)。其中電池余量隨著機器人的運行顯示逐漸減少的趨勢;車輪的速度由于行駛過程中會出現(xiàn)避障、轉(zhuǎn)彎等運行方式,所以速度呈隨機性分布,但變化范圍不大;由于機器人的初始位置處于障礙物中,所以超聲波傳感器探測的距離值較小,此時的速度也較小;右輪的總里程數(shù)是由機器人內(nèi)部的編碼器脈沖計數(shù)所統(tǒng)計,表示的是機器人從初始狀態(tài)開始的行駛距離,所以呈遞增趨勢。監(jiān)控數(shù)據(jù)每1 min刷新一次,實時性高,與實際情況相符,達到了監(jiān)控預期效果。
5結束語
自動化、智能化已經(jīng)滲透到了各個領域,監(jiān)控系統(tǒng)作為自動化的一雙眼睛,可以第一時間發(fā)現(xiàn)故障,告知相關工作者。本文采用傳統(tǒng)的網(wǎng)絡監(jiān)控軟件Zabbix實現(xiàn)對可移動機器人的運行狀態(tài)的數(shù)據(jù)監(jiān)控,通過良好的數(shù)據(jù)圖表顯示以完成對機器人性能的監(jiān)控,達到對機器人透明、高效的使用。本文提出的方法可以移植到具有操作系統(tǒng)的黑盒型智能設備、工業(yè)機器,還可以集中監(jiān)控機器人集群,對于高效、快速地定位故障、排除故障,提高系統(tǒng)性能具有重要的意義。
參考文獻
[1] 劉磊.工業(yè)機器人遠程診斷服務系統(tǒng)的設計開發(fā)[D].大連:大連理工大學,2014.
?。?] 張朝陽. 利用Zabbix進行系統(tǒng)和網(wǎng)絡管理[J].計算機時代,2008(10):1922.
?。?] 姚仁捷.Zabbix監(jiān)控系統(tǒng)深度實踐[M].北京:電子工業(yè)出版社,2014.
?。?] 張國防. 基于SSH協(xié)議的Linux遠程管理[J].計算機安全,2014(12):3739.
