第九届飞思卡尔赛后总结第九届飞思卡尔赛后总结
之前和学长吃饭,飞哥和我说要把自己的成就(其实都微不足道啊)或者问题(关键是问题啊啊)与大家分享出来,
自己也认真的记下了,于是乎从现在开始打算写点博客分享自己的经验了,其实才大二自个儿水平太差,只是
分享出来,看看大家的吐槽,也能进步很多吧。
之前和学长吃饭,飞哥和我说要把自己的成就(其实都微不足道啊)或者问题(关键是问题啊啊)与大家分享出来,自己也认真的
记下了,于是乎从现在开始打算写点博客分享自己的经验了,其实才大二自个儿水平太差,只是分享出来,看看大家的吐槽,
也能进步很多吧。
废话不多说了,大一上学期曾经做过一次飞思卡尔但由于水平真的有限调到头发都白了也没有过校赛,大一做的摄像头是趴着
跑的4轮车,今年我们做的是摄像头直立组,难度大了很多,但一年的学习也让我们敢于挑战了吧,从去年冬天开始做,做废
了3台车,曾经跑到国一的速度,但是没有考虑坡道与障碍、人字,由于底盘太低无法过坡道,被动的改了机械,就跑的不好
了,从5月份到现在一个多月了,都很差,这之间换了一台车,改了电路板,程序没有大的改动因为一直没能跑到之前的水
准,下面开始分析几个原因
1:之前跑到2米2时候,赛道相对简单,连续弯道只有一处(此处也是速度难以提升的瓶颈之一,经常在此处冲出跑道)也不是
很难,而后两次的赛道均有较多的连续弯,欧姆弯,走线稍有不好就会多个弯道放大误差导致冲出跑道
2:车子机械迟迟定不下来,重心想要低,过坡道还不能刮底盘,上一台车尝试了用配重调低了重心结果导致了车子笨重走线
很难调整,现在想想不一定是笨重的原因,之前赛道简单,用一条图像信息就跑的很好,而赛道复杂了后对这方面的算法要求
更高了,所以不一定是配重的问题了,但由于还有不到一个月了,也真的不打算再改结构了,现在的结构比较折中,车也不
重。
3:陀螺仪温漂!不知道算不算问题每次开始都手动调,打算这几天把开机自检搞定,横向陀螺仪温飘会影响转弯的反馈,所
以走线也和这个有关!之前试过用两个编码器速度差来计算角速度反馈转弯,但站立时候总觉得不稳定,车子一有后退转向就
乱,可能是bug,还没解决这个bug也不清楚哪里错了(排了很久了!!!),还是乖乖开机自检吧。
4:坡道!过坡道车子直接前倾加速,不知道是不是我的控制速度不够快,上坡会使车子速度下降然后系统使车子加速,结果
控制滞后了,加速时候车子已经到了坡上,下坡就冲的更快了根本调整不过来,之前的经验是速度控制越硬过坡道越难,速度
控制相对软过坡道就容易些,于是写了一个上坡检测,当车子上坡由于速度反馈会让其前倾,角度加大,角度加大的时候就关
掉速度控制1秒,这样速度在1.7左右的时候没问题,但速度再加上来就又悲剧了。有大神建议坡道不处理,但调参数真的过不
去啊么么哒。可能还是控制滞后的问题,我在想如果用摄像头检测,提前关闭速度控制应该就会顺滑很多了的,这也是最近得
做的
5:图像处理,之前用一条线跑,现在虽然把所有线都采集了(从12行到160行),但实质还是用了一条,十字用了一个很屌丝的
补线方式,挺好用的,后边会说。依然不知道如何使用多线,应为远处的线真的很可能乱掉,可能需要加一个滤波把线lu匀称
了再进行操作。
哎,说这些都是假的,还是需要考虑一些对策的,下面先说说我的控制策略吧,从头开始,配以部分代码:(代码写的真是屌
丝,但越写越多越乱也很难改正改又怕弄的bug更多,遂自己看的懂即可)
AD采集,电机输出就不多说了,从滤波开始
1:波形合成采用的是官方的互补滤波方案,整体效果还是比较理想的
首先是加速度计的采集:
Ang_Acc=573*atan2(A_X,A_Z)-Ang_Set;
用的arctan,采集了两个轴,这样据说效果最好,后边那个Ang_Set是用来调整0度位置的,将来开机自检,现在用键盘调(屌
丝了。。)。
然后是陀螺仪积分得到的角度:
Ang_IGyro=Ang_IGyro-GYRO_Y_Fliter*0.000016;//积分得到的角度
对陀螺仪输出滑动滤波了一下,基本没什么明显的影响,*的那个很小的数使这个积分得到的角度尽可能与加速度计计算得到
的大小或者说数量级吻合。
然后就是互补滤波了,首先得到二者的偏差:
Ang_Error=Ang_Acc-Ang_IGyro;
这句没什么说的,就是两个的差。
最后把反馈量给过去就是整个的滤波算法:
Ang_IGyro=Ang_IGyro+Ang_Error*0.002;