新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于WiFi網絡的可視化遙控搬運機器人設計

        基于WiFi網絡的可視化遙控搬運機器人設計

        作者: 時間:2016-09-12 來源:網絡 收藏

        3.6 服務器搭建

        由于服務器只能傳輸視頻信息,而本設計需要接收客戶端的控制命令并且還需返回機器人的傳感器數據,因此需要移植支持CGI應用腳本的服務器。服務器是一個可運行在Unix或下的非常小巧的單任務WEB服務器,并且支持CGI腳本,廣泛應用于嵌入式領域。本設計通過編寫CGI腳本來完成服務器與客戶端的數據交換。

        3.7 服務器端程序設計

        服務程序主要完成機器人的初始化、讀取電量值并將電量值通過LED進行提示,讀取命名管道獲得命令字并將其解析執行。主要的流程圖如圖3所示。

        基于WiFi網絡的可視化遙控搬運機器人設計

        如圖3所示,本設計中的服務程序采用多進程程序設計方式,其子進程每60 s采集一次電源電量信息并更新電量指示燈顯示,主進程采用阻塞讀的方式讀取命名管道來等待客

        戶端發送命令,獲得命令之后對命令進行解析,并調用驅動程序來執行相應的命令,從而實現對機器人的控制。

        4 客戶端程序設計

        4.1 Android客戶端設計

        Android客戶端軟件流程圖如圖4所示。

        基于WiFi網絡的可視化遙控搬運機器人設計

        Android端的應用程序采用多線程技術,其中一個子線程每60 s向服務器發送一個獲取電量的命令并根據收到的數據進行顯示更新,另一個線程根據MJPEG協議來解析出圖像數據并更新顯示。主線程主要完成用戶操控事件的監聽,并根據用戶的實際操控發送相應的命令給服務器,并從服務器獲得機器人的最新數據來實時更新,其命令的發送方式采用HTTP協議中的GET方法。

        GET方法是HTTP協議中定義的多種與服務器進行交互的方法之一,它一般用于獲取/查詢資源信息。該方法請求的數據會附在URL之后,并且提交的數據最多只能是1024字節,但是本設計中只需要傳送命令字即可,因此采用GET方法來傳送命令字與獲取機器人數據信息。使用該方法來發送命令,服務器端的CGI程序可以在QUERY—STRING環境變量中非常方便地獲取到客戶端傳送給服務器的數據,并且客戶端應用程序可以在HttpResponse中獲得服務器端返回的數據。

        MJPEG將服務器端發送來的一張張JPEG圖像數據發送給客戶端,客戶端不斷地接收圖像數據并顯示更新,即形成了動態的圖像。獲取視頻圖像數據時,客戶端首先發一個GET方法,如果服務器接收響應則會設置contexttype的boundary子屬性來指明,然后服務器端開始發送圖片數據,在數據頭部會有圖片類型以及大小信息,其中Content—Length字段指明圖像數據的長度,Content—Type字段指明圖像的類型值為image/jpeg。當一幀圖像數據發送完畢后,服務器端將會發送邊界字符串來表示一幀圖像發送結束。

        4.2 WEB客戶端設計

        WEB客戶端程序流程圖如圖5所示。WEB客戶端采用AJAX技術,其功能模塊大體上分為3個部分:第一部分主要是監測用戶的操作并采用HTTP GET方法來發送控制命令,然后將服務器返回的信息更新顯示;第二部分主要為120 s定時發送,獲取電源電量值的命令,并將獲得的數據更新顯示;第三部分獲取圖像數據并顯示。

        基于WiFi網絡的可視化遙控搬運機器人設計

        AJAX(Asynchronous Javascript+XML)即異步JavaScript和XML技術的簡稱,它可以實現網頁異步更新。采用該方法來設計WEB應用,可以只對網頁的部分內容進行更新,而不需要重新對整個頁面進行加載。其工作原理如圖6所示。

        基于WiFi網絡的可視化遙控搬運機器人設計

        結語

        本文從硬件選型、硬件電路設計、系統移植、驅動程序移植編寫、服務器搭建、服務器程序編寫,以及Android客戶端和WEB客戶端應用程序編寫方面進行了較為詳細的介紹。最終,用戶能夠通過Android客戶端和WEB客戶端對機器人進行夾持、運輸、擺放動作的控制,并且可以實時地返回機器人采集到的圖像數據和傳感器數據。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 聂拉木县| 乌苏市| 峨眉山市| 吴忠市| 旺苍县| 沽源县| 保靖县| 津南区| 惠安县| 丰顺县| 菏泽市| 汉川市| 青海省| 攀枝花市| 都安| 大厂| 白水县| 德钦县| 遵义县| 辰溪县| 铜陵市| 金昌市| 西林县| 五峰| 百色市| 离岛区| 靖西县| 博野县| 自治县| 曲沃县| 即墨市| 屏东市| 宁阳县| 绵阳市| 华亭县| 海原县| 乌什县| 澳门| 张家界市| 西乌珠穆沁旗| 昌平区|