飞思卡尔智能车竞赛(现在叫恩智浦杯全国大学生智能汽车竞赛)算是国内工科院校最火的比赛之一了,每年都有几百所高校的队伍参赛。很多学电子、自动化的同学大学期间都做过智能车,从一辆裸车开始,自己画板子、写代码、调参数,最后跑完全赛道,那种成就感真的没得说。今天就结合我当年参赛的经历,聊聊智能车制作的完整流程和那些踩过的坑。
先说说比赛的基本规则。比赛分好几个组别:光电组(用光电管或者CCD识别赛道黑线)、摄像头组(用摄像头采集图像识别赛道)、电磁组(通过检测赛道下方的通电线产生的电磁场来循迹),还有节能组、双车会车组这些特色组别。新手入门建议从电磁组或者光电组开始,硬件相对简单,调试容易上手,出成绩快。摄像头组可玩性高,但图像处理和控制算法复杂,适合有一定基础的队伍。
硬件方面,一辆智能车的核心部件包括:主控板、电机驱动、传感器模块、电源、电机和编码器、舵机、车体结构。主控以前常用飞思卡尔(现在恩智浦)的K60、KEA系列,现在很多队伍也用STM32F4或者RT1064这类性能更强的芯片。电机驱动一般用BTN7971或者DRV8701这些H桥芯片,能提供足够的驱动电流。电源部分很关键,电机启动瞬间电流大,容易拉低电压导致主控复位,一定要用大容量的钽电容或者聚合物锂电池做缓冲,电源走线也要加粗。机械结构上,舵机的安装位置要尽量靠前,重心靠中间,电池放在底盘中间保持平衡,轮胎的抓地力也要根据赛道材质调整。
软件方面,循迹控制是核心。以电磁组为例,两个电感传感器检测左右两边的磁场强度,差值反映了车偏离赛道中心的程度。控制算法一般用PID:比例项(P)直接跟偏差成正比,用来快速纠正;微分项(D)反映偏差变化率,用来抑制超调和振荡;积分项(I)用来消除稳态误差。调PID的顺序一般是先调P,从小到大加,直到车能左右摆动;然后加D,把振荡压下去;最后加一点点I,消除小的稳态偏差。摄像头组的话,还需要先做图像处理:二值化提取赛道边缘,然后找赛道中心,计算出偏移量和斜率,再用PID控制舵机转向。速度控制也要做PID,根据编码器反馈的实际转速调整PWM,保持车速稳定,上下坡不减速。
参赛准备阶段建议分三步走。第一步,先把车跑起来,能基本循迹就行,不用追求速度,先把硬件和软件框架搭好,确保每个模块工作正常。第二步,优化控制算法,把PID参数调好,然后加一些高级功能,比如环岛识别、十字路处理、坡道检测、入弯出弯的速度策略。这阶段要大量上赛道测试,记录不同赛道元素的处理方法,积累经验。第三步,赛前一个月做稳定性优化,解决偶发的丢线、冲出赛道问题,代码做鲁棒性处理,硬件检查焊点和接线,防止比赛时因为接触不良掉链子。
说几个容易踩的坑。第一个是硬件调试不充分,很多队伍板子画完没做严格测试就上车,比赛时莫名其妙出问题,查半天是某个焊点虚焊或者电容没焊。第二个是代码结构混乱,所有逻辑都塞在main函数的大循环里,后期加功能加不动,一定要用状态机或者RTOS,把循迹、速度控制、图像处理、通信这些模块分开。第三个是赛前临时改代码或者换硬件,比赛前一周绝对不要动核心代码和硬件,改个小bug都可能引入新问题,最后一周只做测试和稳定性验证。最后说一句,比成绩更重要的是过程,做智能车学到的硬件调试、代码编写、问题排查、团队协作这些能力,毕业后工作中天天都能用得上。
上一篇:阿里开源Qwen3.8-Flash!每百万Tokens输入仅1元 输出3元
下一篇:没有了