第三届全国大学生智能汽车邀请赛技术报告
图4.2.1 传感器检测电路
4.3 光电传感器信号的处理
主要分成参数自整定和跑车两个阶段,其原理如图4.3.1所示。
i++i<15Yaverage[i]=(max[i]+min[i])/2Ni++;;Ni++Nm<10000?YNi<15Ystate[i]>max[i]m++NYmax[i]=state[i]min[i]=state[i]i<15YAD[i]>average[i]NYposition=position+abs(i*10)2 路径检测流程图图图4.3.1 路径检测流程图
10
第四章 光电传感器系统及信息处理
4.3.1 参数自整定
由于传感器制造工艺的问题,每个传感器的特性存在差异,且同一个传感器在不同环境中的特性也会不同,为此,在运行之前必须进行参数自整定。
自整定的步骤为:在赛道上推动小车,使传感器从白色区域跨越黑色牵引线到另一片白色区域。在此过程中,单片机的AD口对每一个传感器的输出电压进行采样,求得最大值max[i]和最小值min[i],采样结束后,求得平均值
average[i]=(max[i]+min[i])/2 参数自整定结束。
其中,i为第i个传感器的编号。max[i]为第i个传感器的电压最大值,此时检测到白色背景,min[i]为第i个传感器检测到黑色牵引线时的电压,将平均值average[i] 设为第i个传感器的阈值。 4.3.2 跑车
在跑车过程中,对传感器的输出进行二值化处理,这样可大大降低数据量,提高了程序的执行效率。
单片机对传感器的输出电压进行检测,然后和阈值电压进行比较,如果大于阈值电压,则判断为检测到白色背景,若小于阈值电压,则为检测到黑色牵引线,由此确定黑色牵引线的位置。
由于单片机AD采样的精度非常高,这使得传感器离地面的距离可以很远。在我们设计的系统中,传感器离地面的高度为15cm,可以达到25cm的前瞻。
4.4 基于光电传感器的起跑线识别方法
比赛中要求智能车行驶完两圈后能够自动停车,这就需要传感器具有检测终点线的功能。
由于光电传感器的局限性,几乎不能区分终点线和交叉路口,因此在检测算法中不区分终点线和交叉路口,作为同一状态。
经试验,小车在正常行驶过程中,一般为一个或两个传感器检测到黑色牵引线,如果单片机检测到有五个以上的传感器同时检测到了黑色牵引线,则判断是遇到了终点线或者是交叉路口,此时将计数器加1。
但是由于程序的执行顺序非常快,在经过终点线或交叉路口的过程中,可能已经执行了很多次检测,计数器也相应加了很多次,这样将会产生误操作。这一问题可以通过边沿检测算法来解决。
11
第三届全国大学生智能汽车邀请赛技术报告
边沿检测算法的执行流程如图4.4.1所示。
检测到路口吗?
Yflag=1flag=0flag_last=flag_preflag_pre=flagflag_pre>flag_last?Ynum++图4.4.1 边沿检测算法流程图 图4 边沿检测算法流程图经测试,这种算法检测起始线的正确率达90%以上。但必须事先知道赛道中交叉路口的数目,并通过拨码开关来进行设置正确的停车数。如在图4.4.2的赛道中,计数器的参考值应设置为7。
图赛道示意图 图4.4.2 3 赛道示意图4.5 基于光电传感器的上下坡识别方法
实际的赛道中加入了12-15度的上下坡,如图4.5.1所示,这会对普通的
12
NN
第四章 光电传感器系统及信息处理
路口检测算法产生干扰。传感器的输出电压随着距离的减小而增加,经测试,传感器在通过坡道的过程中,电压的变化大致成如图4.5.2所示的一条曲线关系。
BCAD图4.5.1 坡道示意图
图4.5.2 传感器上下坡采样电压变化曲线
在前面检测终点线的算法中,如果有5个以上的传感器检测到了黑色牵引线,就判断是遇到了交叉路口或终点线,从图6曲线中可以看出,小车运行到B处和C处时,传感器与赛道之间的距离突然增大,传感器下方即使为白色,其输出电压也会低于阈值,此时将会出现所有传感器均检测到黑色的情况,路口检测算法将判断检测到了路口,产生误操作。
上述问题只出现在坡度大于某一临界角度的情况下,当坡度小于这一角度时,传感器工作正常,不会产生误操作。而这一临界角度又受到赛道材质、环境光等因素的影响。出于对比赛环境和赛道的未知性考虑,我们选择在软件上将这段坡道屏蔽掉。主要思想是:检测到上坡后,关闭计数器,检测到下坡后,再打开计数器。
要检测上下坡,可以采用加速度传感器,检测小车在垂直方向的加速度。但是加速度传感器价格昂贵,对滤波电路和固定位置要求较高,而且对震动非常敏感,对于小车并不适用。因此我们设计了用前排光电传感器来检测上下坡的新方法。
小车在上坡过程中,当运行到A点时,传感器离地面的高度开始降低,从
13
第三届全国大学生智能汽车邀请赛技术报告
曲线中可以看出,这时传感器检测白色背景时的输出电压将比自整定时的最大值还要高,运行到D点时也会出现和A点相同的情况,应用这一特性,我们可以检测上下坡。我们可以做出这样的判断:如果有十个以上的传感器输出电压>最大值+20,那一定是到了上坡道,则关闭计数器,如果再次满足条件,那一定是到了下坡道,再开通计数器。这时会出现和路口检测算法同样的问题,在通过坡道的过程中程序已经循环很多次,会产生误操作,使用边沿检测算法可以解决这一问题。
在实际测试过程中,我们发现智能车在坡道上的抖动会使判断出错,对此,我们设计了一个用软件实现的迟滞比较器,上门限和下门限分别设置为max[i]+10和max[i]+20(如图4.5.2),相比之前使用单门限比较器,大大提高了系统的可靠性。光电传感器对距离非常敏感,在上坡处电压会有明显的升高,但是迟滞比较器的门限电压最好经过赛道测试后再选择合适的值。
图 4.5.2 迟滞比较器示意图
max[i]+10min[i]+20经过实验测试,用这一方法检测上下坡性能非常稳定,正确率达95%以上。
4.6 总结
使用光电传感器来实现智能车循迹、检测路口和上下坡,充分挖掘了光电传感器的潜力,简化了硬件部分的设计,大大节省了开发成本,而又不会过分增加软件的处理任务,可以在实际的智能寻迹车系统中得到很好的利用。
14