智能车学习(二十一)——浅谈CCD交叉以及横线摆放
一、CCD为何要交叉摆放?
首先使用横线摆放,CCD前瞻如果远一点,弯道丢线,再远一点直接窜道。所以需要很多很多代码的工作量,而且过弯的过程相当于没有任何的调节过程,就是一个偏差保持,或者就是根据前面拟合(三次样条效果可以),但是终究是盲跑,写得好就跑的好,写不好各种窜道,各种问题。
其次可能会想到加个舵机做摇头CCD,想法很好,就是会重了那么一点点,就是会很容易不对称,就是可能不能加前瞻。
最后,综合以上两种思路,可以做一个交叉摆放的CCD支架。使用成熟的3D打印技术,辅助一些胶水固定,可以达到随便翻车,随便撞,都可以稳定对称,而且不会至少一个CCD不会丢线,算法简单好写,赛道元素识别容易,偏差连续,前瞻可以无限远,就是有点浪费。因为加减速单靠这个的话会有一点点问题,所以一般加一个CCD辅助一下。
二、CCD交叉摆放算法设计
1、方法一:
左CCD算一偏差,右CCD算一偏差,两个相加。
A、直道对称,偏差为0
B、弯道丢掉的CCD不要,另一个CCD偏差乘以2
C、丢与不丢交界处有跳变
2、方法二:
使用模糊算法,提取出来交叉的部分,给定经验值,使用Matlab进行培训,得到一组表
优点:肯定连续且可调
缺点:特殊元素偏差要修正,可移植性不强
3、方法三:
使用神经网络进行培训,但是由于CCD信息量还是过少,导致有3到4个地方需要进行特殊处理,加以识别。
优点:稳定,参数不用调= =
缺点:要识别比较麻烦,毕竟CCD信息量少。
(最后使用了这个方法,因为小S可以走直线。。)
三、支架制作:
使用3D打印,可以外发(有钱人任性),可以直接做一个打印机,很简单,材料也有,一般400搞定,淘宝可以买现成的大概也就1500左右吧。基本上这种3D打印机,有了一台就可以做第二台。。鸡生蛋,蛋生鸡。。。。
使用SolidWork画出来,然后转成STL,然后使用打印机对应的上位机进行打印就行了(上位机一般转化为Gcod)。
制作打印机的话,教程另发,也是大神教的啊,已经去了MIT,膜拜膜拜