郝昕玉 姬長英
摘要 介紹了一種基于時間序列理論建立的故障檢測模塊。該檢測模塊可用于自主移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)的故障診斷。檢測模塊的設(shè)計思想就是通過對導(dǎo)航系統(tǒng)中定位傳感器GPS正常和故障情況下輸出的隨機(jī)漂移信號進(jìn)行分析,得到一種判斷GPS性能故障的規(guī)律,即建立AR模型進(jìn)行時間序列分析。利用K-L信息測度函數(shù)作為判別函數(shù)來檢測系統(tǒng)故障。
關(guān)鍵詞 導(dǎo)航系統(tǒng);故障檢測模塊;時間序列
中圖分類號 S24 文獻(xiàn)標(biāo)識碼 A 文章編號 0517-6611(2015)34-334-03
自主移動農(nóng)業(yè)機(jī)器人是電池驅(qū)動,有4只輪子,能自由行走在農(nóng)田里的一種移動平臺。并且能夠自動完成相關(guān)指令,動作或者任務(wù)的一類輪式農(nóng)業(yè)機(jī)器人。這類農(nóng)業(yè)機(jī)器人用途很廣,發(fā)展前景很好。比如在農(nóng)田水果采摘中,利用視覺系統(tǒng)、全球定位系統(tǒng)等完成自主導(dǎo)航,通過機(jī)械手設(shè)備摘取果實,從而完成農(nóng)田采摘的作用。
在研究自主移動農(nóng)業(yè)機(jī)器人的領(lǐng)域當(dāng)中,很多研究的前提都是假設(shè)農(nóng)業(yè)機(jī)器人系統(tǒng)能工作在理想狀態(tài)中。但實際上自主移動農(nóng)業(yè)機(jī)器人在田地的真實環(huán)境中工作,由于工作環(huán)境復(fù)雜,難以預(yù)料的情況較多,很容易出現(xiàn)故障, 尤其是其機(jī)械部件和控制系統(tǒng)極易出現(xiàn)故障。故障的類型很多,以故障產(chǎn)生的部位來分,可以分為零部件故障、執(zhí)行器故障和傳感器故障。以分析自主移動農(nóng)業(yè)機(jī)器人本身的特點,傳感器故障最為常見,比如強(qiáng)光反射、多種多樣的光照條件、陰影、雜物和路面不平整等因素在不同程度上會影響視覺傳感器的精度,導(dǎo)致其出現(xiàn)不可預(yù)測的故障;多路徑、大樹、天氣變化、高層建筑物以及其本身的故障等引起的測量誤差,都將影響GPS提供的信息喪失正確性。 這些原因引起的故障,人沒有辦法直接進(jìn)行干預(yù)或者是直接干預(yù)的代價太高。如果這些故障沒有得到及時處理或者是沒有被檢測出來,那么自主移動農(nóng)業(yè)機(jī)器人將會以一種危險的方式或者不可預(yù)測的方式運(yùn)行。這不僅會使自主移動農(nóng)業(yè)機(jī)器人的使用壽命縮短,甚至?xí)棺灾饕苿愚r(nóng)業(yè)機(jī)器人不能正常工作,最終很可能產(chǎn)生非常嚴(yán)重的事故。所以必須安裝機(jī)器人導(dǎo)航系統(tǒng)故障檢測模塊,以提高其作業(yè)的安全性。為此介紹了一種適用于自主移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)的故障檢測模塊。
1 工作原理
在沒有研制出檢測模塊之前,自主移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)采用傳統(tǒng)的故障檢測模式,通過實際值與設(shè)定的閾值進(jìn)行比較,若超出允許范圍,則認(rèn)為輸出值出現(xiàn)異?;蚬收希环粗?,認(rèn)為工作正常。顯而易見,這種故障檢測和診斷方式不但準(zhǔn)確性和可控性較差,而且對于某些故障仍無法檢測。另外,定位傳感器GPS正常工作時的輸出信號并不是在某一狀態(tài)下維持一個固定值不變,且由于受到常值漂移及外界干擾等因素的影響,其信號特征比較復(fù)雜,因此傳統(tǒng)的故障檢測方式準(zhǔn)確率不高。為達(dá)到對其進(jìn)行性能檢測和故障診斷的目的,設(shè)計并研制了定位導(dǎo)航系統(tǒng)的專用檢測模塊。
故障檢測模塊的工作流程如圖1所示。導(dǎo)航系統(tǒng)進(jìn)入將要檢測的狀態(tài)時,定位導(dǎo)航系統(tǒng)的專用檢測模塊通過RS-232串行口向自主移動農(nóng)業(yè)機(jī)器人的導(dǎo)航系統(tǒng)發(fā)送各種檢測指令,定位導(dǎo)航系統(tǒng)隨機(jī)進(jìn)入相應(yīng)的檢測狀態(tài),同時把監(jiān)測到的數(shù)據(jù)傳到導(dǎo)航系統(tǒng)的專用檢測模塊,由檢測模塊完成數(shù)據(jù)的分析、處理、判斷。檢測過程中,工控機(jī)通過中斷控制方式接收命令、采集數(shù)據(jù)、對數(shù)據(jù)處理及判斷;檢測過程由工控機(jī)自動完成,無需人工干預(yù)。
2 硬件配置
工業(yè)控制計算機(jī)作為整個自主移動農(nóng)業(yè)機(jī)器人系統(tǒng)的控制中心,主要任務(wù)是負(fù)責(zé)各種數(shù)據(jù)的傳輸和相關(guān)處理,比如處理各種圖像數(shù)據(jù)、采集編碼器等傳感器的信息、傳送控制命令等,因此對于硬件的配置有很高的要求。自主移動農(nóng)業(yè)機(jī)器人系統(tǒng)選用了臺灣研華公司生產(chǎn)的工業(yè)控制計算機(jī)IPC510,主要配置:
CPU類型 Intel 奔騰4 2.4 GHz;
硬盤的容量80 GB;
內(nèi)存的容量 512 MB;
顯存128 MB;
其硬件組成如圖2所示。
實現(xiàn)田間自主導(dǎo)航的關(guān)鍵問題是系統(tǒng)的供電問題,自主移動農(nóng)業(yè)機(jī)器人的電源是由3個蓄電池組成,如圖3所示。采用一塊獨(dú)立的12 V、60 AH鉛酸蓄電池給工控機(jī)和下位機(jī)電動機(jī)控制器等微電子部分供電,避免驅(qū)動系統(tǒng)對控制系統(tǒng)的電磁干擾,自主移動農(nóng)業(yè)機(jī)器人工作時通過逆變器將蓄電池的直流電轉(zhuǎn)換為交流電后供給工業(yè)控制計算機(jī);將其他兩個12 V、100 AH鉛酸蓄電池進(jìn)行串聯(lián),輸出電壓為24 V,給功率消耗大的8個電動機(jī)供電。
圖3 電源模塊
3 軟件設(shè)計
自主移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)故障檢測模塊的軟件設(shè)計是基于Windows平臺的Visual C++6.0和MATLAB7.0設(shè)計完成的。1984年,Math Works 公司推出的圖像處理及數(shù)值計算軟件即MATLAB軟件。MATLAB軟件可以實現(xiàn)圖像處理、信號處理、自動控制、偏微分方程數(shù)值解、統(tǒng)計、優(yōu)化、數(shù)值分析、等若干領(lǐng)域的圖形顯示和計算功能。其中集成的控制系統(tǒng)工具箱提供了有效的方法和途徑可以進(jìn)行分析和設(shè)計各種復(fù)雜的控制系統(tǒng)。在開始編譯程序之前,必須正確設(shè)置VC的編譯環(huán)境。
(1)設(shè)置 Visual C++6.0 的編譯環(huán)境:點擊菜單Tools/Options,打開Visual C++6.0設(shè)置屬性頁,進(jìn)入Directories頁面,在Show directories for下拉菜單中選擇Include Files。添加路徑為C:Program Files\Matlab704\extern\include(在Matlab的安裝路徑下),再選擇下拉列表中的Library Files。添加路徑為C:Program Files\Matlab704\extern\lib\win32\microsoft\msvc60(在Matlab的安裝路徑下)。編譯環(huán)境設(shè)置好之后,以后使用中無需重新設(shè)置。
(2)庫文件的添加:點擊菜單Project/settings,進(jìn)入Link頁面,在Object/Library/Modules框中,添加庫文件名,即libmx.lib、libmat.lib、libeng.lib。對于每個新的工程文件都要單獨(dú)添加庫文件。
(3)程序在使用engine函數(shù)的頭文件,必須包含2個文件,即# include “engine.h”和# include “stdafx.h”。
(4)在應(yīng)用程序中,添加調(diào)用Matlab引擎的程序代碼:
void matlab_engine∷OnButton1()
{
// TODO:Add your control notification handler code here
Engine *ep;
{ If(?。╡p=engOpen(NULL))) //打開MATLAB引擎
∷MessageBox(NULL,"Can start the MATLAB engine","VC調(diào)用matlab engine",MB_OK);
……
engEvalString(ep,"t=1:1:300;t=t;");
engEvalString(ep,"y=y;");
engEvalString(ep,"D=dataprocess(t,y);");
……
∷MessageBox((HWND)NULL,(LPSTR)buffer,(LPSTR)"MATLAB-whos",MB_OK);
D=engGetVariable(ep,"D");
engClose(ep);
}
Dreal=mxGetPr(D);
sprintf(buffer,"D=%f",Dreal[1]);
∷MessageBox((HWND)NULL,(LPSTR)buffer,(LPSTR)"Engwindemo.c",MB_OK);
mxDestroyArray(y);
}
(5)程序運(yùn)行的界面與功能:這里只是采用無故障樣本數(shù)據(jù)對程序進(jìn)行演示。點擊“載入路徑”,軟件將自動輸入事先保存在記事本中的樣本數(shù)據(jù)。該記事本與軟件在同一目錄下。程序的界面如圖4所示。點擊自主模式,在運(yùn)行過程中,將調(diào)用MATLAB程序,對數(shù)據(jù)進(jìn)行故障診斷,診斷結(jié)果如圖5所示。
圖4 程序運(yùn)行界面
圖5 程序運(yùn)行結(jié)果
這里D表示參考?xì)埐钚蛄衶ωt}R和殘差序列{ωt}RT之間的信息距離。這里D=0,表示待檢測的時間序列所描述的工作狀況是正常的。和之前所選擇的無故障樣本數(shù)據(jù)對程序進(jìn)行演示是一致的。
4 結(jié)語
故障檢測模塊的設(shè)計成功,解決了自主移動農(nóng)業(yè)機(jī)器人
導(dǎo)航系統(tǒng)故障診斷的難題。故障檢測模塊既可以獲取自主
移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)的狀態(tài)信息數(shù)據(jù)又可以完成系統(tǒng)
的性能分析和故障診斷,還可以保證導(dǎo)航系統(tǒng)的正常工作并
且性能指標(biāo)不受影響。檢測模塊的工作原理為已有設(shè)備的性能檢測和故障診斷提供了一種新思路。
由于自主移動農(nóng)業(yè)機(jī)器人沒有外部測試設(shè)備的檢測接口,目前的故障檢測模塊只能通過串口獲得系統(tǒng)內(nèi)部的信息,一旦系統(tǒng)內(nèi)部的計算機(jī)出現(xiàn)故障,將很難實施故障的診斷。由此得到一個提醒,在設(shè)計某個產(chǎn)品或系統(tǒng)時應(yīng)充分考慮到它的檢測性,預(yù)留檢測接口,盡可能為以后的故障診斷提供必要的條件。
參考文獻(xiàn)
[1] 林昌龍,劉開周.基于貝葉斯估計的水下機(jī)器人羅盤故障檢測[J].控制工程,2015,22(3):559-563.
[2] 張亮,王繼陽.MATLAB與C/C++混合編程[M].北京:人民郵電出版社,2008.
[3] 丁魏,戈振楊,盧衷正.GPS組合模糊控制的農(nóng)田機(jī)器人導(dǎo)航系統(tǒng)設(shè)計[J].農(nóng)機(jī)化研究,2015(9):109-112.
[4] 詹姆斯D·漢密爾頓.時間序列分析[M].斬云匯,等譯.北京:中國社會科學(xué)出版社,1999.
[5] CARLSON J,MURPHY R R.Reliability analysis of mobile robots[C]//Proceedings of the IEEE International Conference on Robotics and Automation.USA:IEEE,2003:274-281.
[6] 趙琳,班鏡超.組合導(dǎo)航聯(lián)邦濾波故障檢測技術(shù)研究[J].遙測遙控,2014,35(2):9-13.
[7] 慕軍營,戚樹,陳軍,等.自動導(dǎo)航系統(tǒng)在農(nóng)業(yè)中的應(yīng)用及果園適用性分析[J].農(nóng)機(jī)化研究,2014(7):6-12.
[8] 蔣美云,郭雷.機(jī)器人導(dǎo)航系統(tǒng)的設(shè)計與開發(fā)[J].計算機(jī)與數(shù)字工程,2014(10):1901-1904.
[9] 郝昕玉.自主移動農(nóng)業(yè)機(jī)器人導(dǎo)航系統(tǒng)的故障診斷技術(shù)研究[D].南京:南京農(nóng)業(yè)大學(xué),2009.
[10] 安丘.農(nóng)業(yè)機(jī)器人視覺導(dǎo)航系統(tǒng)及其光照問題的研究[D].南京:南京農(nóng)業(yè)大學(xué),2008.