基于PIC32实现的智能球类回收车,软硬件协同

时间:2015-01-21

    近年来,随着改革开放的不断深化,人民生活水平有了极大的提高,更多的人参与到体育锻炼中来,运动员的水平也有了飞跃性地上升,在训练、比赛中提高效率显得越来越重要。而在训练场地以及比赛现场,如果能在不需要人工控制的情况下,就自动将练习时击出的大量乒乓球、网球以及可能构成不安全因素的铅球等球类捡回,无疑会减少运动员或工作人员的不必要的劳动,极大地提高训练、比赛的效率。在我们普通民众健身运动累了时也多么希望有这么一个工具能帮我们完成这些不必要的工作啊!

    针对这一问题,我们思考,是否可以设计一种自动找球、捡球的小车,它可以在运动场地中自动寻找、识别、跟踪散落在地上的球体,如发现符合此项训练球类特征,小车将自动调整运动接近此球,然后控制机械臂将进入U型槽的球体“收入囊中”,这既避免了不必要的劳动,提高了训练、比赛的效率,同时可以让运动员更加专注地投入比赛,取得更好的成绩。

    基于上述考虑,本队提出了如下设计方案---智能球类回收车。

    本作品是以PIC32单片机微控制器,以自动目标跟踪为主要工作方式的智能小车系统,它由视频采集分析模块、智能小车驱动模块以及机械臂控制模块等部分组成,此系统有自动目标寻找、识别、跟踪、捡拾等功能。

    利用此系统,在乒乓球、网球等训练场地以及铅球等危险比赛现场,可以在完全脱离工作人员控制的情况下,自动找寻目标捡拾训练、比赛用球。这样就避免了工作人员或运动员不必要的工作,提高了训练效率,也避免了铅球、铁饼等比赛、训练中不安全事故发生的可能。在球类比赛百花齐放、全民运动热情高涨的今天,该系统的研发、生产、应用必将具有重大的社会、经济效益。

    系统功能概述

    本系统的工作过程如下:

    ①通过摄像头观察球场范围,寻找小球,当视野中出现一个或多个完整的小球时根据近大远小选择的一个调整小车位置使小球正好位于小车视野正中心。

    ②控制小车运动,在运动过程中不断校正小车方向,确定使其正对要捡起的小球,使小车到达小球位置。

    ③当小球进入车前设计的U型槽时触动传感器使小车进入捡球模式,控制一个位于小球上方类似装羽毛球的筒形状的筒放下将小球压入其中,完成捡球。

    ④继续扫描其他目标进行捡拾,按远近关系依次捡完球场上所有的小球。摄像头观察检测到没有剩余小球时找寻返回位置标志(比如红色小旗)返回,完成任务。

    本系统主要包括视频采集分析模块、智能小车驱动模块以及机械臂控制模块等部分。

    硬件模块:

    软件流程:

    我们的项目涉及到的软件模块主要由三个部分组成:

    一、摄像头定位模块:摄像头结合I2C连接到单片机上。主要进行图像收集,计算定位判断,为下层小车控制提供运行控制字。

    二、小车控制模块:根据上层提供的控制字,控制步进电机进行左转,右转,前进的运动。这里考虑到小车是在运行过程中,通过摄像头收集到的数据进行运动判断,因此小车运行的时间用定时中断严格控制。每次小车转弯为3度,前进距离为12cm。

    三、机械臂控制模块:机械臂的控制模块采用中断控制,当小车的u型槽前部判断小球已进入槽后,进入机械臂中断,控制机械臂向下运动,套入小球后,再让机械臂回到原处。接下来回到主程序继续执行下部操作。

    下面,通过流程图具体介绍软件的运行流程:

    首先是主函数:主函数是一个while的无限循环:

    接下来对上面的各个部分进行说明:

    (1)

    摄像头拍照模块采用查询方式,摄像头拍下照片,等待所有数据都传给单片机后,标志位flagd置1。这里摄像头与单片机是运用I2C进行连接。流程图如下:

    (2)

    对摄像头采集进来的图片进行轮廓分析,判断小球的位置。未看到小球时,小车原地旋转,然后再次进行拍摄。当看到多个小球时,根据远近关系照成的平面上大小的不同,将的一个锁定为目标。然后根据小球的位置,向小车的控制模块发送控制字,流程图:

    (3)

    根据上一步送下来的控制字control对小车的运动进行控制,小车的驱动模块接单片机的不同IO口,对IO给出不同的输出分别控制小车向左旋转,向右旋转以及前进。旋转以及前进的通过定时中断控制;流程图如下:

    (4)

    有两片塑料片做成的类似人体静脉瓣的装置,当小球进入U型槽后,由于该结构使得小球不会再从槽中脱离出去,并且再槽壁装有传感器,一旦小球入槽,则进入下一步的中断子程序,从而进入捡球状态。流程图如下:

    (5)

    当检测到小球入槽后,就进入该中断。中断首先将IO清零,防止小车仍然在运动。然后控制机械臂的电机转动,实现升降。机械臂的筒口也是采用塑料片做成的类似人体静脉瓣的装置,只用筒罩住球就能保证球不再掉出来。流程图如下所示:

    工作原理

    视频处理与自动目标识别模块工作原理

    1.1原理概述

    摄像头拍照模块采用查询方式,摄像头拍下照片,等待所有数据都传给单片机后,标志位flagd置1。这里摄像头与单片机是运用I2C进行连接。对摄像头采集进来的图片进行轮廓分析,判断小球的位置。未看到小球时,小车原地旋转,然后再次进行拍摄。当看到多个小球时,根据远近关系照成的平面上大小的不同,将的一个锁定为目标。然后根据小球的位置,向小车的控制模块发送控制字。

    1.2 设计细节

    本设计采用一种基于球色的球类检测方案。

    球类检测是指: 在输入图像中确定是否有球体存在,如果有则确定其位置、大小的过程。球体检测问题的提出基于人脸识别,人脸识别的步就是要从图像中检测并定位出人脸的位置,随着模式识别技术的发展以及自动化程度的提高, 人脸检测开始作为一个独立的领域进行研究。

    球体检测方法主要有基于几何特征的方法:基于球色模型的方法和基于统计理论的方法。本文将主要介绍一种基于球色的球体检测算法!

    1.2.1  色彩空间的选择

    为了对球色进行分割, 把球体区域从背景中分离出来, 需要使用适合不同光照条件下的可靠的球色模型!研究显示:尽管不同种类、不同材质的球色看上去不同,但这种不同主要集中在亮度上, 在去除亮度的色彩空间里,不同球体的颜色分布具有聚类性。本文中的球色模型就是在这样的色彩空间里建立的。通常所用的表现彩色图像的方法是R G B , 但是在这里, R G B 空间不再适合用来作为球色模型的色度空间,因为在R G B 图中, (r,g,b) 这三个分量不但代表着图像的色彩分布, 而月还表示着图像的亮度(图像中每个像素的亮度等于其R G B 三个分量之和),而亮度是一个非常不稳定的参量, 它很容易受到周围环境的影响而导致分离球色区域的失败。因此采用把亮度分离的色度空间能够减小亮度的影响。

    Y Cb Cr 色彩空间中的球色分布聚集在色度空间中一个较小的区域中, 它具有以下几个优点:(1)具有与人类视觉感知过程相类似的构成原理;(2) Y Cb Cr色彩空间格式广泛地应用在电视显示等领域中, 也是许多视频编码, 如MPEG、JPEG 等标准中普遍采用的颜色表示格式;(3)Y Cb Cr色彩空间格式月有与HSI等其它一些色彩空间格式相类似的将色彩中的亮度分量分离出来的优点。

    因此,本文终选择了Y Cb Cr色彩空间进行球色建模。

    1.2.2  球色的相似度计算

    依据球体颜色在Y Cb Cr空间的概率分布特性,建立一个高斯球色模型,其概率密度函数用式(1)表示:

    (1)

    其中C 为协方差矩阵

    (2)在前面建立的球色模型的基础上, 通过球色相似度计算公式:

    (3)

    可以计算单个像素的球色相似度值, 并且很容易得到整幅图像的球色相似度值。每

    一点像素的球色相似度值除以球色相似度值,作为i亥缘素点的灰度值,从而得到球色相似度。

    由于我们传输的图片属于RGB模式,因此需要进行颜色空间变化。

    Y = 0.257*R + 0.504*G +0.098*B + 16;

    Cr = 0.439*R - 0.368*G - 0.071*B + 128;

    Cb = -0.148*R -0.291*G + 0.439*B +128;

    1.2.3  图像的二值化分割

    二值图像是指图像中的每个像素只取两个离散的值之一(如0, l) ,用数学公式表示为:

    (4)

    上式中, f 认刃表示一幅数字图像, x,y是该图像中某个像素点的坐标值,0 和1 表示该像素的像素取值。0 和1是个抽象的表示,并非实际像素值,它可以代表不同的颜色,在这里0代表黑色, 1代表白色, 所得到的图就是一个黑白二值图。将图二值化是因为,二值图像中的许多运算是逻辑运算而不是算术运算, 所需的处理时间很短,计算速度快,而且算法也容易理解和实现。

    二值化图像可以通过选取适当的阀值获得。选择合适的阀值是图像二值化分割效果好坏的关键。通过对球体灰度图像进行分析可以发现,真正的球色像素相比于非球色像素往往拥有更高的亮度,所以可以设定一个阀值,当该点像素的近似度高于这个阀值则认为该点为球色像素并置1,反之若低于该阀值则置0。

    1.2.4  候选球体的确定

    经过平滑滤波处理后, 二值化图中的部分噪声可以被去除,但由于背景较复杂,受影响的因素很多, 图中仍然会存在许多面积较小的非球体区域。为了减少算法的工二作量,需要进一步排除这些不含球体的区域。因此对二值分割图中的这些区域进行比例结构的分析,过滤掉不可能的球体区域,以确定终的候选球体区域。

    本文将用以下两个方法对候选球体区域进行筛选:

    (1)区域的面积:去掉面积较小区域,即删除面积小于30 以下的区域, 其面积为该区域中的白色像素点的个数。

    (2) 区域的长宽比:一般来说球体(以网球为例)的直径介于6.35cm至6.67cm之间,考虑到其他球体直径可能大于网球, 故选取的范围的上限可以适当放大,经过多次实验发现, 当把球体的选取范围定在直径为8cm的时候,真正的球体区域一般都能包含在内,不会被删除。这个条件考虑到了真正包含球体区域的范围大小, 排除了一些类似球类颜色但直径不合要求的区域。

    1.2.5  总结

    综上所述, 基于球色的球体检测方法能较好的分割出可能的球体区域, 把接近于球体颜色的区域从图像中分离出来, 使得目标区域能较好地提取。由于此算法首先筛选掉了一部分背景,减小了球体搜索范围,故可以大幅度提高检测的速度。对分割出来的可能球色区域几何直径的筛选, 进一步排除了较为明显的干扰区域, 在一定程度上减少了后续模板匹配过程的工作量。

    2、小车驱动工作模块工作原理

    该模块充分应用了pic32单片机存储容量大, 运算速度快,数据传输迅速的特点,成功将Y Cb Cr色彩空间进行球色建模的算法移植到单片机上实现,大大缩减了成本。

    单片机首先通过串口(38400Baud)接受摄像头拍摄获得的R G B图像(70*70),然后将每个像素点的R,G,B转成Y,Cr,Cb。接下来执行上述所提“根据Y ,Cb,Cr色彩空间进行球色建模”的算法(算法具体实现见附录代码,已做详细注释),实现对小球的空间定位,判断小球的重心与摄像头中心的位置关系。再根据得到的位置关系,对单片机的IOA口赋值(0:停止,1:左转,2:右转,3:直行),从而驱动小车的电机实现小车的运作。

    这里关于的判断至关重要。我们经过反复验证。终选定:对于左转,右转延时10个毫秒,从而实现X轴2个刻度的改变。对于前进延时20个毫秒,从而实现Y轴3个刻度的变化。之所以选择上面的转弯以及前进步长,是考虑到计算得到的重心与摄像头中心可能存在的误差,经过我们的试验证明,上述误差是不会影响终结果的。

    3、机械臂捡球模块工作原理

    有两片塑料片做成的类似人体静脉瓣的装置,当小球进入U型槽后,由于该结构使得小球不会再从槽中脱离出去,并且再槽壁装有传感器,一旦小球入槽,则进入下一步的中断子程序,从而进入捡球状态。

    当检测到小球入槽后,就进入该中断。中断首先将IO清零,防止小车仍然在运动。然后控制机械臂的电机转动,实现升降。机械臂的筒口也是采用塑料片做成的类似人体静脉瓣的装置,只用筒罩住球就能保证球不再掉出来。

    4、应用前景分析

    本智能球类回收车是未来体育运动中电子系统的重要组成部分的基本模型。本系统将实现在复杂球场环境中自动寻找、识别、跟踪符合既定要求的目标并回收的功能。

    如果将来投入实地应用,可采用更加专用的控制系统及硬件系统,即可实现更高效率的工作,不仅可以捡拾网球等小球还可以捡拾篮球、排球等相对较大的球体以及甚至其他形状的运动器材,使参加运动的人能全身心沉浸到运动带来的欢乐中而不用管捡球等一些繁琐且费时费力的工作。运动员可以进行更加高效有序的训练,取得更好的成绩,体现本系统的设计初衷,彰显本系统的社会、经济效益。

上一篇:LXI总线B类电压表的设计与实现
下一篇:上海通用汽车如何一分钟找到CAN总线的问题节点

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料