機器人遙操作網(wǎng)絡(luò )通信平臺的設計

發(fā)布時(shí)間:2010-8-16 15:54    發(fā)布者:lavida
目前,機器人遙操作系統已成為機器人研究的一個(gè)熱點(diǎn)。在機器人遙操作的過(guò)程中,本地服務(wù)器與遠程客戶(hù)機之間的網(wǎng)絡(luò )通信問(wèn)題是遙操作的關(guān)鍵環(huán)節。針對機器人遙操作的通信問(wèn)題,本文設計了一種在Windows XP環(huán)境下,運用Socket實(shí)現的基于TCP/IP協(xié)議的網(wǎng)絡(luò )通信平臺。  

1 Socket編程原理  

1.1 Socket簡(jiǎn)介  

Socket(套接字)最初是加州大學(xué)伯克利分校為UNIX操作系統開(kāi)發(fā)的網(wǎng)絡(luò )通信接口。后來(lái)Intel, Microsoft, Sun等網(wǎng)絡(luò )廠(chǎng)商將其移植到Windows中,形成了Windows Sockets規范,它定義了一套Windows環(huán)境下網(wǎng)絡(luò )編程的接口。利用Windows Socket開(kāi)發(fā)的網(wǎng)絡(luò )通信程序的層次結構如圖1示。  


  
圖1 Sockets編程的結構  

根據傳輸數據類(lèi)型的不同,Sockets可分為流式套接字(SOCK_STREAM)和數據報式套接字(SOCK_DGRAM)兩類(lèi)。流式套接字提供面向連接、可靠的數據傳輸服務(wù),數據無(wú)差錯、無(wú)重復的發(fā)送,且按發(fā)送順序接受。流式套接字實(shí)際上是基于TCP協(xié)議實(shí)現的。數據報式套接字提供無(wú)連接服務(wù)。數據報以獨立包形式發(fā)送,不提供無(wú)錯保證,數據可能丟失或重復,并且接受順序混亂。數據報套接字實(shí)際上是基于UDP協(xié)議實(shí)現的。  

按照套接字在客戶(hù)機/服務(wù)器(Client/ Server)模式中的功能可將其分為兩類(lèi):  

*套接字:該套接字位于服務(wù)器端,它的主要功能就是對特定的端口進(jìn)行不斷的*,當檢測到有連接請求時(shí),接受申請,并構造一個(gè)新的客戶(hù)端套接字,與連接申請方的客戶(hù)端套接字建立連接,從而為雙方的通信做好準備。  

客戶(hù)端套接字:該套接字是用來(lái)進(jìn)行網(wǎng)絡(luò )通信的實(shí)體。它位于客戶(hù)機和服務(wù)器上,服務(wù)器必須維持它為之服務(wù)的客戶(hù)一樣數量的這種套接字,形成一個(gè)以服務(wù)器為中心的星型結構。  

1.2 TCP網(wǎng)絡(luò )通信平臺設計步驟  

基于Internet的機器人遙操作技術(shù)是現代網(wǎng)絡(luò )技術(shù)和機器人控制技術(shù)的結合,Internet使用網(wǎng)際分組交換協(xié)議TCP/IP作為通信規范,它包括 TCP, UDP和ICMP等協(xié)議。其中TCP協(xié)議是面向連接的協(xié)議,要求在數據交換以前必須與通信方建立一條連接、它具有分段和重組功能,能夠確保數據可靠、有序地傳輸。  

TCP通信整個(gè)過(guò)程可以分成三個(gè)階段:連接建立、數據傳輸和拆除連接。  

(1)連接建立階段:首先服務(wù)器中的*套接字對斷口進(jìn)行偵聽(tīng),客戶(hù)端的套接字向服務(wù)器端的特定斷口提出連接申請。  

(2)通信階段:這是整個(gè)過(guò)程的核心部分,任務(wù)就是負責數據的收發(fā)。  

(3)拆除連接階段:在傳完數據之后,關(guān)閉套接字,釋放所分配的資源。  

使用Soeket編寫(xiě)TCP通信程序的主要步驟如下:  

1) 構造 Soeket對象 ;  

2) 使用該對象構造基本的Socket句柄。由于遙操作的數據通信要求可靠,準確,故采用TCP協(xié)議,套接字使用流式套接字;  

3)建立客戶(hù)機CSocket,調用Connect()建立與服務(wù)器套接字的連接.服務(wù)器調用Listen()*請求連接情況,并在收到客戶(hù)端請求后調用Accept()接收客戶(hù)端連接.  

4) 構造CSocketFile對象,并使用CSocket對象與之關(guān)聯(lián).  

5) 構造CArchive對象 ,用于接受和發(fā)送數據。使用CArchive對象來(lái)進(jìn)行客戶(hù)端與服務(wù)器端之間的Socket通信  

6) 通信結束,關(guān)閉套接字,退出程序。  

2 TCP網(wǎng)絡(luò )通信平臺程序的實(shí)現  

