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