基于WiFi网络的可视化遥控搬运机器人设计
序移植。
(5)ADO驱动
电源电量以及FSR压力传感器数据测量需要ADC驱动的支持,由于系统中已含有该驱动,故只需要在编译内核时选择上即可。
3.4 AP热点搭建
Hostapd是Linux系统中无线访问接入点的守护进程。它可以将无线网卡设置为AP模式,并且支持多种加密方式,提供了设备接入的身份验证。在实际的使用期间,需要对其配置文件进行相应的修改。本设计中采用Hostapd结合RTL8188网卡完成AP热点的搭建。另外,通过配置DHCP的配置文件并启用该服务为接入机器人的WiFi设备分配IP地址,有效地避免了多个设备接入时的地址冲突问题。
3.5 视频服务器搭建
本设计选用input_uvc作为输入组件来使用V4L2从摄像头获取图像数据,经JPEG库对数据进行编码之后,通过选用output_http作为输出组件来输出图像数据。output http组件实现了一个符合HTTP1.0标准的WEB服务器,用户可以使用HTTP协议获取视频信息。
3.6 BOA服务器搭建
由于MJPGstreamer服务器只能传输视频信息,而本设计需要接收客户端的控制命令并且还需返回机器人的传感器数据,因此需要移植支持CGI应用脚本的服务器。BOA服务器是一个可运行在Unix或Linux下的非常小巧的单任务WEB服务器,并且支持CGI脚本,广泛应用于嵌入式领域。本设计通过编写CGI脚本来完成服务器与客户端的数据交换。
3.7 服务器端程序设计
服务程序主要完成机器人的初始化、读取电量值并将电量值通过LED进行提示,读取命名管道获得命令字并将其解析执行。主要的流程图如图3所示。
![](../img/eep/emb/emb-500884s5lpqv3ngy.jpg)
如图3所示,本设计中的服务程序采用多进程程序设计方式,其子进程每60 s采集一次电源电量信息并更新电量指示灯显示,主进程采用阻塞读的方式读取命名管道来等待客
户端发送命令,获得命令之后对命令进行解析,并调用驱动程序来执行相应的命令,从而实现对机器人的控制。
4 客户端程序设计
4.1 Android客户端设计
Android客户端软件流程图如图4所示。
![](../img/eep/emb/emb-50089ijjhvvmdn1k.jpg)
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定时发送,获取电源电量值的命令,并将获得的数据更新显示;第三部分获取图像数据并显示。
![](../img/eep/emb/emb-50090hffhyktgyv3.jpg)
AJAX(Asynchronous Javascript+XML)即异步JavaScript和XML技术的简称,它可以实现网页异步更新。采用该方法来设计WEB应用,可以只对网页的部分内容进行更新,而不需要重新对整个页面进行加载。其工作原理如图6所示。
![](../img/eep/emb/emb-50091c3h320xmcs4.jpg)
结语
本文从硬件选型、硬件电路设计、系统移植、驱动程序移植编写、服务器搭建、服务器程序编写,以及Android客户端和WEB客户端应用程序编写方面进行了较为详细的介绍。最终,用户能够通过Android客户端和WEB客户端对机器人进行夹持、运输、摆放动作的控制,并且可以实时地返回机器人采集到的图像数据和传感器数据。
嵌入式系统 搬运机器人 Linux S3C6410 MJPGstreamer BOA 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)