本程序是為機器人遙操作的通信所搭建的一個(gè)網(wǎng)絡(luò )通信平臺,該平臺實(shí)現了本地服務(wù)器與遠程客戶(hù)機之間的數據網(wǎng)絡(luò )通信,系統結構圖如圖2所示。  


  
圖2 遙操作系統結構圖  

本文的程序設計是基于TCP/IP協(xié)議的,使用客戶(hù)機/服務(wù)器模式。本程序設計調試的網(wǎng)絡(luò )環(huán)境為采用Windows XP中的 TCP/IP協(xié)議配置的局域網(wǎng),服務(wù)器的的IP地址是“192.168.0.104”,通信端口可任意設置,本文設為4231。  

2.1 通信平臺程序的實(shí)現流程  

服務(wù)器是控制機器人的主控制臺,通過(guò)服務(wù)器可以控制機器人的爬行、檢測以及轉向等。本文中服務(wù)器端程序,主要是建立一個(gè)能夠讓客戶(hù)端連接的端口,并通過(guò)*,與需要連接的客戶(hù)端建立連接,并與其進(jìn)行數據信息通信,將機器人傳感器獲取的機器人的狀態(tài)信息發(fā)送給客戶(hù)端來(lái)實(shí)現遠程信號處理,并接收來(lái)自的客戶(hù)端的控制信息以實(shí)現對機器人的操控。  

客戶(hù)機端是對機器人進(jìn)行遠程控制的計算機,它通過(guò)請求與服務(wù)器建立連接之后,將控制信息傳送給服務(wù)器端,服務(wù)器端根據控制信息實(shí)現對機器人控制。而且,客戶(hù)機端還能夠接受服務(wù)器傳送過(guò)來(lái)的機器人狀態(tài)信息,以便對機器人獲取的信息進(jìn)行處理。本文的客戶(hù)機端程序通過(guò)Connect()與服務(wù)器建立連接,來(lái)達到相互通信的目的。  

網(wǎng)絡(luò )通信平臺實(shí)現的流程圖如圖3所示。服務(wù)器端程序是通信平臺的核心部分,本文的服務(wù)器端程序不僅可以實(shí)現與一個(gè)遠程客戶(hù)機端的單對單通信,而且可以與多個(gè)客戶(hù)機端同時(shí)進(jìn)行通信?蛻(hù)機端程序相對于服務(wù)器端程序比較簡(jiǎn)單,沒(méi)有了服務(wù)器端程序的*程序和接受連接程序,但是比服務(wù)器端增加了連接程序。連接程序和*程序是區別于服務(wù)器端程序和客戶(hù)機端程序的標志。  


  
圖3 通信平臺流程圖  

(1) *程序  

Listen()(*程序)是服務(wù)器程序區別于客戶(hù)機端程序最主要的標志,服務(wù)器端通過(guò)*程序來(lái)*有沒(méi)有客戶(hù)機端請求連接。當有客戶(hù)機提出連接請求,通過(guò)*程序將連接請求發(fā)至服務(wù)器來(lái)建立兩者之間的連接,服務(wù)器與客戶(hù)機才能實(shí)現通信。*程序還是區別使用了流式套接字或數據報式套接字的標志。*程序的存在為網(wǎng)絡(luò )通信提供了可靠、無(wú)差錯的連接。  

(2)連接程序  

Connect()(連接程序)是客戶(hù)端中所獨有的程序,是向服務(wù)器端發(fā)送連接請求所編寫(xiě)的。連接程序在收到客戶(hù)機端需要連接服務(wù)器的請求之后,就會(huì )發(fā)送所需要連接的服務(wù)器IP地址和服務(wù)器端口。發(fā)送之后會(huì )等待連接消息的反饋消息,來(lái)確認客戶(hù)機端是否連接成功。  

(3) 接受連接程序  

Accept()(接收連接程序)是客戶(hù)機端對應于客戶(hù)機端連接程序而編寫(xiě)的,該程序可以實(shí)現對連接程序的反饋。當程序接收到客戶(hù)機端程序發(fā)來(lái)的連接請求時(shí),會(huì )對客戶(hù)機反饋回連接是否成功的消息,而且該程序可以獲取要求連接的客戶(hù)機端的IP地址和端口,以便服務(wù)器端可以記錄客戶(hù)機端的連接狀態(tài)信息。  

(4)發(fā)送消息程序  

Send()(發(fā)送消息程序)可以實(shí)現控制信息實(shí)時(shí)地從遠程操作者一方發(fā)向服務(wù)器,而機器人的狀態(tài)信息又通過(guò)各種傳感器(如視覺(jué)傳感器、力覺(jué)傳感器等)獲取后,由服務(wù)器反饋給遠程客戶(hù)端。  

(5)接收消息程序  

Receive()(接收消息程序)可以實(shí)現客戶(hù)機或者服務(wù)器端接收來(lái)自對方發(fā)送的數據消息。該程序在服務(wù)器和客戶(hù)機中都是一致的,配合發(fā)送消息程序實(shí)現了客戶(hù)機和服務(wù)器之間的數據消息通信。  

2.2 實(shí)驗結果  

