
2.3 软件设计
2.3.1 软件总体设计
根据比赛项目要求,智能搬运小车只搬运A、B、C、D、E五个点的色块,先将五个点的色块全部搬运到中转线上,再对色块进行颜色识别,并搬运到相应的颜色分类区域。搬运结束后,智能搬运小车回到起始位置。软件总体设计框架如图2.8所示。

图2.8 软件总体设计框架
在调用Arduino静态库进行编程的情况下,主函数在开始阶段必须调用init函数进行硬件接口资源的初始化,接着就是智能搬运小车所有外设的初始化,延时2s后进行白平衡调整。此时,TCS230颜色传感器的LED灯闪烁3次,进行3次白平衡调整。拿走色块,延时2s后,智能搬运小车开始寻线移动,之后进入大循环。主程序函数执行流程图如图2.9所示。

图2.9 主程序函数执行流程图
主函数的大循环采用分支结构,分支结构1~分支结构5是从出发点依次到五个存放色块的点,取色块并搬运到缓存区存放;分支结构6是先识别颜色后,再将色块搬运到颜色分类区域。主函数的大循环搬运流程图如图2.10所示。

图2.10 主函数的大循环搬运流程图
搬运色块到颜色分类区域的过程采用分支结构,先对色块进行颜色识别;然后根据颜色的识别结果,分支结构1是将黄色色块搬运到黄色分类区域,分支结构2是将白色色块搬运到白色分类区域……分支结构5是将蓝色色块搬运到蓝色分类区域;最后一个分支结构是返回到起始区,并停下来。将色块从缓存区搬运到颜色分类区域的程序流程图如图2.11所示。

图2.11 将色块从缓存区搬运到颜色分类区域的程序流程图
2.3.2 QTI传感器的寻线算法
智能搬运小车QTI传感器组包括4个QTI传感器:中间两个QTI传感器位于智能搬运小车中心线的两侧,间距为12mm,与寻线黑线的宽度一致;旁边两个QTI传感器安装在开槽杆件的两端。智能搬运小车按照QTI传感器组的采集值进行相应的移动动作。QTI传感器的寻线方式见表2.5。
表2.5 QTI传感器的寻线方式

QTI传感器寻线算法的流程图如图2.12所示。

图2.12 QTI传感器寻线算法的流程图
2.3.3 超声波定位算法
超声波定位算法主要是在智能搬运小车从中转线上搬运色块时,用于定位智能搬运小车与色块之间的距离,当超声波检测到在前面的某个范围内有色块时,就会做出取色块的相应动作。超声波定位算法的流程图如图2.13所示。

图2.13 超声波定位算法的流程图
2.3.4 白平衡和颜色识别算法
白平衡的调整过程通常需要选定输出比例因子为1∶1(S0为1,S1为1),点亮LED灯,依次选定红色、蓝色、绿色滤波器即可得到三原色对应的时间基准。例如,计算红色对应时间基准的方法为:选定红色滤波器,打开定时器0和外部中断1,当产生255次外部中断时,关闭定时器0和外部中断1。此时,定时器0的中断累积时间即为红色对应的时间基准。白平衡调整流程图如图2.14所示。

图2.14 白平衡调整流程图
颜色识别与白平衡调整的不同之处:白平衡调整的目的是根据255个脉冲数获取时间基准;颜色识别是根据三原色对应的时间基准计算脉冲数的。颜色识别与白平衡调整的过程一致,也是统计脉冲数,只是结束条件不同。白平衡调整是统计到255个脉冲数结束;颜色识别是定时到时间基准结束。颜色识别流程图如图2.15所示。

图2.15 颜色识别流程图
2.3.5 搬运过程
在搬运过程中,智能搬运小车主要分为两个动作,即中转过程和搬运分类过程。
(1)中转过程
智能搬运小车通过寻线分别移动到A、B、C、D、E五个点上,将五个点的色块搬运到中转线上,用定时器定时寻线,间隔一段距离后放下色块(最后一个色块不用中转)。中转过程分为三个步骤:第一个步骤为先寻线到中心点,再转向有色块的方向,该程序段定义为中转子1;第二个步骤为从中心点去某个点搬运色块,并掉头寻线,该程序段定义为中转子2;第三个步骤为从中心点定时盲走,间隔一段距离后放下色块,该程序段定义为中转子3。中转过程三个步骤的流程图如图2.16、图2.17、图2.18所示。

图2.16 先寻线到中心点,再转向有色块方向的流程图

图2.17 从中心点去某个点搬运色块,并掉头寻线的流程图

图2.18 从中心点定时盲走,间隔一段距离后放下色块的流程图
(2)搬运分类过程
智能搬运小车在进行色块中转后,统一将所有的色块都搬运到对应的目标区域,中转到第五个点的色块时会对色块进行颜色识别。将中转线上的色块搬运到颜色分类区域的方法与从五个点将色块搬运到中转线上的方法类似,其区别是先对颜色进行识别;再将中转线上的色块搬运到对应颜色的分类区域;返程时,智能搬运小车通过超声波传感器定位本次所要搬运的色块,重复上述动作,依次将色块搬运到分类区;最后回到起始区。