孙江正,孙春霞
(兰州交通大学 电子与信息工程学院,兰州730070)
随着嵌入式技术的发展,基于小型便携式识别和集群控制技术较传统计算机技术具有更广阔的应用。基于摄像头的颜色识别技术较一般传感器定位和采集技术具有稳定性和可移动等方面的优势[1],在生产车间自动物料配送车的循迹以及基于颜色的物料提取中具有广泛的应用前景[2]。而集群控制作为一种新生的控制方式,在大范围、多控制对象的控制方面具有举足轻重的作用,如太阳能发电板的集群控制、风力发电机的集群控制以及大型舞台剧中的灯光集群控制。而本文中的小车集群控制是将颜色识别与集群控制的较好方式。小车位置及方向信息通过摄像头的颜色识别技术获取,处理之后传送到STM32进行校验,并通过无线模块发送出去,驱动多辆小车按指定的路线行走,从而实现集群控制。
本文中的设计系统由智能小车和摄像头控制模块两部分组成,为满足集群控制的需要选用3辆小车,小车由两轮驱动,便于在行走过程中调节方向。每辆小车搭载NRF无线模块和测速模块,可以实现小车的旋转角度测量以及速度调整。跑道的正上方是USB摄像头,通过5 m长的延长线与地面的主控板相连接。为满足数据的实时处理及多任务控制的需要,主控板采用Tiny2440四核Cortex-A9核处理器,搭载Linux系统,通过QT的设计使得操作界面美观易操作。为减轻处理器内核的负担以及确保传送指令的准确性[3],指令的校验工作由外围的STM32芯片处理,并通过nRF模块与小车通信。系统整体结构图如图1所示。
Exynos 4412采用哈佛结构设计,使得数据和代码的读取速率较高,而其特有的四核处理器具有1.5 GHz的主频,使得对摄像头采集数据的处理更加实时,并流畅支持1280×800高清屏,可通过LCD屏指定小车路线范围,实施控制。控制器内部结构图如图2所示。
图1 系统整体结构图
智能小车对于接收指令的实时响应决定了最终的控制效果,本文中的智能小车采用意法半导体公司的STM32F103C8T6作为控制芯片,通过产生的PWM信号来控制直流电机的转速。在实际控制过程中需要涉及到小车的定向旋转,以及直线行驶的问题,于是在小车中引入了光电红外对射管作为小车的测速模块。
当直线行驶时,小车将通过测速码盘的脉冲输出来判断转速的大小,从而作出左右轮转速的调整。同时小车会将调整的结果存入到内部Flash中作为下一次启动时的调整数据,这样只要在实际运行前做测试调整,小车就会在直线行驶时,实现不同场地的阻力误差记忆。小车控制板结构图如图3所示。
小车的顶部色盘必须同时具备小车位置定位和方向定位功能。由于通过形状定位的传统方式对摄像头要求过高且识别精度有较大误差,本设计采用两个圆盘的颜色识别方式来实现这一功能。小车顶部色盘如图4所示。
图4 小车顶部色盘
小车的控制数据由8个字节组成,如下所示:
其中,1、2、3、8为指令校验码,4~7为指令内容。第1个字节到第3个字节表示数据头,都是0x80。第8个字节表示数据尾,是0x81。这样只有出现数据头的字节,其后面的内容才被小车识别为有用的数据,使得小车正确运转。数据尾的出现代表对小车的控制结束。
数据内容为发送控制指令的具体形式。小车有以下几个命令。
(1)直线前进
(2)停止
(3)原地转向
小车转向的幅度可以从0x01到0x1f,方向0x01代表右转,0x02代表左转。
④小车左右轮前进
由于USB摄像头采集到的颜色数据为YUV格式,需要将其转换成RGB格式来显示。所以在确定小车搭载定位色盘的颜色时需要选定特殊的颜色,以使得采集到的数据容易被分辨。本设计在原色选择时采用Y、U、V为三维坐标轴使得色盘的YUV分量之间存在一定差距,再通过公式将其转换成RGB基色值[6]。
软件平台为Linux Kernel 3.5、Qtopia-2.2.0;交叉编译环境为嵌入式QT、arm-linux-gcc;开发语言为C++。
此模块在一个线程中,先读取配置文件,得到各个颜色的Y、U、V平均值,然后从摄像头取得一帧的图像,按行扫描每个像素,根据Y、U、V平均值确定Y、U、V的阀值对像素的Y、U、V值进行匹配,从而确定像素的颜色。程序把各个颜色的像素点分类,同一颜色的像素点坐标放在一起,然后算出同一颜色像素点的中心坐标。然后通过表1对应到小车的坐标。
表1 小车颜色像素坐标
得到3辆小车的中心点坐标和方向点坐标后,存放在内存中,供其他模块调用。摄像头采集数据流程图如图5所示。
图5 摄像头采集数据数据流图
集群小车在行走的过程中为了防止相互之间的碰撞,必须采用相应的防碰撞措施。在本设计中采用角度与距离来实现防碰撞控制,当小车1和2之间的距离L<L′时,L′为—固定值,意味着两车之间有碰撞的可能性[7],此时需对小车1的运动方向与两车连线之间的夹角进行计算。当r<r′时,则小车1停止运动。当不满足夹角r′要求时,小车1则不会停止[8],r′为—固定值。两小车防碰撞原理图如图6所示。
图6 两小车防碰撞原理图
小车在防碰撞过程中若出现全部车辆停止(即进入锁死状态),则启动应急预案,使边缘小车在原地向锁死反方向转动相应的角度,并行走一段距离,以解除锁死状态[9]。
小车控制软件流程图如图7所示。
图7 小车控制软件流程图
为防止因环境颜色和光照的影响,测试场地为一块2 m×3 m的长方形布料,刚好是摄像头的拍摄范围。
①小车测试。通过直线行驶指令,将小车放在测试场地中,使小车直线行驶一段距离。小车将获得两个不同的PWM信号占空比,作为下一次启动时的配置参数。
②小车顶部色盘像素的采集。为消除因光照强度所引起的颜色误差,需先将与小车顶部色盘相同颜色的纸片放在场地中间,摄像头将采集这一坐标的像素值作为参考值[5],用于实际测试过程中的颜色识别与定位。
③为小车设置起跑路线图。通过LCD屏,在上面为小车指定运动的路线图,其后小车将按照设定的轨迹行走。行驶过程中小车很好地实现了集群之间防碰撞的功能。
小车路线图如图8所示。
图8 LCD上指定的小车路线图
基于颜色识别的集群控制系统,可以通过颜色的采集来实现定位,是自动控制和人工智能方面的一种可行方式,具有运行稳定、使用方便的优点。而多控制对象的集群控制理论的研究,使得多目标协同工作成为可能。基于此模式的智能控制设备具有广阔的应用前景。
[1]周见行,高红俐,齐子诚.基于基于摄像头自动跟踪定位的疲劳裂纹在线测量方法研究[J].中国机械工程,2011,11(6):1302-1304.
[2]秦峰,刘甜甜,尤海鹏.基于图像识别的水下机器人自主避障系统[J].兵工自动化,2012,31(11):87-89.
[3]王鹏,秦文进.基于ARM和FPGA的嵌入式工业控制器设计[J].自动化与仪器仪表,2014,1(1):53-55.
[4]潘浩,杨宜民.一种基于光照变化补偿的颜色识别方法[J].计算机与现代化,2012,4(3):201-204.
[5]李贵俊,刘正熙,游志胜,等.一种基于色差和彩色归一化的车身颜色识别算法[J].计算机应用,2004,24(9):47-49.
[6]王志刚,王庆.一种分级的车牌颜色识别方法[J].计算机过程与应用,2008,44(24):178-180.
[7]赵刚,黄席樾.障碍空间中的飞行器编队与集群控制研究[J].系统仿真学报,2009(2):92-96.
[8]Wang X,V Yadav,S N Balakrishnan.Cooperative UAV Formation Flying with Obatacal Collision Avoidance[J].The IEEE Trans.on Control System Technology(S1063-6536),2007,15(4):672-679.
[9]Balch T,R C Arkin.Behavior-based Formation Control for Multirobot Teams[J].The IEEE Trans on Robotics and Automation(S1042-296),2008,14(6):926-939.