智能车控制算法是影响智能车运动性能的重要因素之一,在输入信号有限的条件下,运用一种有效的算法,对于提高智能车的运动性能,有着重要的作用。系统方框图如下:
![]() |
|
图3.1 系统方框图 |
使用集成红外传感器的缺点是它对路径的检测是离散的量,不能连续观注到黑线位置的变化。当传感器的横向间隔距离比较稀疏时,模型车进行方向纠正的时候会在黑线两侧产生较大的波动。所以传感器的间距不能过大,应当尽量的缩小。但是,传感器的分布过密也有不足之处,如果过密会大大增加路径检测模块的质量,加大模型车的转动惯量,不利于过弯。同时由于传感器的数量的限制,如果在个体之间布置过密,则整体的宽度也受到影响,检测范围缩窄,同样不利于模型车的稳定运行。所以,传感器的间距应当根据实际的情况,在各种利弊之间进行合理的取舍,最终确定比较适中的间距。
经过反复的分析和实验测试,最终我们采用十二只光电传感器“一”字型等距排列,间距是15mm。如图3.2所示:
![]() |
|
图3.2 前排光电排布示意图 |
为了能够有效的反应黑线相对于小车的位置,对前排光电进行坐标赋值,从左至右依次是-11,-9,-7,-5, -3,-1,1,3,5,7,9,11,当某一个或两个光电检测到黑线时(即返回信号为低电平时),通过软件编程,根据光电反馈回来的高低电平的信号,当某个光电返回的信号为低电平时其对应的坐标值才为有效值,而反馈回的信号为高电平的光电对应的坐标值无效,为零。单片机根据收到的数据信息对十二个坐标值进行累加,然后除以具有有效坐标值的光电数,即为黑线相对于小车前排光电的位置坐标。通过软件实现的细分的方法,可以把黑线相对于小车的位置值由12个提高到25个,在宽度不到170mm的范围内细分为25个有效坐标点,即为黑线与小车的相对位置每偏离5mm,此偏差即会被单片机识别,这个精度完全可以满足对小车的控制要求。
在制作前排光电和调试的过程中,我们常常遇到光电管坏了而不知道,想知道某个光电处于的状态时,信息却无从知晓。为此,我们把每个光电串了个发光二极管(如图3.2),利用一定阻值的上拉电阻提高它的电压,使当光电检测到黑线时对应的二极管发光。这样我们就可是方便的观察小车在运行的过程中每个光电的工作状态了。
在实际跑道调试的过程中,由于长时间在同一跑道测试小车,使跑道局部受损或者由于小车轮胎的摩擦造成跑道变黑 ,常常造成光电误判,即当某个光电检测到受损或者变黑的地方误判成是黑线,而且光电对光照特别敏感,再加上每个光电的特性也不完全相同,所以,对于十几个光电能否同时适应不同的环境,会不会出现误判现象对于小车能否稳定运行起到至关重要的作用,光电之于智能车就相当于眼睛对于我们一样重要。因此,为了解决这个难题,我们在硬件上已经采取了一定的措施,例如每个光电都加了可调电阻,通过改变光电检测返回的电平信号的大小,从而在一定程度上能够使光电在同一环境保持效果一致。为了更有效的解决问题,我们采用软件滤波的方式,使在某一时刻同时最多只有3个光点是有效的,这样就大大减小了误判的几率,而且不用每次改变环境后都要重新调试光电,利用这种方案后可以说已经解决了误判的问题。
3.2路径形状判断
路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣。根据规定,跑道的形状主要是直道、普通弯道和连续弯道(S弯道),能否控制好转向和速度最重要的一个因素就是能否准确的判断路径的形状:即在直道上以尽可能快的速度行驶,在遇到弯道时能够及时的降速和转弯。
a)判断入弯:在这里采用记录黑线相对于小车中心的偏差的连续变化次数来实现对弯道的判断,当黑线连续向右或者向左偏离5次,即为前方路径为弯道。而且为了确保小车能尽量准确及时的判断出弯道,还通过软件加了保险措施:以某个边缘的光电为必须转弯的极限值。即当黑线相对于小车的坐标出现大于等于7或小于等于-7时,小车一定运行在弯道上。
b)判断出弯入直道:经过常时间的调试发现,由于小车的前瞻距离短及舵机相应滞后等因素的影响,小车在转弯的过程中,黑线相对于小车中心的偏离量较大,而当出弯入直道时,偏离量会减小到零,经过舵机的调节会迅速保持偏离量为零,这样小车就能够稳定的在直道上运行。基于以上经验,采用中间三个坐标值(-1,0,1)为直道标志位,即当黑线相对于小车的坐标为以上三个值时,即为小车运行在直道上。
c)判断S弯道:S弯道也是弯道的一种,基于以上对弯道的判断方法完全可以实现对S弯道的第一个弯道的判断,那么如何才能实现连续弯道的判断呢?考虑到路形的可能情况,普通弯道的下一个路形不是直道就是连续弯道(即S弯),那么,在出弯的程序中加入一个过渡函数,即在一定时间内连续采集路况信息,如果出现偏离量增大或者减小(即没有维持零状态)的情况,那就说明下一路径形状为弯道,而刚才经过的弯道和现在的弯道将构成S弯道。如果在过渡函数执行的过程中,偏离量一直为零或者以零为中心上下波动,那么说明当前的路径形状为直道。




