譚花娣
(常州信息職業技術學院,江蘇 常州 213164)
隨著網絡技術的發展,網絡技術已逐漸滲透到各個領域,基于網絡的機器人控制就是利用網絡實現遠程的機器人控制。互聯網的飛速發展進一步促進了網絡技術在機器人控制領域的應用。基于網絡的機器人控制技術也從初期的遙控操作機器人的應用逐漸擴展到自主機器人和分布式機器人系統等研究領域。通過因特網對機器人實施實時控制是一項具有挑戰性的工作,這一技術的應用將進一步豐富機器人遠程控制手段,具有良好的發展趨勢和廣闊的應用前景。
在研究和分析通信協議、無線網絡技術和Socket通信的基礎上,完成了機器人無線網絡視頻傳輸系統設計,如圖1所示:

圖1 無線網絡視頻傳輸系統圖
圖1中機器人上安裝攝像機,完成圖像采集、A/D轉換和視頻壓縮功能。將攝像機與無線模塊連接,通過無線模塊實現無線視頻傳輸。在用戶端計算機上安裝無線網卡,通過無線網卡接收和處理無線視頻信號。無線網絡采用IEEE802.11g標準,工作頻率為2.4GHz,傳輸速率可達到54Mbps,采用TCP/IP通信協議,視頻壓縮標準采用MJPEG。由于機器人和計算機之間采用一對一傳輸,所以無線網絡組網采用對等模式。
在無線網絡視頻傳輸系統中,如圖2所示,攝像機將采集到的模擬視頻信號通過A/D轉換器轉換成數字視頻信號,然后交給視頻編碼器將視頻壓縮成MJPEG格式。壓縮后的視頻數據流交給無線發射模塊,無線發射模塊將數據轉換成無線信號。無線信號通過無線網絡傳輸給計算機的無線網卡,計算機無線網卡接收并處理無線視頻信號提交給計算機展現給用戶視頻圖像。

圖2 無線視頻傳輸系統流程圖
在實驗系統中,利用Visual C++6.0編程環境,利用Socket網絡通信接口實現了該實驗程序。通過視頻采集卡采集圖像,用Socket建立實驗系統客戶端(控制端)和服務器端(機器人)的連接,并實現視頻數據的傳輸。其視頻傳輸結構圖如圖3所示。

圖3 視頻傳輸結構圖
服務器端實現主要包括三部分:硬件初始化、Socket的Server端初始化以及數據的發送。具體實現過程如下:
(1)當服務器系統啟動后,建立Socket通信,偵聽網絡狀態。
(2)如檢測到客戶端發來的連接,即建立連接。
(3)如接收到傳送請求,即開啟傳送線程把數據傳給客戶端,并開啟另一線程來處理圖像數據。
(4)操作人員點擊傳送按鍵之后,系統開始正式工作,獲得視頻數據,這標志著數據傳輸正式開始。
在數據傳送過程中多采用多線程技術,可實現偵聽網絡請求、數據采集、預覽、請求后數據壓縮傳送等。采用多線程技術,可使預覽、編碼、傳輸能同時進行(通過分時),從而有效地提高了數據傳輸的效率。
Socket工作過程如下:首先啟動服務器,通過調用Socket(),建立一個Socket,然后調用bind()將該Socket和本地網絡地址綁定在一起,再調用listen()使Socket做好偵聽的準備,并規定它的請求隊列的長度,之后就調用accept()來接收連接。客戶在建立Socket后就可調用connect()和服務器建立連接。連接一旦建立,客戶機和服務器之間就可以通過調用send()和receiver()來發送和接收數據。最后,待數據傳送結束后,雙方調用close()關閉Socket。具體過程如下:
(1)Winsock環境的初始化
在使用Winsock MFC類之前,必須為應用程序初始化Winsock環境,這只需調用實例初始化函數AfxSocketInit即可,它把WSADATA結構作為可選參數。如果把此結構提供給函數,就會得到當前計算機在用的Winsock版本信息。如果把此函數包含在實例初始化函數中,Winsock環境將得到正確的初始化,并被應用程序關閉。
(2)創建偵聽套接字
在初始化Winsock之后,接著創建在通信中使用的套接字,其方法是調用socket()函數。下面對socket()函數的三個參數作以介紹:
a)地址描述:必須設為AF_INET,表明正在使用IP地址家族。
b)指定套接字的類型:采用SOCK_STREAM,指定應用程序創建一個流式套接字,使用TCP協議;采用SOCK_DGRAM,則創建一個數據報套接字,使用UDP協議。
c)指定套接字所用的協議:如果是流式套接字,則使用IPPROTO_TCP,如果是數據報套接字,則使用IPPROTO_UDP。

(3)地址綁定
將套接字綁定到一個已知地址。

&saddr是一個Winsock地址結構,它的作用相當于一個普通的緩沖區,結構通常會隨所用的網絡協議不同而不同。
(4)偵聽連接
將套接字置入監聽模式,bind()的作用只是將一個套接字和一個指定的地址關聯在一起,但指定套接字進入連接的函數是listen()函數。
listen()函數中第一個參數是進行偵聽的套接字,服務器可以從它上面接收客戶發來的請求;第二個參數指定了正在等待連接的最大隊列長度,進入服務器的連接請求將在隊列中等待服務器accept(),這個參數非常重要,因為完全可能同時出現多個連接請求。
(5)接受連接
當服務器的套接字設置為偵聽狀態時,它就可以接收客戶機的連接請求,在收到請求后,實際的連接可以由accept()函數來完成。