本文的網(wǎng)絡(luò )通信平臺運行之后的界面輸出圖像如圖4所示。  

圖4(a)顯示的是服務(wù)器端運行之后的界面。服務(wù)器端是該程序的核心端,所有客戶(hù)端的數據都將傳輸到服務(wù)器端,客戶(hù)端之間通信需要通過(guò)服務(wù)器端進(jìn)行中轉。而本文所設計的程序中的服務(wù)器端不僅可以實(shí)現以廣播的形式向所有連接到該服務(wù)器的客戶(hù)端發(fā)送信息,還可以以單對單通信的方式向單個(gè)的客戶(hù)端進(jìn)行通信。在圖 4(a)中就顯示了服務(wù)器端分別利用這兩種方式進(jìn)行了通信。點(diǎn)擊界面中的發(fā)送按鈕就采取廣播式發(fā)送信息,而點(diǎn)擊界面中的1和2兩個(gè)按鈕則是對特定客戶(hù)端發(fā)送數據。  

本文設計的程序可以支持多個(gè)不同的  




  
圖4 通信平臺運行界面  

客戶(hù)端和服務(wù)器進(jìn)行連接并通信。圖4(b)顯示的是IP為“192.168.0.106”的客戶(hù)端和服務(wù)器建立連接之后的通信,而圖4(c)則是IP為“192.168.0.110”的客戶(hù)端和服務(wù)器通信的界面。  

3 實(shí)驗性能分析  

1.時(shí)延和數據的丟失問(wèn)題  

機器人遙操作要求數據傳輸要具備可靠性和次序性,TCP協(xié)議提供了可靠而有序的傳輸,基于這一特性,可以在傳輸過(guò)程中使用超時(shí)重傳、分段、重組等檢錯糾錯策略,通過(guò)這些檢錯糾錯策略可以保證在數據傳輸過(guò)程中的可靠性和有序性,可以有效的防止數據的丟失。  

機器人遠端遙操作控制的采用并不意味著(zhù)實(shí)時(shí)控制作用被上移到網(wǎng)絡(luò ),實(shí)時(shí)控制依然由現場(chǎng)的控制單元來(lái)完成,而網(wǎng)絡(luò )遙操作更關(guān)注的是對現場(chǎng)信息的監視和管理以及對機器人的非實(shí)時(shí)控制,所以TCP通信在傳輸過(guò)程中存在的時(shí)延問(wèn)題也就顯得影響不大。  

2.數據共享問(wèn)題及其解決方案  

由于本文中程序是多任務(wù)多線(xiàn)程的,當多個(gè)客戶(hù)端同時(shí)連接到服務(wù)器時(shí),多任務(wù)、多線(xiàn)程就極易造成數據共享問(wèn)題。數據共享問(wèn)題可以解釋如下:假定有多個(gè)函數(或者ISR、任務(wù))共享一個(gè)變量,如果在某一時(shí)刻存在對該變量的數值的操作,并且在對其施加操作的的過(guò)程中,僅有部分操作完成,還有一部分沒(méi)有完成,若在此時(shí)產(chǎn)生一個(gè)中斷,如果此時(shí)還有另一個(gè)函數也在共享該變量,且前面的操作已經(jīng)完成,該變量的數值可能與預期的不同。因此,當一個(gè)函數與另一個(gè)函數共享某變量時(shí),所調用的ISR或者另一個(gè)函數都有可能改變此變量,是變量的數值發(fā)生變化,在返回時(shí)此變量的新數值將從堆棧轉載到四個(gè)寄存器中,未完成的操作將按照寄存器中的新數值執行,程序就會(huì )發(fā)生錯誤。  

在本文中,利用了以下措施消除了程序中由共享數據問(wèn)題所導致的錯誤。  

1) 對于從中斷返回的變量,在聲明中使用了volatile。此聲明可以警告編譯器,這些變量是可更改的。  

2)在中斷之前將完全執行的部分中對原子指令使用可再生函數,此部分叫臨界段。  

3) 將共享的變量放入循環(huán)隊列中。需要使用該變量數值的函數總是從隊列的前端將其刪除。而另一些寫(xiě)入該變量的數值的函數總是從隊列的末端進(jìn)行操作。  

4)在臨界段開(kāi)始執行之前通過(guò)使用信號量來(lái)關(guān)閉中斷,在其完成之時(shí)打開(kāi)中斷。  

4 結論  

本文設計了一種基于TCP協(xié)議的網(wǎng)絡(luò )通信平臺,通過(guò)該平臺可以實(shí)現遠程客戶(hù)機與本地服務(wù)器之間的信息通信,而且保證了數據傳輸的可靠性和次序性,對機器人的遙操作提供了可靠的網(wǎng)絡(luò )通信條件。  

網(wǎng)絡(luò )通信平臺的建立,擴大了對機器人操作的遠程化距離,而且該平臺具有架構容易,低成本,維護便利等優(yōu)點(diǎn),對機器人遙操作領(lǐng)域的技術(shù)進(jìn)步將會(huì )起到幫助作用。
本文地址:http://selenalain.com/thread-21637-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页