本帖最后由 novakon 于 2014-4-24 18:40 编辑 我相信有很多在校的工科学生会参加这样的比赛,而参加的时候又手忙脚乱的。
我参加的是华南农业大学工程学院科技联合会的智能小车比赛,并在比赛中获得了第一名。
参赛经验如果不分享出来,烂在我肚子里面,就太浪费了。希望下面这篇文章,可以帮助刚接触这类比赛的同学,节省一部分时间,同时多学一点东西。
如果正在看这篇文章的你是一个高手,或者自认为是高手,那么欢迎提意见,但不要搞人身攻击;我写这篇文章本就不是给各位高手看的,只为给参加这种入门比赛的新生介绍经验,自然不会写的很高深;而这也并不代表我的水平很低。
智能车比赛,其核心在于智能车的设计与制作;而小车的设计与制作都必须以迎合比赛规则为准则。所以,首先我们来看看比赛规则:
下面我根据实际参赛情况,解释一下这几段话。
参赛车准备完毕后位于候车区,待官方车开动行驶,方可出发跟随官方车循迹行驶。
简单的说,你的车前方有一辆官方车,你的车在前进的时候,不仅要保持和官方车之间的距离(“跟随”),同时还要靠地上的黑线来维持方向(“循迹”)。
首先讲一下循迹。这类比赛中,“循迹”一般是指地板上有一条黑胶带粘出来的黑线,小车通过一定的方法,来跟随这条黑线行走。
这有点像汽车的自动驾驶,根据路的走向调整方向,使车保持在路中间。基本的思路:先检测黑线所在的位置(偏左、居中、偏右),然后决定小车向哪边转向。比如,当地板上的黑线处于小车中线偏左的时候,说明小车不是在黑线的正上方而是偏右。此时控制小车向左转,直到黑线回到小车正下方。如果地板上的黑线偏右,则控制小车向右转……如此一来,小车会不断地试图通过转向保持自己在黑线的正上方,于是就实现了跟随黑线行走的功能,也就是所谓的循迹。
黑胶布和白塑板都是很容易买到的(测试的时候需要用),不赘述。淘宝有很多店铺直接卖整一套循迹小车方案的,这一类小车基本上是用红外对管来实现黑线检测的。红外对管,就是一个红外二极管和一个光敏三极管,我们给二极管通电令其发出红外光,红外光射到物体上反射回来,被光敏三极管收到,使得光敏三极管导通。三极管的导通电流与收到的光线强度有关,光线越强电流越大。只需要串一个电阻,就可以将这个电流转换为电压。如果对管的下方是白色地板,则反射强烈,电压高;如果下方是黑色胶布,则反射弱,电压低。把这个电压和某个固定电压值进行比较,即可决定某对管下方是否有黑线。淘宝上买到的商品循迹模块,使用运放或者电压比较器作电压比较(比较结果以高低电平的形式输出给单片机),固定电压值通过一个电位器(可变电阻器)来调节,可以通过用螺丝刀拧的方法调节灵敏度。很多新手不明白这类循迹模块的原理,不懂怎么调,最终导致循线失败。
我直接使用了红外对管(相对于商品模块更便宜),配合几个电阻焊在洞洞板上。电压的采集和比较是用单片机完成的;我的程序比较三对对管返回的电压值,哪边电压低(亮度低),就往哪边转向,低速下效果很好。且不需要调节电位器之类,因为是红外对管之间的电压值(也就是亮度值)互相比较,而不是与某个设定值比较。
阳光中有很多红外成分,会导致红外对管输出值偏高,在强光下应采取一定的遮光措施。有的同学在宿舍试着可以,去到现场就翘辫子,可能是因为这个原因。
那么再讲一讲“跟随”。所谓跟随,就是在行进过程中要保持和前车距离不能太近,但又不能太远。这就需要检测距离,常用的方法是超声波模块测距(也就是我以及所有参赛者用的方法)。这个模块在淘宝可以买到,很便宜,使用就不讲了,大家自己上网找。
一段时间后,官方车停止行驶(约在总赛道1/3路段),参赛车也须停在其后,
待官方车再次行驶,即可加速利用超车道超越官方车,并回到主车道继续循迹至终点。
参赛车停在官方车后、等待官方车驶离,这都是靠超声波测距实现的,不赘述。如果非要讲,就是不断地检测与前车的距离,当距离太近的时候停车,距离太远的时候跟上。当距离足够近并保持一段时间,说明官方车已经停车;当距离再次增加,表示官方车重新启动,此时可以超车了。
后面讲到超车,这里所谓的超车,路线我已经在图中用红线给出了。这一段我把它叫做“盲跑”,因为地板上没有什么东西能够辅助你找到方向;那个虚线第一是无法用来循迹,二是离官方车太近,只是作为装饰用途,而且从那里走会蹭到官方车,输掉比赛。
参赛者们为此想了很多办法。一个最简单且被广泛使用的方法:让马达以一个固定的速率转一段的时间,再以另一个速率转另一段时间……由于时间和马达的功率都是固定的,所以走出的折线轨迹基本上也是固定的。通过不断的尝试和调整,最终你的小车将会刚好走出一条从官方车旁边超车的轨迹。师兄们把这种方法称为定时跑。超车完成之后,就恢复红外循迹功能,跟着黑线走到终点,比赛就完成了。
--未完待续
200字以内,仅用于支线交流,主线讨论请采用回复功能。