我参加过两届智能车比赛第七届和第八届。第七届做直立前期突飞猛进后期萎了,比赛的时候遭遇到了杜邦线接触不良止步于赛区二等奖。第二年接收教训在硬件方面下大工夫并且优化算法,功夫不负有心人拿了赛区第三进入国赛。准备国赛的时候过于保守并且缺乏思路最终只拿了国二。下面我把我两年参加比赛的经验分享给大家(技术方面)。 首先硬件方面: 有一个好的电源。电源重要性不多说,电源方面首先要保证MCU和传感器的电源质量,建议二者独立供电,5V的话用LM2940比较好便宜性能还好,北科用的TPS7350太贵了当然可以去ti申请,3.3V的话我建议用RT9161体积小性能不错最大带载能力有300ma和500ma两种。对于舵机供电有用电池串个二极管直接供的也有用电源芯片的,我通过实验发现电池直接供舵机反应确实快但是略不稳定,所以建议菜鸟们还是用电源芯片吧,LM2941就是一个不错的选择。 对于电磁用的多的放大电路我建议一定要有扎实的理论知识,而不是在网上或在技术报告上照搬电路不求甚解,一定要理解你所使用电路的工作原理否则你连调试都不知道该咋调。关于运放电路说简单也简单就一个虚短虚断,说难也难太灵活了,在这里不多讲了。 对于静电的防护,首先PCB layout的时候注意信号之间的干扰,简单几招:电源线尽量粗一点,信号线短一点两根信号线距离远一点,最重要的是有一个好的地即尽量在一面布线保证铺地的时候另一面的铜皮是完整的,然后用过孔把两面的地连通起来。其次是电机处理,电机的两极各用一个104接外壳然后外壳再用一个104接到地上,小车裸露的导电体包括碳纤杆也用一个104接到地上。 一个功能强大的人机接口,第八届的时候我去调试只带着车和螺丝刀并且在预赛的时候救了我一命。 软件方面: 基本的东西要学扎实不要三句话两句话都是bug,& && | ||之间的区别要分清。 写代码的时候要考虑代码的执行效率,尽量避开浮点运算用移位操作代替除法等。避开浮点运算其实很简单,我们在程序中做运算要控制小车是靠给单片机的寄存器赋值来完成的,寄存器的值不可能是一个浮点数因此用浮点运算是一种偷懒的行为,要避开浮点数其实很简单做到先乘后除就可以了。 要认识到提线是最重要的,对于很多队伍来说可能缺乏传承和经验。很多人认为车跑不好是控制算法的问题其实对于小车来说一个简单的PID足够跑得很好了,之所以跑不好是提线做的不好。传递给控制器的误差信号算不对,控制器再牛能给出一个正确的输出吗!所以一定要下大工夫在提线上。 机械方面: 机械决定小车的极限在那里和小车的操控性是不是好,直立车电池位置两次变革就很说明问题。所以要重视机械不要妄想靠软件弥补机械的不足。一个技术再好的车手开着一辆缺乏竞争力的赛车也拿不到好成绩,参照14赛季f1法拉利车队。机械的学问太深了甚至比硬件软件更难把握,所以要下大工夫。
|