


摘要:為了解決遠(yuǎn)程操控服務(wù)型機(jī)器人過程中存在的信息交互問題,本文利用Web Socket傳輸協(xié)議,提出了一種新的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)方案。該交互方式在對機(jī)器人實(shí)施遠(yuǎn)程操控時(shí),能夠?qū)C(jī)器人周圍的環(huán)境和自身狀態(tài)進(jìn)行實(shí)時(shí)自動(dòng)檢測和分析,并通過協(xié)議將其上傳到客戶端,為客戶端遠(yuǎn)程操控機(jī)器人提供數(shù)據(jù)支持,同時(shí),對該交互方式的可行性進(jìn)行測試,結(jié)果證明,該設(shè)計(jì)達(dá)到了可視化實(shí)時(shí)遠(yuǎn)程交互的要求。
關(guān)鍵詞:Web Socket協(xié)議;服務(wù)型機(jī)器人;遠(yuǎn)程控制;交互設(shè)計(jì)
一、引言
針對B/S結(jié)構(gòu)中的客戶端與服務(wù)端兩者之間的數(shù)據(jù)交互連接問題,傳統(tǒng)的方法不能實(shí)現(xiàn)永久性的連接。因此,本文對全雙工通信協(xié)議WebSocket在遠(yuǎn)程交互中的應(yīng)用展開研究。在服務(wù)型機(jī)器人系統(tǒng)的瀏覽器和服務(wù)端之間,只需要保證在設(shè)備通信前完成互相識(shí)別操作,就能夠?qū)崿F(xiàn)雙向數(shù)據(jù)傳輸,且還可以形成永久連接,從而為機(jī)器人的遠(yuǎn)程交互提供更加高效、便捷、及時(shí)的數(shù)據(jù)傳輸交互[1]。
二、WebSocket協(xié)議
TCP協(xié)議,全稱傳輸控制協(xié)議(Transmission Control Protocol),是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它旨在適應(yīng)支持多網(wǎng)絡(luò)應(yīng)用的分層協(xié)議層次結(jié)構(gòu),確保在不同但互連的計(jì)算機(jī)通信網(wǎng)絡(luò)的主計(jì)算機(jī)中的成對進(jìn)程之間提供可靠的通信服務(wù)。WebSocket協(xié)議作為一種基于TCP的持久連接協(xié)議,具有實(shí)時(shí)性強(qiáng)、雙向通信等優(yōu)點(diǎn),為服務(wù)型機(jī)器人的遠(yuǎn)程交互提供了有力的技術(shù)支持,能夠?qū)崿F(xiàn)服務(wù)端和客戶端之間的實(shí)時(shí)數(shù)據(jù)交換,可為服務(wù)型機(jī)器人的遠(yuǎn)程交互設(shè)計(jì)提供解決方案。通過WebSocket協(xié)議,服務(wù)端可以實(shí)時(shí)向客戶端發(fā)送機(jī)器人的狀態(tài)信息,如位置、電量、任務(wù)完成情況等。同時(shí),客戶端也可以向服務(wù)端發(fā)送控制指令,如導(dǎo)航目標(biāo)、語音指令等。這種雙向通信機(jī)制使得服務(wù)型機(jī)器人的遠(yuǎn)程交互更加靈活和高效。
三、基于B/S架構(gòu)的服務(wù)型機(jī)器人控制系統(tǒng)研究
服務(wù)型機(jī)器的遠(yuǎn)程控制離不開客戶端和服務(wù)端的支持。簡單來說,服務(wù)端是系統(tǒng),客戶端則是用戶。因此,想要實(shí)現(xiàn)對服務(wù)型機(jī)器人的遠(yuǎn)程交互控制,就要保障客戶端可以快速、實(shí)時(shí)地接收機(jī)器人系統(tǒng)上傳的周圍環(huán)境情況以及機(jī)器人自身的情況等信息。而WebSocket協(xié)議作為一種基于TCP協(xié)議實(shí)現(xiàn)的全雙工通信協(xié)議,不僅能夠?qū)崿F(xiàn)雙端之間的主動(dòng)信息交互,還能夠?qū)﹄p端之間的數(shù)據(jù)傳輸過程進(jìn)行簡化[2]。
(一)服務(wù)型機(jī)器人客戶端設(shè)計(jì)
針對服務(wù)型機(jī)器人的客戶端設(shè)計(jì),考慮到雙向傳輸?shù)倪B接和主動(dòng)性,選擇采用HTML/S/CSS協(xié)議實(shí)現(xiàn)對客戶端的功能設(shè)計(jì)。這樣一來,在對機(jī)器人進(jìn)行遠(yuǎn)程控制時(shí)客戶端就能夠?qū)崿F(xiàn)向服務(wù)端的主動(dòng)發(fā)生相關(guān)操作指令,完成對服務(wù)端所傳輸數(shù)據(jù)信息的接收,并對接收的信息進(jìn)行分析、整理、處理和執(zhí)行等操作。
(二)服務(wù)型機(jī)器人服務(wù)端設(shè)計(jì)
針對服務(wù)端的設(shè)計(jì),本文采用Python語言進(jìn)行設(shè)計(jì),使得機(jī)器人的服務(wù)端既具備主動(dòng)接收和傳輸數(shù)據(jù)信息的能力,還能夠?qū)崿F(xiàn)對相關(guān)信息的采集、分析和處理、操作等動(dòng)作。
(三)遠(yuǎn)程交互實(shí)現(xiàn)
1.請求分析
在實(shí)際操作過程中,服務(wù)型機(jī)器人的客戶端會(huì)向服務(wù)端發(fā)出操作指令,然后在接收到緩存信息時(shí)對數(shù)據(jù)進(jìn)行讀取并將其存放到Byte數(shù)組當(dāng)中,再將其轉(zhuǎn)化成字符串。最后,通過對字符串?dāng)?shù)據(jù)進(jìn)行分割,從而得到字典(鍵-值)。
2.密鑰生成和操作碼獲取
在交互過程中,客戶端制作一份經(jīng)過密鑰Sec-WebSocket-Key加密處理之后的數(shù)據(jù),并向服務(wù)端發(fā)送連接請求。同時(shí),對接收到的相關(guān)密鑰和固定字符串進(jìn)行處理,并將處理之后的數(shù)據(jù)再次進(jìn)行加密處理,以應(yīng)答的方式傳輸給服務(wù)端。具體操作流程見圖1所示。而服務(wù)端在讀取所接收的數(shù)據(jù)信息時(shí),最先接收到的數(shù)據(jù)為1字節(jié),這時(shí)如果數(shù)據(jù)接收失敗,就會(huì)對存在的問題進(jìn)行處理;反之,如果數(shù)據(jù)信息接收成功,就會(huì)將所接收的數(shù)據(jù)轉(zhuǎn)換成完整的內(nèi)容,并采用二進(jìn)制數(shù)字方式對其進(jìn)行運(yùn)算,從而得到基于WebSocket協(xié)議的操作碼。
3.數(shù)據(jù)長度獲取
當(dāng)服務(wù)端在接收到來自客戶端發(fā)送的數(shù)據(jù)之后,會(huì)對數(shù)據(jù)進(jìn)行整型轉(zhuǎn)換處理,從而得到第一個(gè)掩碼,接著,將得到的數(shù)據(jù)信息和二進(jìn)制數(shù)字進(jìn)行計(jì)算從而得到數(shù)據(jù)。該數(shù)據(jù)的長度即代表數(shù)據(jù)幀的數(shù)據(jù)長度[3]。但如果其長度超過125bit,需要對數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換,則被處理后的數(shù)據(jù)長度,也是數(shù)據(jù)幀的數(shù)據(jù)長度。
4.數(shù)據(jù)讀取和發(fā)送
針對數(shù)據(jù)的讀取過程,由服務(wù)端先對掩碼的位置進(jìn)行判斷和配置、解密,從而獲得客戶端的數(shù)據(jù)[4]。反之,則可以直接實(shí)現(xiàn)對所獲得數(shù)據(jù)的讀取操作。同時(shí),服務(wù)端會(huì)先將所需要發(fā)送的數(shù)據(jù)進(jìn)行轉(zhuǎn)換和處理,然后對待發(fā)送的數(shù)據(jù)的長度進(jìn)行計(jì)算分析并實(shí)施編碼處理。當(dāng)數(shù)據(jù)長度不超過125bit時(shí),便可以將其轉(zhuǎn)換成整型數(shù)據(jù)。否則,需要將其從第126bit數(shù)據(jù)開始轉(zhuǎn)換處理,將其他需要發(fā)送的數(shù)據(jù)進(jìn)行整型處理,最后將相關(guān)信息發(fā)送到客戶端即可。
四、基于WebSocket的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)研究
基于WebSocket的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)主要涉及幾個(gè)核心組件:WebSocket服務(wù)器、機(jī)器人控制系統(tǒng),以及用戶交互界面。這種設(shè)計(jì)能夠?qū)崿F(xiàn)實(shí)時(shí)、雙向的通信,適用于需要快速響應(yīng)的機(jī)器人操作場景。其中,WebSocket服務(wù)器作為數(shù)據(jù)傳輸?shù)闹袠校?fù)責(zé)處理來自用戶界面的請求并將命令轉(zhuǎn)發(fā)到機(jī)器人控制系統(tǒng)。服務(wù)器還需要處理并發(fā)連接,保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性和安全性。用戶交互界面的設(shè)計(jì)作為一個(gè)直觀的圖形界面,使用戶能夠發(fā)送指令給機(jī)器人并接收機(jī)器人的實(shí)時(shí)數(shù)據(jù)。界面應(yīng)支持多平臺(tái)訪問,如通過網(wǎng)頁或移動(dòng)應(yīng)用訪問。
(一)通信機(jī)制設(shè)計(jì)
WebSocket協(xié)議的核心優(yōu)勢在于其全雙工通信能力,即服務(wù)端和客戶端可以同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)。在服務(wù)型機(jī)器人的遠(yuǎn)程交互中,這種通信機(jī)制能夠大大提高交互的實(shí)時(shí)性和效率。具體而言,服務(wù)端通過WebSocket連接向客戶端實(shí)時(shí)推送機(jī)器人的狀態(tài)信息,如位置、電量、任務(wù)完成情況等。這些信息可以幫助用戶了解機(jī)器人的當(dāng)前狀態(tài),從而做出更準(zhǔn)確的決策。同時(shí),客戶端也可以向服務(wù)端發(fā)送控制指令,如導(dǎo)航目標(biāo)、語音指令等。服務(wù)端接收到指令后,會(huì)進(jìn)行相應(yīng)的處理并發(fā)送給機(jī)器人執(zhí)行。為了實(shí)現(xiàn)這一通信機(jī)制,需要在服務(wù)端和客戶端分別實(shí)現(xiàn)WebSocket的握手協(xié)議、數(shù)據(jù)幀編碼解碼,以及連接管理等功能。此外,還需要考慮網(wǎng)絡(luò)延遲、丟包等問題對通信質(zhì)量的影響,并采取相應(yīng)的措施進(jìn)行優(yōu)化。
(二)握手交互設(shè)計(jì)
服務(wù)型機(jī)器人的遠(yuǎn)程交互設(shè)計(jì),離不開WebSocket傳輸協(xié)議的支持。本文提出的遠(yuǎn)程交互設(shè)計(jì)主要參考了HTTP協(xié)議中的“握手”過程,實(shí)現(xiàn)了服務(wù)端和客戶端之間的連接。握手過程是建立WebSocket連接的第一步。在WebSocket協(xié)議中,客戶端需要向服務(wù)器發(fā)送一個(gè)握手請求,然后服務(wù)器會(huì)回應(yīng)一個(gè)握手響應(yīng)。示例代碼:
let socket = new WebSocket('ws://your-websocket-server.com:port');
socket.onopen = function(event) {
let handshakeRequest = {
\"type\": \"handshake\",
\"protocol\": \"your-protocol\", //
\"headers\": {
\"your-header-key\": \"your-header-value\" //
},
\"body\": \"your-body\" //
};
socket.send(JSON.stringify(handshakeRequest));
};
具體操作步驟:
第一步,基于WebSocket的服務(wù)型機(jī)器人的客戶端會(huì)發(fā)送握手請求信息到服務(wù)端。在請求當(dāng)中利用see-WebSocket-key密鑰對報(bào)文內(nèi)容實(shí)施了加密處理,使得其能夠轉(zhuǎn)換成WebSocket協(xié)議內(nèi)容。
第二步,服務(wù)端接收到機(jī)器人客戶端發(fā)來的握手請求報(bào)文之后,會(huì)在第一時(shí)間對接收到的信息進(jìn)行處理,并對加密密鑰進(jìn)行解密。如果成功開啟發(fā)送的報(bào)文,這就說明服務(wù)型機(jī)器人的服務(wù)器滿足了WebSocket協(xié)議的升級(jí)條件,則進(jìn)行升級(jí),然后再向客戶端(用戶)發(fā)送關(guān)于升級(jí)連接與應(yīng)答密鑰等方面的信息。
第三步,客戶端(用戶)在接收到來自服務(wù)端的信息之后,會(huì)對實(shí)施驗(yàn)證,然后將傳統(tǒng)的http升級(jí)成WebSocket,從而實(shí)現(xiàn)客戶端和服務(wù)端的連接,也就是“完成握手”;如果失敗,則客戶端會(huì)主動(dòng)與服務(wù)端斷開連接。
(三)遠(yuǎn)程傳輸設(shè)計(jì)
根據(jù)圖2所示,當(dāng)服務(wù)型機(jī)器人成功完成握手協(xié)議之后,就可以進(jìn)行遠(yuǎn)程數(shù)據(jù)信息交互,并采用二進(jìn)制的方式向?qū)Ψ桨l(fā)送數(shù)據(jù)傳輸任務(wù)。但是,在基于WebSocket的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)過程中,根據(jù)協(xié)議的相關(guān)規(guī)范,想要實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送,離不開數(shù)據(jù)幀(具體數(shù)據(jù)幀的所用見表1)的支持。而基于B/S架構(gòu)的服務(wù)型機(jī)器人,其客戶端瀏覽器的數(shù)據(jù)幀組成是在掩碼和原始基本幀的組合下形成的,并且服務(wù)端所發(fā)生的相關(guān)數(shù)據(jù)信息并不需要掩碼。不過,在遠(yuǎn)程交互時(shí),若是用戶接收到來自服務(wù)端的掩碼數(shù)據(jù)幀時(shí),這就說明WebSocket連接存在問題,且需要主動(dòng)對雙方連接進(jìn)行關(guān)閉操作[5]。反之,若是兩者成功建立連接,則可以隨時(shí)隨地實(shí)現(xiàn)數(shù)據(jù)發(fā)送。
五、測試與分析
(一)信息交互驗(yàn)證
為了驗(yàn)證基于WebSocket的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)方案的可行性。本文選擇以客戶端(用戶)和服務(wù)端機(jī)器人消息的接收和發(fā)送為例展開測試。首先,當(dāng)機(jī)器人的服務(wù)端以主動(dòng)的方式向用戶發(fā)生信息時(shí),且兩端已經(jīng)成功完成連接,并且顯示成功連接,而服務(wù)端就會(huì)主動(dòng)向用戶發(fā)送“hello”問候的信息;當(dāng)用戶成功接收到相關(guān)信息時(shí),這就說明兩端的連接成功。接著,可以將想要發(fā)送的信息輸入編輯界面,并在確認(rèn)所發(fā)送的內(nèi)容沒有錯(cuò)誤之后,選擇發(fā)送按鍵,服務(wù)端就會(huì)自動(dòng)對信息實(shí)施解析處理,并打包成JSON格式,發(fā)送給客戶端(用戶)。其次,當(dāng)機(jī)器人的客戶端(用戶)在成功接收到服務(wù)端發(fā)送的JSON格式信息之后,會(huì)對其進(jìn)行解析、分析處理,以獲取相關(guān)數(shù)據(jù)信息。當(dāng)成功完成數(shù)據(jù)讀取之后,會(huì)在客戶端的界面進(jìn)行顯示,并提示用戶成功接收到相關(guān)信息[6]。
(二)測試結(jié)果分析
通過對服務(wù)型機(jī)器人的遠(yuǎn)程交互進(jìn)行信息傳輸交互操作,可以證明本文提出的程序設(shè)計(jì)方案能夠?qū)崟r(shí)完成數(shù)據(jù)通信需求,并滿足雙向?qū)崟r(shí)交互的要求,達(dá)到遠(yuǎn)程控制服務(wù)型機(jī)器人的目的。
六、結(jié)束語
綜上所述,基于WebSocket的服務(wù)型機(jī)器人遠(yuǎn)程交互設(shè)計(jì)研究,不僅實(shí)現(xiàn)了端與端的雙向傳輸通信,還有效解決了服務(wù)型機(jī)器人在遠(yuǎn)程操作交互時(shí)存在的問題。并且,用戶在對機(jī)器人進(jìn)行遠(yuǎn)程操控時(shí),機(jī)器人服務(wù)端會(huì)將設(shè)備的所有情況,包括周圍環(huán)境等信息實(shí)時(shí)傳輸給客戶端,為用戶操控機(jī)器人提供數(shù)據(jù)方面的支持。同時(shí),避免了數(shù)據(jù)雙向傳輸時(shí),受同步延遲的影響對服務(wù)型機(jī)器人造成破壞。
作者單位:白濤 國家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心黑龍江分中心
參考文獻(xiàn)
[1]劉瑩,邵彧.利用姿態(tài)傳感器多點(diǎn)位控制機(jī)器人交互方法[J].機(jī)械設(shè)計(jì)與制造,2023,(02):266-269.
[2]張洋洋,李翔龍,陳兵.5G環(huán)境下的機(jī)器人遠(yuǎn)程控制系統(tǒng)開發(fā)[J].現(xiàn)代機(jī)械,2023,(04):6-12.
[3]鄒志娟,陳思潔.基于5G與AI技術(shù)的家庭服務(wù)機(jī)器人交互設(shè)計(jì)研究[J].包裝工程,2023,44(16):479-485.
[4]舒文武. 基于SCARA機(jī)器人的硬件在環(huán)實(shí)時(shí)仿真研究[D].湖北:華中科技大學(xué),2022.
[5]李淑敬,孫楠,柴文君,等.基于WebSocket服務(wù)型機(jī)器人遠(yuǎn)程交互的開發(fā)[J].西安文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2021,24(01):52-58.
[6]王貴洋.基于VR的遠(yuǎn)程移動(dòng)機(jī)器人交互技術(shù)研究[D].四川:西南科技大學(xué),2022.