機器人研究是當今世界的一個前沿課題,它涉及電子、計算機和控制論等諸方面的知識。網(wǎng)絡機器人是一種人們能夠通過internet對其進行遠端控制的機器人。它除了具有傳統(tǒng)機器人的一些特點外,還具有傳統(tǒng)機器人所不具備的、能與外界進行良好信息交互的特點。它除了有本地的內(nèi)部控制外,還有遠程的外部控制,因而它能夠幫助人們較好地完成一些不易完成的工作,可以廣泛應用于探險、醫(yī)療、軍事等多個領(lǐng)域,具有較好的應用前景。pc機的bbbbbbs平臺是當今較為通用的操作平臺,許多硬件廠商都提供了基于該平臺的硬件產(chǎn)品的api函數(shù)庫,為機器人硬件接口軟件的開發(fā)帶來了方便,因而它算是機器人研究上的一個可選的軟件平臺?;谝陨戏治?,我們選用相關(guān)硬件產(chǎn)品,組建了一個基于bbbbbbs平臺的網(wǎng)絡機器人基礎框架,設計了該網(wǎng)絡機器人的遠程控制系統(tǒng),采用了ava語言進行開發(fā)。
2理論依據(jù)要實現(xiàn)網(wǎng)絡機器人的遠程控制,首先就要有一個暢通的網(wǎng)絡環(huán)境,以保證數(shù)據(jù)的實時、準確傳輸。其中包括用于控制機器人運動的指令數(shù)據(jù)、機器人運動狀態(tài)的反饋信息和機器人所處三維環(huán)境的圖像信息數(shù)據(jù)。除了硬件的保證外,還需要有軟件的保證,要采用面向連接的協(xié)議(tcp協(xié)議)來封裝所需傳輸?shù)臄?shù)據(jù),進一步保證數(shù)據(jù)的準確、可靠。同時,由于網(wǎng)絡所固有的并發(fā)性特點,使得如果沒有較好的判斷機制,就可能產(chǎn)生多用戶同時控制的控制沖突問題,因而在控制系統(tǒng)設計上就必須解決一致性的問題,即保證當一個用戶在對此機器人實施控制時,其余用戶只可獲得其周圍環(huán)境的三維圖像信息,而不能對它進行重復控制。
硬件方面,機器人應有一個良好的與外界相連的網(wǎng)絡環(huán)境,并且由于其可運動性,在本項目采用pc機配上無線網(wǎng)卡,與本校的高速校園網(wǎng)相連,以保證遠程可控。
再加上用于進行圖像采集的攝像頭和機器人所必須的步進電機等就組成一個簡單網(wǎng)絡機器人硬件平臺。軟件設計方面,利用tcp的子協(xié)議http進行數(shù)據(jù)的傳輸,利用rtp協(xié)議進行圖像的傳輸。同時在服務器端采用專用的用戶跟蹤機制來解決控制的一致性問題。
為了使所開發(fā)的網(wǎng)絡機器人控制系統(tǒng)軟件具有通用性和開放性,我們采用b/s編程模式進行開發(fā)。使得在控制端,只要使用通用的瀏覽器就可以輕松地實現(xiàn)機器人的遠程控制。服務器端主要負責控制信號的解釋、運動狀態(tài)信息的收集與反饋,圖像信息的采集和控制權(quán)的管理。它們之間的數(shù)據(jù)采用http協(xié)議的cgi標準進行編碼和傳輸。圖像信息采用h. 261協(xié)議進行壓縮后,用rtp協(xié)議進行單向傳輸。其結(jié)構(gòu)如所示。
(session)來實現(xiàn)的。當瀏覽器對服務器發(fā)出一個新的請求時,在服務器端就會為這個請求分配一個惟一的se-sion進程號用來管理這個交互過程。僅當這個交互過程完成后,相應的進程才被服務器程序收回。因而我們就可以利用這些session進程號來進行控制權(quán)的管理。
務器程序中定義兩1個全局'變量co啦泣electronic個是sun公司的avaapplet技術(shù)。由于大多數(shù)瀏覽器都自帶了ava虛擬機(avavtualmachine,vm),它能夠保證avaapplet的正常運行。因而在此項目中使用applet技術(shù)開發(fā)控制臺,與此對應,在服務器端使用servlet技術(shù)來實現(xiàn)。由于ava語言在編寫硬件控制程序方面存在不足,使得步進電機控制卡的程序只能采用c語言進行編寫,因而就出現(xiàn)了兩種語言之間的互相調(diào)用的問題。對這個問題的解決,可用ava語言中的ni(ava 3軟件實現(xiàn)本控制系統(tǒng)包括三大部分:控制臺。它是一個用于在遠程對機器人進行控制的操作臺,負責控制指令的發(fā)送和接收從服務器端反饋來的信息,是網(wǎng)絡機器人與控制人員進行交流的接口。在本項目中,我們使用ava語言的applet技術(shù)進行控制臺的編寫。創(chuàng)建cortiolpanel類繼承applet類,在其上添加用于控制機器人前進、后退等運動狀態(tài)的按鈕。
這些按鈕的標題分別對應該按鈕的控制指令,其鼠標事件處理程序與一個負責信息管理的函數(shù)相連。該函數(shù)利用一個bbb類對控制人員所發(fā)出的控制指令進行編碼后發(fā)送到服務器端,并接收和顯示來自服務器的反饋數(shù)據(jù)。
控制服務器。它主要負責控制權(quán)的管理和相關(guān)信息的收發(fā)工作。創(chuàng)建一個contiolservei類以繼承httpservlet類,在這個類中分別用httpservletrequest和httpservletresponse來管理信息的父互。用httpsession類來實現(xiàn)用戶跟蹤,實現(xiàn)控制權(quán)的管理。具體是用兩個全局變量來處理的,一個用于記錄當前進行控制的進程號,另一個用來記錄當前電機的狀態(tài)(啟動或停止),在對從遠端傳來的控制指令進行處理的程序段中,用兩個臨時變量分別存儲當前發(fā)出控制指令的進程號與相應的電機指令。再加上一系列的判斷語句就可以實現(xiàn)控制權(quán)的合理管理。
控制卡接口程序。用來向步進電機控制卡發(fā)送指令的部分,它由一個ava類和一個c動態(tài)庫組成。ava類來接收由控制服務器發(fā)送的數(shù)據(jù),并用一個私有函數(shù)來調(diào)用按ni標準編寫的c動態(tài)庫,實現(xiàn)硬件控制。
本系統(tǒng)中還包括一個圖像傳輸部分,它是用ava中的mf(avamediaframe)來實現(xiàn)的。至此就完成了整個系統(tǒng)的實現(xiàn)。其系統(tǒng)結(jié)構(gòu)如所示。
4程序代碼在本系統(tǒng)中為了實現(xiàn)控制的一致性,首先在控制服bbbbbboldld;記錄具有控制權(quán)的進程號slringoldslate;記錄電機當前的狀態(tài)在初始化程序段nil(中,對這兩個變量進行賦值odid=newslring(new);odslale=在處理客戶端請求的過程doget中定義兩臨時變量bbbbbbtmpld;記錄當前控制臺端請求的進程號bbbbbb記錄當前控制臺請求的狀態(tài)指令調(diào)用hllpservletreqllsel的getsession方法取得當前請求進程,并用getld方法得到其進程號。
而后書寫判斷語句v進行電機控制,啟動電機odstate.lmpslale;進行電機控制,停止電機給控制臺一個電機己被其它有控制的信息這樣就可以實現(xiàn)控制權(quán)的有效管理,保證控制的一致性問題。
5運行效果將以上所述的一系列類和動態(tài)庫編譯、鏈接后置于支持avaservlet的服務器軟件所要求的相應目錄中,其中動態(tài)庫置于bbbbbbs目錄或bbbbbbs/system32目錄下。啟動該servlet服務器和視頻采集編碼服務器。在客戶端的瀏覽器中調(diào)用控制臺網(wǎng)頁,便會在瀏覽器中出現(xiàn)一個控制臺和一個機器人所在環(huán)境的三維圖像。進行測試發(fā)現(xiàn)能滿足設計要求。整個控制具有以下特點:良好的交互性。本系統(tǒng)采用可視化的控制臺進行遠程控制,同時機器人的運動狀態(tài)會顯示于瀏覽器的狀態(tài)欄上。這樣控制人員就可通過按下按鈕與放開按鈕來實現(xiàn)網(wǎng)絡機器人的運動與停止。
控制的一致性。當一個用戶在對機器人進行控制時,另一用戶一旦發(fā)出控制指令,將會在其瀏覽器的狀態(tài)欄內(nèi)看到機器人已被其它用戶控制的信息提示。
控制系統(tǒng)的開放性。此系統(tǒng)采用ava語言進行開發(fā)的,不同的類完成不同的功能,這樣就可以通達開發(fā)新的類來實現(xiàn)功能的擴充與更新。










