十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(4)

通过前三篇文章,车子程序的大体框架已经建立起来了。但做车嘛总是会有各种各样的问题。
首当其冲的当然就是信标灯的闪烁问题,按照第三篇文章的思路在看不到灯的时候原地旋转直到看到灯,再按照速度合成将前行速度与旋转角速度合成。但是,信标灯是闪烁的啊!
而程序循环的速度又太快,就必然会出现这样的情况
车子对正信标灯后开始前行了,然后开着开着信标灯不亮了,当然这时候车子依旧是正对信标灯的,但是在程序看来它已经看不到灯了,所以,就要原地旋转了,这样一来就偏离了中线,如果你的车子旋转太快的话,那就是呈现螺线式前进的盛况。
大概就是你的小车好好的前进着突然转个圈又若无其事的继续前进着。
而如果你的车子旋转速度不那么快的话,那么你的小车就会强迫症似的一直往一个方向(你设定原地旋转的方向)偏,然后又偏回来。

针对这个问题,大佬有大佬的方法,比如说有人写出了闪烁识别,菜鸡有菜鸡的方法,比如说我。这个问题嘛我最初是这样写的,设定一个变量表示在信标灯熄灭灯相对于车是在左还是在右。如果在左就设定原地旋转的方向为逆时针,如果在右就为顺时针。
而这样的话,你会惊奇的发现
它不螺旋式前进了
它改为摆动式前进
大概就是它一会儿往左摆一会儿往右摆…
但调车嘛自然是要永不放弃,虽然身为菜鸡没有大佬那样高超的算法,但却有着用自身浅薄的知识灵巧的组合并解决问题,可惜的是这样巧妙的方法虽然行之有效却注定并不能够被推广。
咳,言归正传,方法很简单,前面说过小车之所以不好好走直线的原因是因为在灯闪烁的时间内,小车主程序已经运行了多次,假使每次循环的时间恒定,那么我只需要测量在灯灭的时间内小车走了多少次循环就够了。
经过测量,我的是4-6次。
然后嘛,当然改原地旋转的程序,没当它看不到灯时记一次数,但达到6次时开始原地转,看到灯时清空计数,这样就避免了小车在正常行驶的过程中由于原地旋转程序的影响而不能走直线了。当然也有后遗症,那就是当它真的背对灯的时候需要多走这六次循环也即灯一次闪烁的时间,不过若不是追求极致影响不大。

第二个大问题是阳光!所谓
自古信标见光死,
阳光算法泪两行。
之前一直强调的是在夜晚运行,因为在白天的时候根本跑不了(我们学校的信标场地阳光直射),我也曾看过在白天时的灰度图,结果只看到一大片的255。我倒是想滤掉阳光,然而面对这情景实在无处可滤。
没办法,算法搞不出来就只能改装备了,后来换了卓大大推荐的NXP i.MX.RT的可编程图像识别模块。这玩意是很高级,功能也很强大,然而,我不会用!
它居然是用python编程,我一个机械生学嵌入式已经很难了,现在还要搞python实在是难为我,而且python那不带花括号实在是不能够被常用c的我所接受,然而说是这样说实际还是得硬啃,毕竟是花了钱的。
经过一番折磨后选用NXP处理图像后将信标灯的坐标灯的坐标通过UART传输到主控,然后车子可以正常跑,也可以正常的识别图像,但是在跑一段时间后它就开始程序跑飞了,每一次都需要机械组成员奋勇向前拨下开关。
这问题一直持续到了比赛前夜,最后还是连夜改回了原来的神眼摄像头,幸好东南大学遮光处理做的极好饶我狗命。后来由学长提醒才意识到这可能是由于UART通信出了问题,溢出了缓冲区。

第三个问题在于避障
考虑到信标灯的数量,我们主要是避开亮起的信标灯,即当小车笔直冲向信标灯时触发电磁开关后小车如何避开暗下去的信标灯,这里也要两种方案,一种是从其它学校视频看到的,在接近信标灯时小车从灯旁擦过灭灯然后寻找下一个灯,这估计要用到y坐标值判断距信标灯距离,第二种则是我这种不用y值的人用的,直接撞上去然后再靠避障程序,我写的是往后下方倒车然后再原地旋转寻找下一个灯。以前一直觉得这样做会把车撞坏,结果俱乐部的灯被撞得只剩下一个还能正常工作,其它全部报废,而小车还是生龙活虎…

然后就是一些优化问题,按照问题三的做法小车实在很难跑直线,因为每次都有加速度分量,而我的选择是将中线加宽,即在64列左右再延伸几列,这样在中线区域内就都能够跑直线,而一旦脱离中线,由于角速度分量产生,也会偏移回来。
第二个就是双摄像头双主控问题了,以前一直觉得太贵,主控间通信也太麻烦,就一直没考虑,结果到赛场一看,遍地都是多摄像头,真真感觉从装备上就被碾压了。
第三个是车速问题,这个当然是越快越好,然而太快转弯时又会打滑反而浪费时间,这个就是要好好衡量了。可惜当初测试的时候只是简单的选了一组我们觉得很快的速度,后来才发现其它队伍车速一个比一个快,我都在想要是平时车失控了到底怎么拦下它。

总体来说此次比赛最大的失误在于没有做好优化,只是简单的把一个框架搭出,却没有思考过如何才能够做到极致,拿去参赛完成任务还行,但要排名靠前是不可能的。其实也正常,其它队伍花了比我更多的时间精力去调车,能拿到更好的成绩自是理所当然的。

悟以往之不鉴,知来者犹可追。知道错误便当改过,今年的比赛不知还是否有时间精力参加,一旦参加必当要全力以赴。

你可能感兴趣的:(智能车信标总结)