鄒子敬1,2,齊潔1,2,張嘉衡1,2
?。?.東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 上海 201620; 2.東華大學(xué) 數(shù)字化紡織服裝技術(shù)教育部工程研究中心, 上海 201620)
摘要:以開(kāi)源監(jiān)控軟件Zabbix為平臺(tái),以嵌入式機(jī)器人為對(duì)象,開(kāi)發(fā)了基于無(wú)線通信的嵌入式機(jī)器人運(yùn)行狀態(tài)數(shù)據(jù)采集和監(jiān)控系統(tǒng)。該監(jiān)控系統(tǒng)由被監(jiān)控嵌入式機(jī)器人、監(jiān)控服務(wù)器、監(jiān)控客戶端代理、遠(yuǎn)程登錄終端以及基于特定代碼的數(shù)據(jù)采集與傳輸方法等構(gòu)成,可以監(jiān)控機(jī)器人的電池狀態(tài)、速度、與各方向障礙物距離等運(yùn)行狀態(tài)參數(shù)。
關(guān)鍵詞:嵌入式機(jī)器人; Zabbix; 監(jiān)控; secureCRT
0引言
隨著機(jī)器人技術(shù)的飛速發(fā)展,機(jī)器人已成為生活智能、工業(yè)智能的重要組成部分。隨著機(jī)器人產(chǎn)業(yè)的高智能性、高自主性,機(jī)器人工作任務(wù)更加多樣,工作環(huán)境更加復(fù)雜,工作負(fù)載越來(lái)越高,而影響機(jī)器人使用壽命、導(dǎo)致工作故障的因素也越來(lái)越多。但目前嵌入式機(jī)器人并沒(méi)有一套針對(duì)工作狀態(tài)的可視化操作界面,現(xiàn)有的機(jī)器人遠(yuǎn)程監(jiān)控系統(tǒng)往往依賴(lài)于機(jī)器人廠商所提供的監(jiān)控平臺(tái),不但不具有通用性,而且往往價(jià)格昂貴,使很多致力于機(jī)器人行業(yè)的小公司望而卻步[1] 。目前對(duì)于嵌入式機(jī)器人的工作狀態(tài)完全依賴(lài)于有經(jīng)驗(yàn)的機(jī)器人工程師對(duì)工作實(shí)際情況的分析,并沒(méi)有深入到系統(tǒng)層面,對(duì)于嵌入式機(jī)器人的CPU工作負(fù)載、詳細(xì)實(shí)時(shí)運(yùn)行狀態(tài)更是一無(wú)所知,這對(duì)于長(zhǎng)期、高效、安全地使用機(jī)器人是不利的,而且也不利于對(duì)機(jī)器人的新功能集成與二次開(kāi)發(fā),所以有必要開(kāi)發(fā)一套針對(duì)于嵌入式機(jī)器人運(yùn)行狀態(tài)、CPU參數(shù)實(shí)時(shí)反饋的可視化監(jiān)控系統(tǒng)。
監(jiān)控系統(tǒng)作為工業(yè)自動(dòng)化不可或缺的重要組成部分,能夠快速定位系統(tǒng)故障,實(shí)時(shí)反映系統(tǒng)的運(yùn)行狀態(tài),作為工業(yè)自動(dòng)化的眼睛,在如今更加智能化、人性化的時(shí)代有著重要的意義。監(jiān)控系統(tǒng)在互聯(lián)網(wǎng)行業(yè)早已廣泛存在,各種開(kāi)源的監(jiān)控軟件也以優(yōu)秀的數(shù)據(jù)采集性能、良好的界面展示體現(xiàn)監(jiān)控的價(jià)值。但是目前監(jiān)控的思想還比較局限,傳統(tǒng)制造業(yè)多數(shù)還依賴(lài)于有經(jīng)驗(yàn)的工程師進(jìn)行故障處理,這是十分低效的。本文將互聯(lián)網(wǎng)行業(yè)對(duì)服務(wù)器性能的監(jiān)控思想應(yīng)用于新興的機(jī)器人產(chǎn)業(yè),以提供良好交互的監(jiān)控?cái)?shù)據(jù)顯示。將監(jiān)控系統(tǒng)應(yīng)用于機(jī)器人產(chǎn)業(yè)、傳統(tǒng)制造業(yè)等行業(yè),對(duì)實(shí)現(xiàn)工業(yè)產(chǎn)品高效的故障排查以及良好的人機(jī)交互具有重要的現(xiàn)實(shí)意義。
本文從監(jiān)控系統(tǒng)的搭建、嵌入式機(jī)器人運(yùn)行狀態(tài)參數(shù)的獲取與通信、數(shù)據(jù)監(jiān)控三個(gè)方面進(jìn)行闡述。監(jiān)控系統(tǒng)的整體架構(gòu)及操作流程如圖1、圖2所示。
本文采用開(kāi)源監(jiān)控軟件Zabbix作為監(jiān)控系統(tǒng)的主體,Zabbixserver包括Zabbixserver、監(jiān)控?cái)?shù)據(jù)庫(kù)、Web端頁(yè)面三個(gè)組成部分。通過(guò)數(shù)據(jù)傳輸終端登錄嵌入式機(jī)器人操作系統(tǒng),并將機(jī)器人運(yùn)行數(shù)據(jù)保存在數(shù)據(jù)傳輸終端,數(shù)據(jù)傳輸終端將數(shù)據(jù)傳遞給作為監(jiān)控終端的Windows機(jī)器,Windows機(jī)器再將數(shù)據(jù)傳遞給虛擬機(jī)上的監(jiān)控服務(wù)器,完成監(jiān)控。
1監(jiān)控系統(tǒng)的搭建
1.1Zabbix簡(jiǎn)介
本文采用開(kāi)源的監(jiān)控軟件Zabbix作為監(jiān)控系統(tǒng)的主體,Zabbix是一種基于Web端的可視化的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)性能監(jiān)視的企業(yè)級(jí)解決方案。Zabbix能夠監(jiān)視多種網(wǎng)絡(luò)參數(shù),并且提供靈活的告警機(jī)制,擁有良好的圖表顯示界面,支持多種數(shù)據(jù)格式的傳輸,采用經(jīng)典的C/S(Server/Client)模式對(duì)指定網(wǎng)絡(luò)設(shè)備的性能進(jìn)行監(jiān)控[2]。Zabbix主要用于對(duì)網(wǎng)絡(luò)參數(shù)的監(jiān)控,但不局限于此,鑒于其強(qiáng)大的數(shù)據(jù)傳輸能力,以及優(yōu)秀的圖表顯示功能,本文采用其用于嵌入式機(jī)器人運(yùn)行狀態(tài)的監(jiān)控。如圖3所示為Zabbix的系統(tǒng)架構(gòu)圖。
1.2Zabbix-server安裝與數(shù)據(jù)庫(kù)配置
Zabbix系統(tǒng)依賴(lài)于Linux操作系統(tǒng)(本文中采用Windows機(jī)器上Linux虛擬機(jī)的形式),以及Apache、php、mysql等軟件,分別用于Zabbix的Web端顯示以及監(jiān)控?cái)?shù)據(jù)的存儲(chǔ)。在上述軟件環(huán)境中進(jìn)行Zabbixserver的源碼編譯與安裝[3]。
本文采用的監(jiān)控系統(tǒng)數(shù)據(jù)庫(kù)為mysql數(shù)據(jù)庫(kù),由于當(dāng)使用root用戶啟動(dòng)Zabbix進(jìn)程時(shí),系統(tǒng)會(huì)自動(dòng)切換到Zabbix用戶,所以需要在Linux系統(tǒng)中添加一個(gè)Zabbix用戶組以及Zabbix用戶。登錄數(shù)據(jù)庫(kù)創(chuàng)建Zabbix用戶,并且賦予權(quán)限;創(chuàng)建名為Zabbix的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)采用UTF8的編碼格式;在Zabbixserver端的服務(wù)器上的MySQL數(shù)據(jù)庫(kù)中創(chuàng)建Zabbix用戶,并設(shè)置Zabbix用戶的對(duì)應(yīng)密碼;以Zabbix用戶登錄MySQL后,使用Zabbix源碼包中的schema.sql、images.sql、data.sql對(duì)Zabbix庫(kù)進(jìn)行初始化操作。完成數(shù)據(jù)庫(kù)配置后,在Zabbixserver.conf文件中修改對(duì)應(yīng)數(shù)據(jù)庫(kù)信息的配置項(xiàng)。Windows機(jī)器在瀏覽器中輸入虛擬機(jī)IP完成Zabbix登錄后,Zabbix部分顯示界面如圖4所示。
2機(jī)器人狀態(tài)數(shù)據(jù)的獲取與通信
2.1Khepera IV機(jī)器人簡(jiǎn)介
Khepera IV是一款高端桌面機(jī)器人。其周身設(shè)置有8個(gè)紅外傳感器,用于感知距離、環(huán)境光線或者測(cè)量障礙物,范圍從2 mm~250 mm,每個(gè)傳感器間隔45°。同時(shí)配有5個(gè)超聲波傳感器(左右各2個(gè),正前方1個(gè)),用于近距離探測(cè),范圍從250 mm~2 500 mm。正前方有1個(gè)彩色攝像頭。此外還有三軸陀螺儀、三軸加速度計(jì)等傳感器、直流有刷電機(jī)以及一些開(kāi)源軟件,使人能夠創(chuàng)建復(fù)雜的行為。圖5所示為Khepera IV機(jī)器人的三視圖。
部分組成點(diǎn):1.發(fā)光二極管;2.串行線(S)連接器;
3.復(fù)位按鈕;4.編碼輪來(lái)選擇運(yùn)行模式;5.紅外線接近傳感器;
6.電池充電器插孔;7.開(kāi)關(guān)電池開(kāi)關(guān)?!?/p>
2.2機(jī)器人運(yùn)行狀態(tài)參數(shù)
Khepera IV機(jī)器人需要在Linux環(huán)境下進(jìn)行代碼編譯,其目前能夠支持的功能有行進(jìn)間避障以及定點(diǎn)移動(dòng)等。Khepera IV機(jī)器人通過(guò)自帶的超聲波傳感器和紅外傳感器進(jìn)行測(cè)距,能夠探知與障礙物的距離。機(jī)器人的三種控制方式包括:速度控制、位置控制以及空閑模式。速度值由機(jī)器人的異步電機(jī)所控制,異步電機(jī)的轉(zhuǎn)速采用脈寬調(diào)制(PMW),而機(jī)器人的位置則通過(guò)對(duì)編碼器進(jìn)行脈沖計(jì)數(shù)來(lái)記錄經(jīng)過(guò)的距離。綜上所述,機(jī)器人的運(yùn)行狀態(tài)參數(shù)包括:速度、位置、與障礙物的距離、電池的使用情況、CPU負(fù)載程度等。
2.3數(shù)據(jù)采集與通信
2.3.1SSH協(xié)議簡(jiǎn)介
SSH(Secure Shell)協(xié)議主要用于在非安全的網(wǎng)絡(luò)環(huán)境中進(jìn)行安全的遠(yuǎn)程登錄和其他網(wǎng)絡(luò)服務(wù)[4]。與其他非安全性的網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議FTP、Telnet等不同,SSH協(xié)議提供了一套基于公鑰與私鑰的認(rèn)證系統(tǒng),用于服務(wù)器的遠(yuǎn)程登錄。
SSH協(xié)議結(jié)構(gòu)包括傳輸層協(xié)議、用戶認(rèn)證層協(xié)議、連接層協(xié)議。基于上述體系結(jié)構(gòu)以及SSH協(xié)議成熟的密鑰體系,SSH的連接建立過(guò)程為:
?。?)協(xié)議版本協(xié)商
首先需要統(tǒng)一兩個(gè)連接方的協(xié)議版本以及軟件版本。此過(guò)程基于TCP協(xié)議,由發(fā)出連接請(qǐng)求方打開(kāi)22號(hào)端口,等待被請(qǐng)求方的連接,完成TCP連接后,由請(qǐng)求方發(fā)出TCP請(qǐng)求,用于統(tǒng)一協(xié)議版本等,被請(qǐng)求方響應(yīng)TCP請(qǐng)求,返回協(xié)議版本號(hào)等。
?。?)加密算法統(tǒng)一
協(xié)議版本統(tǒng)一后需要進(jìn)行加密算法的確認(rèn)與統(tǒng)一,雙方將自己支持的公鑰算法列表、加密算法列表發(fā)送給對(duì)方,雙方通過(guò)DH交換算法協(xié)商出統(tǒng)一的算法列表,用于會(huì)話加密。
?。?)用戶認(rèn)證
由請(qǐng)求方發(fā)送本方的用戶名以及認(rèn)證方法等作為報(bào)文內(nèi)容發(fā)送給被請(qǐng)求方,被請(qǐng)求方使用該認(rèn)證方法進(jìn)行認(rèn)證,若認(rèn)證失敗,則返回失敗內(nèi)容進(jìn)行再次認(rèn)證,直到認(rèn)證成功或者認(rèn)證超時(shí)。
?。?)會(huì)話請(qǐng)求與交互
完成用戶認(rèn)證與請(qǐng)求方的會(huì)話請(qǐng)求后,建立SSH連接的雙方可以在加密模式下進(jìn)行數(shù)據(jù)傳輸。
2.3.2數(shù)據(jù)通信的實(shí)現(xiàn)
通過(guò)在機(jī)器人操作系統(tǒng)中設(shè)置基于本地路由器的WiFi模式,采用secureCRT通過(guò)SSH協(xié)議登錄到機(jī)器人操作系統(tǒng),完成由機(jī)器人運(yùn)行代碼保存在機(jī)器人操作系統(tǒng)上的機(jī)器數(shù)據(jù)的傳輸。
由于機(jī)器人的操作系統(tǒng)不支持Zabbixagent端的安裝,所以無(wú)法直接將運(yùn)行數(shù)據(jù)傳遞給Zabbixserver端,在機(jī)器人的操作系統(tǒng)上編寫(xiě)代碼,使用sz下載命令將機(jī)器人的運(yùn)行數(shù)據(jù)下載到本地的Windows機(jī)器上,采用Linux系統(tǒng)的crontab定時(shí)任務(wù),定時(shí)執(zhí)行sz下載命令,將機(jī)器人運(yùn)行狀態(tài)文件從遠(yuǎn)程登錄終端定時(shí)下載到監(jiān)控客戶端,并且更新監(jiān)控客戶端上已有的機(jī)器人運(yùn)行狀態(tài)數(shù)據(jù)文件。通過(guò)以上方法完成機(jī)器人的數(shù)據(jù)采集以及數(shù)據(jù)通信。
3數(shù)據(jù)監(jiān)控的實(shí)現(xiàn)
在完成了監(jiān)控系統(tǒng)的搭建以及數(shù)據(jù)的采集和傳輸后,需要將傳輸?shù)奖镜豔indows機(jī)器上的運(yùn)行數(shù)據(jù)作為監(jiān)控項(xiàng)傳遞給Windows機(jī)器上的作為Zabbixserver端的Linux虛擬機(jī),以實(shí)施監(jiān)控。采用Zabbixagent數(shù)據(jù)通信方式對(duì)Windows機(jī)器采集到的機(jī)器人運(yùn)行數(shù)據(jù)進(jìn)行監(jiān)控。由于Zabbixserver端所在的虛擬機(jī)與Zabbixagent所在的Windows機(jī)器處在同一網(wǎng)段下,所以server端與agent可以基于TCP/IP協(xié)議進(jìn)行數(shù)據(jù)交互。完成在Windows機(jī)器上Zabbixagent端的安裝與啟動(dòng)后,在server端的Web頁(yè)面添加監(jiān)控,在Web端的configuration下的host中選擇Create host,創(chuàng)建被監(jiān)控主機(jī),IP地址選擇本地的Windows機(jī)器IP地址,選擇剛創(chuàng)建的監(jiān)控主圖6Zabbix添加監(jiān)控項(xiàng)流程圖機(jī)中的item項(xiàng),創(chuàng)建監(jiān)控項(xiàng)。Zabbix中添加監(jiān)控的流程如圖6所示。
表1所示為監(jiān)控項(xiàng)電池余量的創(chuàng)建實(shí)例。
需要在Zabbix_agentd.conf文件中配置特定腳本代碼實(shí)現(xiàn)對(duì)監(jiān)控客戶端自定義監(jiān)控項(xiàng)的數(shù)據(jù)監(jiān)控,配置如下:
UserParameter=robot[*]
C:\\Python26\\python
C:\\Users\\Administrator\\Desktop\\robot.py $1
其中,robot[*]代表監(jiān)控項(xiàng)名稱(chēng),*表示能夠傳入任意參數(shù)。由于機(jī)器人的運(yùn)行狀態(tài)數(shù)據(jù)以鍵值對(duì)的形式保存在本地,采用python腳本以正則匹配的方式讀取各項(xiàng)的值,返回給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所示為機(jī)器人在某一時(shí)刻運(yùn)行狀態(tài)的數(shù)據(jù)及說(shuō)明。
4監(jiān)控結(jié)果
4.1機(jī)器人各個(gè)運(yùn)行參數(shù)的監(jiān)控顯示
機(jī)器人運(yùn)行了20 min左右,各個(gè)參數(shù)的監(jiān)控?cái)?shù)據(jù)如圖7~圖10。
4.2監(jiān)控結(jié)果分析
本文測(cè)試選取了監(jiān)控項(xiàng)中最具代表性的4項(xiàng),即機(jī)器人的電池余量、機(jī)器人右輪的行駛速度、與左邊方向的障礙物距離以及機(jī)器人右輪行駛的總里程數(shù)。其中電池余量隨著機(jī)器人的運(yùn)行顯示逐漸減少的趨勢(shì);車(chē)輪的速度由于行駛過(guò)程中會(huì)出現(xiàn)避障、轉(zhuǎn)彎等運(yùn)行方式,所以速度呈隨機(jī)性分布,但變化范圍不大;由于機(jī)器人的初始位置處于障礙物中,所以超聲波傳感器探測(cè)的距離值較小,此時(shí)的速度也較?。挥逸喌目偫锍虜?shù)是由機(jī)器人內(nèi)部的編碼器脈沖計(jì)數(shù)所統(tǒng)計(jì),表示的是機(jī)器人從初始狀態(tài)開(kāi)始的行駛距離,所以呈遞增趨勢(shì)。監(jiān)控?cái)?shù)據(jù)每1 min刷新一次,實(shí)時(shí)性高,與實(shí)際情況相符,達(dá)到了監(jiān)控預(yù)期效果。
5結(jié)束語(yǔ)
自動(dòng)化、智能化已經(jīng)滲透到了各個(gè)領(lǐng)域,監(jiān)控系統(tǒng)作為自動(dòng)化的一雙眼睛,可以第一時(shí)間發(fā)現(xiàn)故障,告知相關(guān)工作者。本文采用傳統(tǒng)的網(wǎng)絡(luò)監(jiān)控軟件Zabbix實(shí)現(xiàn)對(duì)可移動(dòng)機(jī)器人的運(yùn)行狀態(tài)的數(shù)據(jù)監(jiān)控,通過(guò)良好的數(shù)據(jù)圖表顯示以完成對(duì)機(jī)器人性能的監(jiān)控,達(dá)到對(duì)機(jī)器人透明、高效的使用。本文提出的方法可以移植到具有操作系統(tǒng)的黑盒型智能設(shè)備、工業(yè)機(jī)器,還可以集中監(jiān)控機(jī)器人集群,對(duì)于高效、快速地定位故障、排除故障,提高系統(tǒng)性能具有重要的意義。
參考文獻(xiàn)
[1] 劉磊.工業(yè)機(jī)器人遠(yuǎn)程診斷服務(wù)系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)[D].大連:大連理工大學(xué),2014.
?。?] 張朝陽(yáng). 利用Zabbix進(jìn)行系統(tǒng)和網(wǎng)絡(luò)管理[J].計(jì)算機(jī)時(shí)代,2008(10):1922.
?。?] 姚仁捷.Zabbix監(jiān)控系統(tǒng)深度實(shí)踐[M].北京:電子工業(yè)出版社,2014.
?。?] 張國(guó)防. 基于SSH協(xié)議的Linux遠(yuǎn)程管理[J].計(jì)算機(jī)安全,2014(12):3739.