【导读】“基于WIFI控制图像采集机器人”致力于研究出能够实现自动寻迹、超声波及红外自动避障功能,可程控行驶速度、PC客户端和手机客户端(智能手机APP界面操控,同时支持苹果IOS及Android移动设备控制)通过TCP协议与PC机服务器建立连接控制机器人的运动。
不明真相的群众请狠戳这里↓↓
以下是他的作品概况:
“基于WIFI控制图像采集机器人”致力于研究出能够实现自动寻迹、超声波及红外自动避障功能,可程控行驶速度、PC客户端和手机客户端(智能手机APP界面操控,同时支持苹果IOS及Android移动设备控制)通过TCP协议与PC机服务器建立连接控制机器人的运动。
本设计以STC12C5A32S2单片机为下位机控制核心,主要负责控制摄像头云台舵机、机器人行走电机及避障模块和照明灯等。
通过无线路由器组建一个无线局域网,用于连接移动视频机器人与PC机服务器,而PC机客户端则通过无线局域网与PC机服务器进行连接。PC机服务器通过无线透传模块与STC12C5A32S2开发板进行通信,与TQ2440嵌入式开发板通过无线进行视频流传输。手机及电脑终端用于操控机器人及视频的显示。其中,手机客户端可用重感模式控制机器人的行走。
适应范围及推广前景的技术性说明
从机器人诞生至今,原先仅应用在航空军事项目中的智能机器人也开始逐渐进入到人们的日常生活之中。
本设计能够利用机器人采集实验室、仓库、军事场地、旅游景区等的视频参数。例如在危险地段进行施工作业时,在恶劣的环境下进行科学研究、排除危险品时等众 多场合都需要人们冒着极大的风险采集相关信息以便下一步的进行;而在智能化家居、家庭服务、电影拍摄等诸多场合中,对工作人员安全性和舒适性的要求也越来 越高,这就需要有一种能够代替人类完成各种类型任务的智能化机器人。XXX机器人是智能行走机器人的中一种,为人类突破各种局限创造了条件。
该研究成果可用于未来无人驾驶汽车的发展,视频监控,远程控制,无线控制,防爆,排爆等诸多应用场合,及该成果具有很高的使用价值,具有长久的和广泛的应用前景。
系统硬件结构图:
系统软件结构图:
务器模型主要有两种:并发服务器和循环服务器。所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点,其优缺点如下所示。
通过上面的对比,本设计选用TCP并发服务器作为PC机服务器的模型,并选用多线程实现并发,其进程模型如下所示。
创建TCP循环服务器的算法如下所示。
PC机客户端负责为用户提供与机器人交互的接口,其提供了控制机器人行动、摄像头旋转、现场实时视频等功能。
PC机客户端模型设计:PC机客户端通过TCP协议与PC机服务器建立连接,并在程序退出前始终保持连接。其工作模式为事件驱动,即只有当主动用户发出请求时,PC机客户端才向PC机服务器发送相应请求,并等待处理结果,尔后将结果展现给用户(注:现场环境参数信息的获取和实时视频的获取是通过定时器主动获取,其不依赖于事件驱动)。
PC机客户端命令处理模块工作步骤如下:
(1) 根据用户发出的指令,通过预先与PC机服务器协商好的命令协议格式,构造请求协议;
(2) 向PC机服务器发送构造好的请求;
(3) 等待PC机服务器的处理结果,除“获取全景图”指令外,其余指令均设置等待超时时间为1秒,超时则认为命令请求失败;
(4) 接收来自PC机服务器的指令处理结果;
(5) 判断PC机服务器是否还有额外资源需要发送,若有,则启动额外的处理模块进行接收(注:额外资源采用异步I/O进行接收,其不会阻塞PC机客户端主线程)。
(6) 根据命令处理结果,更改程序相应状态。
创建TCP客户端算法如图所示:
PC机客户端程序界面设计
程序界面设计的好坏,直接影响到用户的交互体验,一个好的界面设计需要满足以下原则:
(1) 以用户为中心的基本设计原则;
(2) 顺序原则;
(3) 功能原则;
(4) 一致性原则;
(5) 频率原则;
(6) 重要性原则;
(7) 面向对象原则。
本设计在满足以上原则的同时,将视频监控界面和程序主控界面分离,有效的提升了程序界面的响应速度、解决了不同线程同时修改界面时资源冲突的问题,程序主控界面如下所示。
本设计用到了Visual Studio 2010中的Visual C++和Visual C#功能,对于其它语言的支持,可以不进行安装,其安装与配置下所示:
(1) 使用虚拟光驱软件加载Visual Studio 2010的安装镜像;
(2) 在弹出的安装界面中选择“安装Microsoft Visual Studio 2010”;
(3) 按照默认设置,点击“下一步”,直至“选择要安装的功能”选择页;
(4) 设置安装路径,选择“自定义”安装,点击“下一步”;
(5) 去掉除Visual C++和Visual C#两个选项外的所有选项,单击“安装”;
(6) 安装完成后,选择“安装文档”,完成帮助文档的安装;
(7) 启动Visual Studio 2010,设置默认开发环境为Visual C#,等待其自动配置完成后,即完成Visual Studio的安装与基本配置工作。
Android手机客户端开发环境搭建及程序设计
Android应用程序以JAVA作为开发语言,因此需要安装JDK支持JAVA的开发。而Eclipse是一款极为优秀的开源IDE,采用插件式设计,可以很容易的扩展以满足不同的开发需求。Google官方提供基于Eclipse的Android开发插件ADT,本设计即选用此解决方案进行Android手机客户端的开发工作,其搭建步骤如下所示:
(1) 从JAVA官方网站下载最新的JDK安装包并完成安装;
(2) 从Eclipse官方网站获取最新版的“Eclipse IDE for Java Developers”安装包,并完成安装;
(3) 从Android官方网站获取最新版本的Android SDK安装包并完成安装;
(4) 启动Eclipse,选择“Help”->“Install New Software…”;
(5) 在弹出的对话框中点击“Add…”按钮,将Android ADT插件的下载地址添加到弹出的对话框中,点击“OK”按钮,开始下载;
下载完成后,Eclipse会自动进行安装,至此Android开发环境搭建完成。
Android手机客户端通过Wifi与无线路由器接入互联网,使用TCP协议与PC机服务器建立连接,并在程序退出前始终保持连接状态。其工作模式与PC机客户端一致,均采用事件驱动。其与PC机服务器的通信过程与PC机客户端与PC机服务器的过程一致,不再详述。其程序流程如下所示。
重感模式控制
Android手机可以通过内置的重力传感器获取手机在空间中的状态信息,其传感器输出的是数字坐标,重力感应坐标系设定如图下所示。
以手机屏幕的左下方为坐标原点,箭头指向的方向为正,可以得出如下的一些信息:
手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10);
手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10);
手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0);
手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0)。
通过以上信息进行归纳:指向天空的坐标为正数,指向大地的坐标为负数,通过对三轴坐标的检测,就可以精确定位手机的运动状态。
由于控制移动视频机器人只需停止、前进、后退、左转、右转这五个基本动作,现在做出如下控制策略:
首先检测手机向前和向后倾斜,如果达到预设阀值,则发出相应控制指令;
检测手机向左和向右倾斜,如果达到预设阀值,则发出相应转向控制指令;
若所有阀值均未达到,则发出停止控制指令。
由于重力传感器会持续检测,并且只要手机状态发生改变就会触发检测模块,如果不进行优化,会造成大量的冗余请求。为解决此问题,本设计会记录手机上一次的控制指令,只有当检测到的新控制指令与上一次的不一致时,才向PC机服务器发送新的控制请求。
在进行实际编程时,需要对传感器管理模块SensorMangager和传感器事件监听器SensorEventListener有一定了解。其中SensorMangager是一个综合管理类,包括传感器的种类、采样率、精度等,可以通过getSystemService函数获取一个SensorMangager对象,尔后通过调用其getDefaultSensor成员函数
获取相应传感器。Android 4.0支持的传感器类别如下所示:
Sensor.TYPE_ACCELEROMETER:加速度传感器;
Sensor.TYPE_GYROSCOPE:陀螺仪传感器;
Sensor.TYPE_LIGHT:亮度传感器;
Sensor.TYPE_MAGNETIC_FIELD:地磁传感器;
Sensor.TYPE_ORIENTATION:方向传感器;
Sensor.TYPE_PRESSURE:压力传感器;
Sensor.TYPE_PROXIMITY:近程传感器;
Sensor.TYPE_TEMPERATURE:温度传感器。
本设计用到的传感器类别为Sensor.TYPE_ACCELEROMETER,即加速度传感器,在获取到相应传感器后,通过先前获取的SensorMangager对象注册其事件监听器,并在其中完成逻辑代码的编写。在程序退出或后台运行时,会触发onPause方法,程序要在此关闭对传感器的调用,否则手机的电量会很快被耗尽。
重力检测控制模块的流程图如图所示。
主要技术指标
遥控距离:500m(无穿越障碍物的情况下)
遥控方式:带WiFi的智能手机〔苹果IOS、谷歌Android〕遥控、电脑(PC端)
操作方式:APP界面操作、电脑界面操作
连接协议:WIFI、TCP协议
本方案作品整体流程操控图
技术关键
本设计的亮点、难点及关键点是无线局域网的组建及Android手机客户端、重感模式的开发。
无线局域网用于连接机器人与PC机服务器,而PC机客户端和Android手机客户端则通过无线局域网与PC机服务器进行连接。PC机服务器通过无线透传模块与STC12C5A32S2开发板进行通信,与TQ2440嵌入式开发板通过Wifi进行视频流传输。机器人的外设则通过STC12C5A32S2芯片的相应IO口进行连接与控制。