夏永鋒
機(jī)器人技術(shù)的出現(xiàn)和發(fā)展,不但使傳統(tǒng)的工業(yè)生產(chǎn)面貌發(fā)生根本性變化,而且將對人類社會(huì)產(chǎn)生深遠(yuǎn)的影響。就目前的機(jī)器人技術(shù)水平而言,單機(jī)器人在信息的獲取,處理及控制能力等方面都是很有限的。研究者則考慮由多個(gè)機(jī)器人組成的群體系統(tǒng)通過協(xié)作來完成單機(jī)器人無法或難以完成的工作。然而,目前群體機(jī)器人的理論技術(shù)還很難實(shí)現(xiàn)一種全自主式的群體機(jī)器人系統(tǒng),一定的人為介入是極為必要的,以協(xié)助群體機(jī)器人系統(tǒng)實(shí)現(xiàn)功能初始化,故障恢復(fù)以及應(yīng)對復(fù)雜環(huán)境等。
從1993年水星計(jì)劃[3]開始研究人員將萬維網(wǎng)應(yīng)用于機(jī)器人控制,到現(xiàn)在將云計(jì)算、Web Service等新技術(shù)與機(jī)器人控制相結(jié)合[1][2],研究方向覆蓋新型的機(jī)器人遠(yuǎn)程控制網(wǎng)絡(luò)架構(gòu)[4]、機(jī)器人群體控制無線網(wǎng)絡(luò)協(xié)議優(yōu)化[5]等方面,表明機(jī)器人控制技術(shù)研究熱點(diǎn)正逐步從單機(jī)器人轉(zhuǎn)向機(jī)器人群體,并始終與最新的網(wǎng)絡(luò)技術(shù)相結(jié)合。
基于 Web 的遠(yuǎn)程控制技術(shù)打破了傳統(tǒng)控制技術(shù)空間距離上的限制,依托因特網(wǎng)的廣泛應(yīng)用,使得人們能夠隨時(shí)隨地地訪問機(jī)器人系統(tǒng),并且可以在任何平臺下被訪問,只需該平臺下裝有合適的 Web 瀏覽器。另外,以Web Server為中心,降低了維護(hù)費(fèi)用,對系統(tǒng)的修改只需在 Web Server上進(jìn)行,無需在客戶端做任何修改,從而提高系統(tǒng)隨著需求的變更快速更新的能力。
作為機(jī)器人控制系統(tǒng),本系統(tǒng)將控制分為3個(gè)層次:基本控制、精確控制、批量指令控制。3個(gè)層次的控制分別對應(yīng)不同的控制需求。
基本控制部分將基本控制操作抽象為圖標(biāo),只要點(diǎn)擊圖標(biāo)就能完成相應(yīng)的控制操作?;究刂撇僮鞯膶ο笫侨后w機(jī)器人中的所有成員,功能包含:查詢-獲取機(jī)器人的電量,當(dāng)前運(yùn)動(dòng)速度等信息,運(yùn)動(dòng)、向前、向后、左轉(zhuǎn)、右轉(zhuǎn)、停止- 控制機(jī)器人的運(yùn)動(dòng)以及運(yùn)動(dòng)方向,計(jì)數(shù) – 統(tǒng)計(jì)群體機(jī)器人的數(shù)量以及編號。
精確控制部分根據(jù)目標(biāo)對象分為群體與單個(gè)兩部分,兩者的區(qū)別在于單個(gè)需要用戶選擇具體的單個(gè)機(jī)器人編號,兩者都可以選擇具體指令和特定指令的參數(shù)。
批量指令控制部分允許用戶編寫簡單的程序,然后提交到server,由server來解釋程序,轉(zhuǎn)換成控制指令序列發(fā)送到機(jī)器人。批量指令的目的是為了提高控制的效率,減少用戶的操作工作量。
基于Web的應(yīng)用通常都是Browser/Server模式。Browser端和Server端作為相互獨(dú)立的兩個(gè)部分通過HTTP協(xié)議進(jìn)行通信,其過程分為4步:建立連接,發(fā)送請求,發(fā)送應(yīng)答和關(guān)閉連接。整個(gè)過程是個(gè)請求/應(yīng)答的模式,如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)模型圖
基于Web的機(jī)器人遠(yuǎn)程控制系統(tǒng)中,Server是一個(gè)數(shù)據(jù)中轉(zhuǎn)站,Browser發(fā)起的數(shù)據(jù)請求最終需要作用于機(jī)器人。除了Browser與Server之間的交互,還有Server與機(jī)器人之間的交互。
本系統(tǒng)中 Server部分起到核心作用,負(fù)責(zé)接收來自用戶Browser的數(shù)據(jù),對數(shù)據(jù)進(jìn)行一定的轉(zhuǎn)換預(yù)處理,特別是對于批量指令數(shù)據(jù),需要進(jìn)行程序的解釋,生成控制指令序列,然后將經(jīng)過處理的指令數(shù)據(jù)寫到某個(gè)串口,該串口上通過USB連接著一個(gè)無線模塊,機(jī)器人上使用的是相同的無線模塊,在Server寫入串口的數(shù)據(jù)量達(dá)到32字節(jié)后,無線模塊就將數(shù)據(jù)廣播出去,機(jī)器人上的無限模塊接收到數(shù)據(jù),發(fā)出中斷信號,將數(shù)據(jù)存入緩沖區(qū),機(jī)器人應(yīng)用程序從緩沖區(qū)中讀出數(shù)據(jù)進(jìn)行解析,執(zhí)行相應(yīng)的操作。
為了減少網(wǎng)絡(luò)數(shù)據(jù)傳輸量,減小機(jī)器人對于控制指令的解析工作,以及簡化Web Server將批量指令程序轉(zhuǎn)化成控制指令序列,需要對控制指令進(jìn)行編碼。
由于無線模塊的數(shù)據(jù)發(fā)送緩沖區(qū)為32個(gè)字節(jié),僅當(dāng)緩沖區(qū)滿時(shí),才會(huì)將數(shù)據(jù)發(fā)送出去。如果緩沖區(qū)中的數(shù)據(jù)未滿32字節(jié),那么超過100ms后會(huì)被自動(dòng)清除,所以將控制指令編碼的長度設(shè)為32字節(jié)。
根據(jù)總體功能設(shè)計(jì),指令中的信息應(yīng)包括小車編號,指令類型,指令參數(shù)3個(gè)部分。另外,為了提高系統(tǒng)的可靠性,對指令增加版本號信息。32字節(jié)編碼的每個(gè)字節(jié)存儲(chǔ)一個(gè) char類型數(shù)據(jù)。由于目前機(jī)器人數(shù)量以及指令數(shù)目都較少,每個(gè)字節(jié)存儲(chǔ)一個(gè)char類型字符數(shù)據(jù)可以滿足需求。
第1,2字節(jié)存儲(chǔ)小車編號,第1字節(jié)為小車編號的十位數(shù)字的字符,第2字節(jié)為個(gè)位數(shù)字的字符,例如:小車的編號為12,則第1,2字節(jié)分別為’1’,’2’,小車的編號未超過10時(shí),則第1字節(jié)為’0’。
第3,4字節(jié)為指令的編號,存儲(chǔ)方式與小車編號一致。對于控制指令的編號如:查詢 - 'info': '1', 運(yùn)動(dòng) - 'run': '2',向前 - 'forward': '3', 向后 - 'backward': '4', 左轉(zhuǎn) - 'turnleft':'5', 右轉(zhuǎn) - 'turnright': '6', 停止 - 'stop': '7', 計(jì)數(shù) - 'count': '8'。
第 5,6,7字節(jié)為指令的參數(shù),參數(shù)主要是指運(yùn)動(dòng),向前,向后,停止四個(gè)指令可搭配時(shí)間或者距離參數(shù)。
第8,9,10,11字節(jié)依次存儲(chǔ)版本號的千,百,十,個(gè)位。余下的所有字節(jié)置為’