第九届飞卡

    今晚无意中翻到做第九届飞卡时的宣传视频,视频是自己做的,用来向下一届师弟进行宣传的。现在已经过去差不多4年了,回想一下当时的经历和遇到的坎儿。

    大一刚入校时师哥介绍单片机,感觉非常神奇,于是淘宝买51,看郭天祥视频进行自学,期间自己焊电路板调试程序,边学边调,那时候最幸福的就是晚自习回宿舍后和周六周天,因为没课,不会影响我学习。周六周天每次去电子大厦都比较兴奋,因为可以采购一批好东西喽。

    很快到大一下学期了,学校有组织节能车(本田举办的一个节能车比赛),我就去报名了,带上自己焊的洞洞板电路,记不清是什么电路了,应该有数码管、18B20这类,面试的学长看了后问了些问题,说回去等信吧,然后下午收到了短信,被录取了,当时很是兴奋,于是准备学习XS128,买了开发板和书,又开始了自学。这个学期又参加了一个遥控船比赛,和一个遥控车比赛。当时改装遥控车时觉得用遥控手柄不刺激,想用电脑控制,于是选了门语言C++,装了VS2012(至今在用这个版本),各种百度资料,好在最后实现了。大致连接是这样的:电脑连接单片机开发板(通过串口),单片机开发板上装NRF905,小车也装上NRF905和单片机,然后用电脑键盘控制小车前进、后退、转向,最后得了个一等奖。

    大一暑假时,节能车正式开始制作,我负责软件方面,主要是编写上位机监控界面,于是画了一个月做了一套界面,累的不行,现在想想有些走弯路了,其实当时认真学学自绘,又不会搞得那么难。

    大二上学期报名智能车,由于在节能车待过,所以和两个师哥直接组队,做摄像头组,因为这组最难,没人上。在十二月份时看了规则,借了上一届的直立车进行调试。拿到程序后,看了几天发现一个问题,直立滤波方面看不到实现代码,后来发现是放到库里了,看不到参数,本来这套程序的直立效果是挺不错的,但感觉代码存到库里,心里不踏实,所以放弃了这个方案,单片机也改用K60。

    大二寒假第一天回家,开始学习k60,照着野火的3天入门M3,熟悉IAR。一个寒假都在调直立,后来总结了几种方案,最后选择了清华的方案,最终选择也是在4月份之后了。寒假快开学时才开始调摄像头,采集图像已经可以了。

    大二下学期一开始,就开始泡在实验室里,当时基本就我们队在,其他一个队在4月后才开始常去。队里其他两个师哥开始去的次数不多,后来也是每天都去,现在想来,非常感谢他们的陪伴。

    下面写一下各种方案的选定,这个是一个痛苦的过程,需要反复对比各种方案的好坏。

1.直立滤波方案:有清华的方案,卡尔曼滤波,矩阵卡尔曼,互补滤波。经过比对,互补最差,矩阵卡尔曼参数调了一周后放弃了,另一种卡尔曼与清华的差不多,但开机时有抖动,最终选了清华的方案,还是不错的。

2.直立用传感器方案:有模拟、数字两种,我们用的是助赢模拟的,数字的之前用过6050,由于连接不牢固或其他原因,经常掉线。

3.脉冲采集方案:有正交解码、lptmr测速、IO中断、外部计数器等。这里面IO中断最次,lptmr只能测单路,放弃,外部计数器比较看好,但k60有两路正交解码,所以选择了正交解码。有一点说明的事,初期调试时编码器的线颜色搞错了,瞎调了好久。

4.摄像头采集方案:有传统中断延时、DMA等,k60有DMA,选择了DMA方式。

5.摄像头列信号处理方案:选用的是ov7620,分辨率好像是640*480,但这个图像太大了,在行信号上设了一个数组,每一场仅采集数组里的行,列信号用了一个74ls74进行4分频,得到640/4=160列,即每4个点采集一个。需要注意的是,不能用74hc74,速度跟不上。当然你也可以不用74ls74,软件进行处理,但我觉得,能用硬件解决的就用硬件,软件就好做一些。

6.车模选取方案:当时用D调了挺久,直到7月初发现速度提不上了才想到换车模,但已经晚了,如果可能,一定选E车吧。D车动力性不如E车,尽管E车齿轮调起来费劲。


下面再写一下当时的一些“创新”、“新发现”和建议

1.调参方面,传统上基本没调一次参数,下一次代码,这种是最笨的,效率最低的。由于之前做过上位机,用了一个周六周天,做了一个可以调参的上位机,通过无线串口传输,软件可调节PID的值,小车边跑边调,以至于每次调参我在一个桌子上调,队友在赛道上捡车。这个无线也可以用蓝牙,只不过我当时用的不是蓝牙,是另一种串口设备。

2.摄像头组过小s,可以通过加权平均值和摄像头角度来平衡,最后以至于直线过小s。

3.速度微调方面,想知道速度匀速不?单靠看是不行的,我们的方案是,设一个很大的数组,大约4000吧,将每次采集的脉冲值放进去,一直存着,等到小车跑完一圈后,通过按键或其他方式,将脉冲值发到电脑的虚拟示波器中,就可以分析速度是否匀速。发送时要关掉小车驱动板,否则可能会疯转。这个方法是比赛前几天想出来的,有点太晚了,但还是帮了很大忙,整定参数比较好。

4.摄像头各种补线一定要会寻找特征点,比如十字,弯道等,弯道的中线拟合要往里走,也就是中线尽可能往小车这边靠。举个例子,左弯道左边的边线肯定没有,这个时候要靠右侧的边线拟合,千万不要取两者的中间值,也不要补一个固定的数组,我们的做法是补上一次有些赛道宽度的一半,然后+1或2,总之,尽可能往小车这边靠。

5.由于摄像头有VTO引脚,可以输出视频信号,自己刚好有无线视频传输模块,就将无线信号传送到电脑,可以看到小车第一视角,这样对于程序编写也是有好处的。

6.摄像头镜头度数要大一些,我们当时用的是120度的,默认90度的视野太小,不利于图像处理。

7.关好窗帘,反光对小车影响很大。

未完待续。。。

猜你喜欢

转载自blog.csdn.net/dongganxiao_maidou/article/details/80369116