其中m_hSocket是調用listen()函數的偵聽套接字,&addr,&len是用來返回所連接的客戶機套接字的地址。如果客戶機的連接請求被成功接受,accept()函數提取掛在偵聽套接字m_hSocket上的連接隊列中的第一個連接,創建一個和m_hSocket有相同屬性的新數據套接字accs,并返回一個指向accs的句柄。accs用來處理客戶機和服務器之間的連接和數據傳輸工作,原來的偵聽套接字m_hSocket將繼續偵聽新的連接請求,并通過accept()函數的調用來連接新的客戶機。
(6)發送數據
通過socket連接發送和接收消息并不復雜,對于服務器和客戶機來說,發送和接收消息的方法是相同的。可以用socket發送任何類型的數據,函數需要一個指向通用緩沖區的指針。發送時,緩沖區存放待發送的數據,接收時,接收的數據拷貝到緩沖區。通過socket連接發送消息,可以使用send()函數,返回實際上發送出的字節數。該函數第一個參數是本地socket號m_hsocket,第二個參數pData是一個指向存放發送數據的緩沖區的指針,第三個參數nCount是發送緩沖區的大小,第四個參數是傳輸控制標志。
(7)關閉連接
服務器端應用程序在完成與客戶端程序的所有通信之后,就可以調用close socket()函數關閉這次連接。

(8)服務器端系統實現
打開服務端程序將出現如下圖4所示界面,在程序運行后,點擊開始按鈕,機器人端就開始偵聽是否有控制端接入。在界面左邊部分和右上部分是實驗系統自身攝像頭所采集視頻信息的實時顯示,右下部分是攝像頭格式調整、視頻源選擇和當前接入的控制端IP地址顯示。

圖4 服務器端實現
客戶端功能主要是接收和解壓圖像數據,客戶端接收到的圖像數據,先經過一定的緩沖,然后才能進行解碼顯示和圖像處理,具體過程如下:
(1)Winsock環境的初始化
客戶端的Winsock環境的初始化和服務器端一樣,同樣只需調用實例初始化函數AfxSocketInit即可。
(2)創建請求連接套接字
調用socket()函數來創建請求連接套接字,客戶端同樣是使用UDP協議,數據報套接字。

(3)請求連接
為了讓服務器接受一個連接請求,客戶機必須首先發送一個連接請求,通過調用connect()來和服務器建立連接。

其中m_cSocket是請求連接的套接字;&saddr用來指定用戶想連接的服務器端的套接字地址結構的指針。傳遞給connect()函數的地址SOCKADDR機構和傳遞給服務器bind()函數的SOCKADDR結構是一樣的。
(4)接收數據
客戶機套接字和服務器套接字之間建立了連接之后,就可以進行數據傳輸了,調用recv()函數可以接收數據,此函數的參數與send()函數參數意義相似,但recv()函數的第二個參數pBuf指向用于存儲接收數據的緩沖區。對于套接字來說,數據是按輸入的隊列接收過來的,recv()函數將返回讀入數據的字節數,這個字節組就是輸入隊列中的字節數,其大小與send()函數的nret中指定的一樣。如果連接正常關閉,recv()函數將返回0;否則,返回SOCKET_ERROR。
(5)關閉連接
客戶端端應用程序在完成與服務器程序的所有通信之后,就可以調用closesocket()函數關閉這次連接。
(6)客戶端系統實現
本文設計的客戶端界面如下圖5所示,左邊部分和右上部分為視頻顯示部分,右下部分為控制部分,主要有機器人端IP地址輸入窗口、速度調整窗口以及遙操作控制圖標窗口。

圖5 客戶端界面
基于無線網絡和客戶機/服務器模型的視頻傳輸系統的實現,并且在AS-R機器人上得到很好的應用,實驗結果表明,在無線局域網環境下,室內100m的范圍,傳送320x240的視頻信息速度可以達到10幀/s以上。在本文中提出的SOCKET/WINSOCK通信機制,對于基于網絡技術的機器人遙操作平臺的實現,脫離了原本的那種專人專機進行遠程控制的狀況,提出了初步的設想。
[1]湯宇松,劉景泰,盧桂章.利用遠程網絡技術的機器人遙操作系統分析[J].機器人,2000,22(1):62—72.
[2]Taylor k,Dalton B,Trevelyan J.Web-based telerobotics[J].Robotica,1999,17:49-57.
[3]劉威,宋愛國等.基于互聯網的遙操作機器人系統明.機器人技術與應用,2001,2:30-32.
[4]耿海霞,陳啟軍,王月娟.基于web的遠程控制機器人研究機器人.2002,5:43-44.
[5]莊嚴,王偉,陣為民.基于網絡的機器人控制技術的研究現狀與發展.機器 2002,2:20-22.