智能小车自动纠偏与避撞的实现
摘要: 文中采用MSP430F149作为主控芯片,由超声测距模块、转弯线检测模块、自动纠偏检测模块、电机驱动模块等构成小车。主要对行驶过程中3种情况提出了3种算法,分别是直道二次纠偏算法、弯道纠偏算法和超车算法。实现了智能小车的自主行驶和超车。
文中采用MSP430F149作为主控芯片,由超声测距模块、转弯线检测模块、自动纠偏检测模块、电机驱动模块等构成小车。主要对行驶过程中3种情况提出了3种算法,分别是直道二次纠偏算法、弯道纠偏算法和超车算法。实现了智能小车的自主行驶和超车。
智能车辆是一种机器人,它可以按照预先设定的模式在一个环境里自动行驶,也可以根据现场情况自主执行特定操作。其设计内容涉及自动控制、计算机技术、传感与检测技术等多个学科。智能小车在自动控制领域具有广阔的应用前景。其中,如何保证车辆直线行驶,而不是“之”字形行驶、转弯过程如何保证平行行驶,和超车是其中3个需要解决的基本问题。文中根据3个问题分别提出了解决方法,实际实验
效果良好。
1 现实应用模拟原理
本文模拟现实应用,借助图1所示跑道(2块细木工板拼接而成,离地面高度8 cm,板上边界线由约2 cm宽的黑胶带构成:虚线由2 cm宽、长度为10 cm、间隔为10 cm的黑胶带构成)实现如下功能:甲车车头紧靠起点标志线,乙车车尾紧靠边界,甲、乙两辆小车同时起动,先后通过起点标志线,在行车道同向而行,在超车区超车,并实现两车交替超车领跑功能。
2 系统结构
系统组成结构如图2所示。小车主要由控制中心(MSP430F149单片机)、避撞检测模块、转弯线检测模块(兼作弯道纠偏)、直道纠偏检测模块、电机驱动模块、简易按键、nRF905通信接口、电源等组成。
2.1 避撞检测模块
为保证两车不相撞,需要使两车之间距离保持在一个合适的范围,即避撞。系统使用HY-SRF05超声测距传感器,将其安装在小车车头,可实时测得两车纵向距离,从而控制两车加速减速来使距离保持适中。HY-SRF05有优秀的性能,感应角度:不大于15度;探测距离:2~450 cm;精度可达0.2 cm。设l为测量距离,t为往返时间差,超声波的传播速度为c,则有t=2l/c,而声波在空气中传输速率为
(m/s)。式中T为环境温度;Co为绝对温度时的速度,是常数。从上述两式可以推出
。
2.2 转弯线检测模块
采用红外反射收发对管来检测黑色标志线,放置在小车车头,用于检测图1中的转弯标志线和超车标志线,红外发射管发出的红外线照射到平板上,若红外接收管不能接收到反射回的光线则表示光线全被吸收,则检测出黑色标志线,从而输出高电压,若能接收到反射回的光线则表示检测到非黑色标志线,输出低电压。
2.3 直道纠偏检测模块
行车道40 cm,边界由2 cm黑胶带围成,如果不加防护措施小车容易滑落。正常如果不加防护措施,小车容易脱离跑道。由小车侧面两个E18-D80NK红外传感器进行直道中的纠偏,将两个红外避障传感器分别向外倾斜一定角度,安装在小车两侧,如图4所示,调节红外避障传感器的感应距离,使避障距离介于传感器到跑道与传感器到地面之间,当传感器探测到跑道时,输出低电平,表示小车在跑道上,当探测到地面时,输出高电平,说明小车即将脱离跑道,这时及时纠偏,确保小车正常行驶。
2.4 通信接口
超车时,为了确定两车的位置、及时调节两车的速度、减少超车时间,需要使用nRF905在两车间进行无线通信。nRF905是挪威Nordic VLSI公司推出的单片射频收发器,使用SPI接口与微控制器通信。
2.5 电机驱动模块
采用L298N驱动直流电机,利用它内部的桥式电路来驱动电机,这种方法的优点是利用PWM波来控制电机速度,其余端口可以控制电机的正反转。
3 软件设计
小车行驶模式分为:自主模式、跟随模式。自主模式即前面的车依照事先设定的速度行驶,并自动纠偏。跟随模式即后车紧跟在前车后面,保持一定距离,并自动纠偏。自主模式和跟随模式能自动切换。
3.1 直道纠偏算法
小车行驶过程中,直道纠偏采用两次纠偏的方式。如果仅采用一次纠偏,如图5左所示,虽然可以把小车的前进方向纠正,但小车整体处在跑道边缘,偏离跑道中心,在下次出现偏离时很容易出现来不及纠正而小车已经掉落跑道的情况。根据否定之否定规律,采用两次纠偏,在纠正行车方向同时,调整小车位置趋向跑道中心。该算法如下:
直道纠偏的同时开启TimerA计时;小车离开跑道边缘时关闭TimerA,保存计时值:nTurnHold。
继续转弯,时长为2*nTurnHold(继续保持2*nTurnHold转弯是为了将小车调整向跑道中间);反向转弯,时长为nTurnHold(反向转弯是为了纠正小车方向);恢复原来的行驶模式。具体流程图如图6所示,先判断接近的是左或右边线,做好左右转标记,然后以直道两次纠偏算法进行计算,最后根据左右转标记进行反方向纠偏。
3.2 弯道纠偏算法
采用小车两边转速不同、辅以延时的方法来实现转弯,因此延时时间是关键。然而,通常在过转弯标志线时,车身与线不垂直且角度也不固定,如图7所示。这将造成无法确定一个固定的延时值。为此,采用弯道纠偏的方法,确保小车过弯后姿态可控,该方法流程图如图8所示。其中,每辆车配有两块对称分布于车头两边的转弯线检测模块,当其中有一块检测到转弯线时,先判断是左还是右,如果是左边先检测到线则符号为“+”,否则为“-”,然后立刻打开MSP430的计时器TimerA,计算两块传感器检测到转弯线的时间差。根据符号是“+”或“-”,将上面得到的时间差以一定比例加/减到固定延时时间上,这个比例无准确计算方法,实际数值主要根据跑道的摩擦力,小车速度等客观条件确定,进而得到最终的时间参数(即转弯时长nVeerTime),转弯函数调用此参数。这样一种“负反馈式修正”的方法,能使小车在转弯后基本平行于跑道,且去向跑道中间。
转弯时长:nVeerTime;左、右传感器探测到转弯时间差:nDiffValue;转弯固定延时值:nStaticTime;比例系数:fRatio。
nVeerTime=nStaticTime+nDiffValue*fRatio
超车时需要多次转弯,因而超车标志区设置多条黑线,可以多次调整,将保证小车进入超车区后的姿态最理想。
3.3 超车纠偏算法
到达图1中超车区后,先经超车标志区多条线采用类似弯道纠偏方法调整好小车姿态。然后,根据超声测距的结果判断本车是前车还是后车。若是后车,转弯进入超车道,加速超车后返回行车道,发送无线信号告知另一车超车已完成,最终恢复自主模式行驶。若是前车,则减速慢行,等待后车的超车结束信号,最终恢复跟随模式行驶。超车时后车进入超车区行驶,前车则在原跑道行驶,只要保证两车速度差足够大,就可以保证后车顺利超过前车。
具体流程图如图9所示,其中关键是两车配合的时间问题,通过无线模块可以使两车进行同步。小车在直道、转弯、超车过程中,自动纠偏将一直运行,并实现自主模式和跟随模式自动切换。
3.4 避撞算法
在直线行驶中,为了防止后车撞上前车,需要使用避撞检测模块来保持车距。本文采用HY-SRF05超声测距传感器测量两车间距离,并预设安全值25 cm。车距大于安全值时,后车可加速行驶;车距小于安全值时,则减速。如此,可使得后车跟随前车,实现跟随行驶,但在转弯及超车时,全部自主行驶,不再跟随前车,当转弯,超车等特例操作结束后,再恢复自主行驶/跟随行驶。避撞算法流程图如图10所示。
4 结束语
文中针对具有引导线环境下的路径跟踪这一热点问题,采用多传感器,通过单片机控制,实现智能小车的路径跟踪和自动纠偏的功能,在此基础上还实现了车辆的超车功能。在实际测试中,运行一圈大约需要14.85±1.52 s,小车运行稳定,在测试的25圈中未出现掉落的情况。表明效果较好,并易于实现。
暂无评论