鄒子敬1,2,齊潔1,2,張嘉衡1,2
?。?.東華大學 信息科學與技術學院, 上海 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.開關電池開關?!?/p>

2.2機器人運行狀態參數
Khepera IV機器人需要在Linux環境下進行代碼編譯,其目前能夠支持的功能有行進間避障以及定點移動等。Khepera IV機器人通過自帶的超聲波傳感器和紅外傳感器進行測距,能夠探知與障礙物的距離。機器人的三種控制方式包括:速度控制、位置控制以及空閑模式。速度值由機器人的異步電機所控制,異步電機的轉速采用脈寬調制(PMW),而機器人的位置則通過對編碼器進行脈沖計數來記錄經過的距離。綜上所述,機器人的運行狀態參數包括:速度、位置、與障礙物的距離、電池的使用情況、CPU負載程度等。
2.3數據采集與通信
2.3.1SSH協議簡介
SSH(Secure Shell)協議主要用于在非安全的網絡環境中進行安全的遠程登錄和其他網絡服務[4]。與其他非安全性的網絡數據傳輸協議FTP、Telnet等不同,SSH協議提供了一套基于公鑰與私鑰的認證系統,用于服務器的遠程登錄。
SSH協議結構包括傳輸層協議、用戶認證層協議、連接層協議。基于上述體系結構以及SSH協議成熟的密鑰體系,SSH的連接建立過程為:
?。?)協議版本協商
首先需要統一兩個連接方的協議版本以及軟件版本。此過程基于TCP協議,由發出連接請求方打開22號端口,等待被請求方的連接,完成TCP連接后,由請求方發出TCP請求,用于統一協議版本等,被請求方響應TCP請求,返回協議版本號等。
?。?)加密算法統一
協議版本統一后需要進行加密算法的確認與統一,雙方將自己支持的公鑰算法列表、加密算法列表發送給對方,雙方通過DH交換算法協商出統一的算法列表,用于會話加密。
?。?)用戶認證
由請求方發送本方的用戶名以及認證方法等作為報文內容發送給被請求方,被請求方使用該認證方法進行認證,若認證失敗,則返回失敗內容進行再次認證,直到認證成功或者認證超時。
(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項,即機器人的電池余量、機器人右輪的行駛速度、與左邊方向的障礙物距離以及機器人右輪行駛的總里程數。其中電池余量隨著機器人的運行顯示逐漸減少的趨勢;車輪的速度由于行駛過程中會出現避障、轉彎等運行方式,所以速度呈隨機性分布,但變化范圍不大;由于機器人的初始位置處于障礙物中,所以超聲波傳感器探測的距離值較小,此時的速度也較?。挥逸喌目偫锍虜凳怯蓹C器人內部的編碼器脈沖計數所統計,表示的是機器人從初始狀態開始的行駛距離,所以呈遞增趨勢。監控數據每1 min刷新一次,實時性高,與實際情況相符,達到了監控預期效果。
5結束語
自動化、智能化已經滲透到了各個領域,監控系統作為自動化的一雙眼睛,可以第一時間發現故障,告知相關工作者。本文采用傳統的網絡監控軟件Zabbix實現對可移動機器人的運行狀態的數據監控,通過良好的數據圖表顯示以完成對機器人性能的監控,達到對機器人透明、高效的使用。本文提出的方法可以移植到具有操作系統的黑盒型智能設備、工業機器,還可以集中監控機器人集群,對于高效、快速地定位故障、排除故障,提高系統性能具有重要的意義。
參考文獻
[1] 劉磊.工業機器人遠程診斷服務系統的設計開發[D].大連:大連理工大學,2014.
[2] 張朝陽. 利用Zabbix進行系統和網絡管理[J].計算機時代,2008(10):1922.
?。?] 姚仁捷.Zabbix監控系統深度實踐[M].北京:電子工業出版社,2014.
[4] 張國防. 基于SSH協議的Linux遠程管理[J].計算機安全,2014(12):3739.
