天天看点

ajax无线遥控器,基于WiFi网络的可视化遥控搬运机器人设计

3.6 BOA服务器搭建

由于MJPGstreamer服务器只能传输视频信息,而本设计需要接收客户端的控制命令并且还需返回机器人的传感器数据,因此需要移植支持CGI应用脚本的服务器。BOA服务器是一个可运行在Unix或Linux下的非常小巧的单任务WEB服务器,并且支持CGI脚本,广泛应用于嵌入式领域。本设计通过编写CGI脚本来完成服务器与客户端的数据交换。

3.7 服务器端程序设计

服务程序主要完成机器人的初始化、读取电量值并将电量值通过LED进行提示,读取命名管道获得命令字并将其解析执行。主要的流程图如图3所示。

ajax无线遥控器,基于WiFi网络的可视化遥控搬运机器人设计

如图3所示,本设计中的服务程序采用多进程程序设计方式,其子进程每60 s采集一次电源电量信息并更新电量指示灯显示,主进程采用阻塞读的方式读取命名管道来等待客

户端发送命令,获得命令之后对命令进行解析,并调用驱动程序来执行相应的命令,从而实现对机器人的控制。

4 客户端程序设计

4.1 Android客户端设计

Android客户端软件流程图如图4所示。

ajax无线遥控器,基于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定时发送,获取电源电量值的命令,并将获得的数据更新显示;第三部分获取图像数据并显示。

ajax无线遥控器,基于WiFi网络的可视化遥控搬运机器人设计

AJAX(Asynchronous Javascript+XML)即异步JavaScript和XML技术的简称,它可以实现网页异步更新。采用该方法来设计WEB应用,可以只对网页的部分内容进行更新,而不需要重新对整个页面进行加载。其工作原理如图6所示。

ajax无线遥控器,基于WiFi网络的可视化遥控搬运机器人设计

结语

本文从硬件选型、硬件电路设计、系统移植、驱动程序移植编写、服务器搭建、服务器程序编写,以及Android客户端和WEB客户端应用程序编写方面进行了较为详细的介绍。最终,用户能够通过Android客户端和WEB客户端对机器人进行夹持、运输、摆放动作的控制,并且可以实时地返回机器人采集到的图像数据和传感器数据。