ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从传感器到PID:智能车竞赛核心技术与安徽赛区备赛复盘

从传感器到PID:智能车竞赛核心技术与安徽赛区备赛复盘 第十八届全国大学生智能汽车竞赛安徽赛区的赛程已经过去一段时间了但直到现在我的手机里还存着当时在现场拍的成绩公示墙照片。说实话作为连续带了三届队伍的指导老师每年到了这个节点总有一种很复杂的心情——不是单看谁拿了一等奖这么简单而是能从一个省赛区的成绩分布里清清楚楚看到每支队伍过去一年的准备程度。这篇内容我就以安徽赛区为主线结合第十八届的赛制、组别特点和实际备赛过程把智能车竞赛背后那些不参赛就根本接触不到的细节一次性讲透。不管你明年打算下场参赛还是刚开始接触这个赛事都可以把这篇文章当成一份现场还原度比较高的备赛参考。1. 智能车竞赛到底在比什么——从安徽赛区看真实技术门槛很多第一次接触智能车竞赛的人以为这就是一个“遥控小车看谁跑得快”的比赛但实际上完全不是一回事。全国大学生智能汽车竞赛的核心逻辑是车辆从发车区启动之后不能有人为干预车子要自己去识别赛道、判断路况、控制速度最终跑完全程并尽量用时更短。这意味着整个系统里涉及到的不是某一个单项技术而是一整套链路——感知、决策、控制、执行、供电五个环节必须全部闭环正常工作车才能稳定完赛。第十八届的组别设置延续了近年来的思路整体分成多条技术路线。比较常见的方向包括摄像头组、电磁组、越野组、节能组、视觉组等。每组的技术侧重点差异非常大摄像头组主要做图像处理和赛道边缘识别对单片机的算力和图像算法的效率要求更高电磁组则是利用通电导线产生的磁场来感知赛道轨迹讲究的是信号调理和滤波越野组的路况更复杂机械结构的可靠性往往比控制算法更容易决定成绩节能组又把重心放到能量回收和低功耗驱动上。说白了不是一辆车跑完全部组别而是每个组别都在用不同的工程方案重新定义“怎么让车跑得更准、更快、更稳”。这些组别看着好像只是名字不同实际上对应的是完全不同的技术栈。以安徽赛区为例省内高校的队伍在硬件选型上总体比较务实很多队伍用的主控芯片依然是入门级的STM32系列少数强队会用更高性能的处理器跑视觉处理。选型这件事其实没有绝对的优劣关键是匹配难度目标。如果你对嵌入式系统的底子还不够深一上来就追求顶级芯片和复杂算法反而是给自己挖坑——研发周期会拉长调试成本直接翻倍最后能不能完赛都是问题。从车辆本身来看一辆标准的智能车主要由车模底盘、驱动电机、转向舵机、传感器模块、主控板、电源管理模块组成。听起来不算复杂但每个模块都有很多坑。比如说车模轮胎的抓地力、底盘的重心高度、悬挂的软硬程度这些机械层面的参数会直接影响车子在高速过弯时的姿态进而影响传感器读数的稳定性。很多队伍在软件上折腾了几个月最后发现成绩提高不了原因是后轮差速器卡顿或者轮胎磨损严重这种问题纯靠调参是永远解决不了的。还有一个容易被低估的点这项比赛本质上考验的是“系统集成能力”。单项技术再强如果不能把传感器信号、控制算法、电机响应和机械结构结合在一起车到了赛道上仍然是失控的。我见过不少队伍编程能力很强但车一上赛道就摇头晃脑就是因为电磁传感器的安装高度和角度没有经过仔细验证或者摄像头视野被车壳遮挡。说白了这比赛比的不是某个单点技术的高低而是你作为一个工程师能不能把一堆零件正确地拼成一个完整可用的系统。2. 一场排位赛的成绩是怎么算出来的——省赛赛制和评审权重先解决一个大家都关心的问题安徽赛区的成绩到底怎么来很多人以为就是赛道上跑一圈谁快谁赢但真实规则比这个复杂一点也多了一点策略空间。省级赛区通常采用的是“预赛决赛”的模式预赛阶段每支队伍有多次发车机会取最好的一次有效成绩作为预赛排名依据排名靠前的队伍进入决赛决赛一般再加跑一轮最终名次由决赛成绩决定或者与预赛成绩加权计算。每支队伍在跑动过程中只要出现车辆冲出赛道、漏掉计时点、在赛道上停滞超时等情况这趟成绩就作废只能重新发车。“有效成绩”这四个字是整场比赛里最有分量的关键词。我在现场见过很多次这样的场景有的车预赛第一轮跑得特别猛速度拉得很高结果在最后一个弯道冲出赛道成绩直接无效第二轮又因为电池没充满速度明显不够最后预赛排名反而很靠后。反而是那些跑法保守、但每一轮都能稳定完赛的队伍靠着“有效成绩”拿到了更好的名次。这不是偶然而是赛制天然奖励稳定性。你可以把赛道成绩理解成“上限决定你能否冲奖稳定决定你能否拿奖”两者之间需要找到一个合适的平衡点。关于奖项设置省赛区的奖等一般分为省级一等奖、二等奖和三等奖部分赛区还会设置优秀奖。具体比例每年会根据参赛队伍总数调整但整体上维持着“头部队伍晋级全国总决赛中位数队伍拿省奖其余完赛队伍也有收获”的结构。安徽赛区的晋级名额通常会根据全国组委会划拨给该赛区的名额确定这个数字不是固定的要看当年全国总决赛的赛道规模和各省的参赛情况。这里有一个很多队伍容易忽略的信息省赛成绩排名的真正价值不只是那块奖牌而是你能不能拿到晋级全国总决赛的门票。如果你的目标本身就是进国赛那在省赛阶段的首要任务其实不是“跑出极限速度”而是“先确保一个稳定的决赛席位”。这里还要特别说一个省赛特有的隐藏变量——场地适应。全国总决赛的赛道通常是在标准场馆里铺设而省级赛区的场地条件差异很大。安徽赛区的比赛场地有时候在高校体育馆有时候在会展中心地面材质、光线亮度、附近有无强电磁干扰源这些因素对车的传感器影响非常明显。很多在实验室里调得好好的车到了比赛现场跑出来的效果完全两样。所以参赛之前一定要做“环境适应性训练”最好是带着整辆车提前到比赛场地周边去跑一跑哪怕不能进入内场在外面的走廊、广场上做一些传感器抗环境光干扰的测试也能大幅降低现场翻车概率。评审环节里还有一项容易被忽略的工作就是技术报告和文档评审。赛事并不是只看赛道成绩的全国赛层面会有技术报告评分环节省赛阶段虽然权重不等但很多赛区也会要求提交设计报告。这部分分数虽然不像赛道成绩那么显眼但在名次比较接近的时候技术报告的质量就成了拉开差距的关键。我不止一次看到两支队伍赛道成绩几乎并列最后因为技术报告逻辑清晰、图表规范而拿到更高的总评名次。所以在备赛周期的末尾一定要留出时间认真整理设计报告不要等到赛前一周才开始补。3. 想拿奖先搞懂智能车控制主线——从传感器到执行的完整链路无论是哪个组别智能车最底层的控制逻辑都跑不开这样一条链路传感器采集信息 → 主控预处理 → 决策与算法判断 → 输出PWM波驱动电机和舵机 → 车体响应 → 传感器再次采集新信息。这是一套闭环系统里面任何一个环节的延迟、误差或者噪声都会在车辆运动轨迹上被放大出来。所以调试智能车本质上就是调试这条链路里每一个环节的时间配合和信号质量。先从传感器说起。摄像头组的核心传感器是工业摄像头或普通OV系列摄像头模组采集到的图像要先经过二值化、边缘提取、赛道中线拟合等步骤才能提供给控制算法。这个过程非常吃算力你需要在帧率、分辨率和处理延迟之间做取舍。很多队伍一开始追求高分辨率结果处理一帧图像的时间超过50毫秒车子在高速状态下根本来不及转弯反而跑得摇摇晃晃。我的经验是在满足识别需求的前提下尽量把分辨率降下来把帧率提上去优先保证控制周期的稳定性画面细腻不细腻并不重要。电磁组用到的则是电感线圈阵列通过对赛道导线通入的固定频率交变电流产生的磁场进行感应计算横向偏差。这套方案不受光照影响环境适应性强但是对信号采集前端的滤波电路设计要求很高。电源噪声、电机换向产生的火花干扰都会叠加在电感信号上如果不做滤波处理你看到的数值就是一团乱跳。很多电磁组新手喜欢花很多时间调算法其实第一步应该先拿示波器去测电感输出信号的波形确认信号底噪够低再谈下一步。速度闭环是另一条关键主线。智能车必须根据赛道曲率来动态调整目标速度直道加速、弯道减速、发卡弯大幅减速。这个任务通常用PID控制器来实现内环是电流环或速度环外环是位置环或赛道跟踪环。PID调参是个enormous的话题但基本思路是一致的——先调比例P让车能基本跟上目标再调积分I消除稳态误差最后调微分D抑制超调。很多队伍死于“三个参数同时调”的操作方式这完全是大忌。你必须一次只改一个变量而且每次改完都要跑赛道记录完整表现再回头对照参数变化否则根本不知道问题出在哪个环节。关于控制算法我想多说一句。现在的智能车竞赛里各种高级算法看起来很炫比如LQR、MPC、纯追踪模型、模糊控制甚至机器学习不少队伍一上来就想上这些。但实际上对大部分队伍来说把一个结构良好的PID和一份稳定的赛道中线提取逻辑打磨到极致成绩就能超过绝大多数队伍。我之前带的那届车队用的就是经典PID加简单的曲率前馈控制在省赛拿了一等奖。这里关键不是算法名称多高级而是你对这个算法的参数含义理解得有多深——你不光要会调PID还要能在赛场上说出“现在这个弯为什么P值要减、D值要加”背后的物理原因。执行端的调试也很考验耐心。舵机的中位值、最大转向角、转向响应速度电机的启动占空比、加速斜率、刹车方式这些参数如果和算法里的设定不匹配车辆就会表现出明显的“思考延迟”。一块好的主控板和驱动板也不能只追求功能正常还要看大电流工况下的电压稳定性。电机瞬间启动的大电流会把电池电压拉低如果供电设计不好主控芯片就会复位重启这在赛场上就是灾难性的无效成绩。4. 从第十八届安徽赛区成绩单看备赛策略——哪些细节决定名次把时间拨回到第十八届的安徽赛区现场我从最终成绩单里观察到几个比较明显的现象也许对下一届队伍更有参考意义。第一组现象是完赛率高的队伍名次普遍不低。当时省赛的正式赛道总长并不算长但有几个组合弯道角度非常刁钻加上场地灯光有频闪摄像头组不少车子在弯道区域频繁丢失赛道。在这种情况下那些能在预赛阶段两轮都顺利完赛的队伍几乎都拿到了省奖。这说明备赛末期的训练重点绝不能只是“刷最快圈速”而是要反复做“模拟赛制训练”——一次发车一键启动完整跑完三圈统计成功率。如果连续五次发车都有三次以上有效完赛再去考虑提高速度。第二组现象是调车参数的“环境鲁棒性”直接决定了你到了比赛现场还能不能发挥。第十九届我还没细看但第十八届在安徽赛区裁判席旁边等分的时候我亲眼看到两支来自不同学校的队伍同一套程序在两个赛场环境下的差异非常明显。其中一支用了动态阈值来适应光线变化另一支用的是固定阈值结果一换场地后者完全无法识别赛道。这不是说动态阈值一定更好而是提醒你如果你的算法或者参数只在某个固定照射角度下能用那它就还没达到比赛要求。备赛时一定要做“参数扫描”——把实验室灯光从全亮到半暗调整几个档位看车子的表现是否仍然在可接受范围内。第三组现象和车队协作有关。成绩稳定的队伍通常有一个共同特点每个模块都有明确的负责人出了问题能够快速定位。反而是那些什么都集中到队长一个人身上的队伍到了赛场上遇到突发情况很容易乱套。我记得有一年比赛前检录因为电池电压符合性检查没过某队伍临时要换电池结果负责供电的同学居然不知道备用电池放在哪。这种低级的混乱直接影响了队伍心态第一轮直接跑崩。智能车竞赛是一个团队项目哪怕是三个人分工也比一个人熬强前提是分工以后各模块之间的接口清晰比如传感器数据格式、通信协议、底盘机械参数这些都需要提前定好写进文档。第四组现象可能有点反直觉——省赛阶段没有拿到晋级国赛资格的队伍不一定输在技术短板更多是输在“现场决策”上。打个比方预赛第一轮你的车以全场第三快的速度完成了有效成绩这时候你会不会在决赛时让车跑得更快很多队伍的选择是“必须更快”结果就是概率性冲出去。真正有经验的队伍会算一笔账如果当前成绩已经足够进前几名决赛阶段的目标就不是刷新纪录而是稳定复制这个成绩。所谓“强者不是从不失误而是该稳的时候绝不激进”。5. 备赛路上最典型的几个坑和对应的排查方法这部分可能是很多队伍最想看的内容。智能车备赛周期少说也有大半年这期间踩的坑数都数不清。我挑几个在安徽省赛队伍里最常见的问题来讲每个都附带排查思路。第一个坑焊点虚焊和线束接触不良堪称隐形杀手。很多时候车子在实验室跑得好好的一到比赛现场就频繁复位或者传感器数值乱跳排查半天发现是传感器接口的排线松动或者焊盘有冷焊。这类问题从波形和数据日志上很难快速定位因为它是间歇性故障。我的建议是备赛中期做一次全面的“可靠性筛检”专项把车上所有接插件重新拔插一遍所有关键焊点用放大镜目检电池连接线用扎带固定减少在车辆震动情况下的相对位移。另外车上最好加装一个电压监测模块一旦主控供电低于阈值立刻在日志里记录“掉压事件”这样排查复位问题时就有一手数据不用靠猜。第二个坑传感器安装位置和角度不符合车体实际动态特性。很多队伍装电磁传感器的时候只看静态位置是不是在赛道中线但忽略了车在高速过弯时会产生侧倾和横摆传感器离地高度会变。摄像头组更明显如果摄像头安装角度太偏向远处近处的赛道信息就会被切掉入弯时找不到参考点如果太偏近处前方视野太短速度刚拉起来就看到弯道刹车都来不及。排查方法是做“低速过渡到高速”的梯度测试观察同一套参数在车速1m/s、1.5m/s、2m/s时的转向切入点是否偏移再反过来调整安装角度。第三个坑供电系统设计不当。驱动电机和舵机的瞬时电流需求很高尤其在起步加速和急转弯时电流峰值可以到几安培甚至几十安培。如果电池内阻偏大或者电源线过细线上压降就会很严重主控芯片的供电电压可能跌破复位阈值。这个问题在很多队伍里被误判成“程序bug”其实用示波器挂在主控电源引脚上就能看见来龙去脉。解决方向很明确电源线尽量粗而短控制板和驱动板分开供电或至少做一级稳压和滤波电机驱动部分采用独立的地回路避免大电流回流串扰到传感器信号里。第四个坑调参时没有做“变量隔离”。这是很多队伍效率低下的真正原因。我见过一次真是又好气又好笑某个队伍觉得车子转弯太慢同时调大了转向P、降低了速度目标值、还换了一对新轮胎结果车子表现变好了但根本说不清到底是哪个改动起了作用。这种“有效但不自知”的调整方式在备赛前期还行到了后期想继续优化的时候就完全卡住因为所有参数都是混在一起变的根本没有可复现性。正确做法是准备一本调试日志每次只改一个变量记录改动前的圈速和改动后的圈速连续记录至少三组数据再判断。做到这个你的调试效率至少翻倍。第五个坑忽略机械结构顺滑度。车轮轴承是否顺滑、转向机构有没有虚位、球头连接是否松动这些机械问题在程序上表现为“转向响应不一致”“直线行驶跑偏”。不少队伍把大量时间花在算法上却从没想过用六角扳手紧一遍全车螺丝。我建议每两周做一次机械巡检用大拇指按住轮胎转动感受阻力是否均匀把舵机臂拆下来手动转向感受行程是否顺畅。这些功夫花下去你会发现自己原本以为要调三天算法的“疑难杂症”可能只是一个松动螺丝的问题。6. 给下一届参赛队伍的三个核心建议如果你已经决定参加下一届比赛尤其是准备打安徽赛区我有三个最朴素的建议分别对应备赛节奏、团队协作和现场应对。第一个建议把备赛时间轴拆成四个阶段每个阶段目标不一样。第一阶段是“了解与验证”花一个月时间把往届的技术报告和开源方案吃透跑通一个最小系统哪怕只是让电机转起来第二阶段是“实现闭环”用两到三个月做出一辆能循迹跑完全程的车先不管速度重点是把链路打通第三阶段是“快速迭代”预留一两个月专门做提速和专项优化每周末都要有可对比的有效圈速记录第四阶段是“赛前固化”最后一个月不要再做大改动只做小参数微调、可靠性和稳定性训练。很多队伍的问题就在于前两个阶段太拖沓导致第三阶段没有足够时间第四阶段又不得不冒险上大改最终成绩自然不理想。第二个建议从一开始就建立规范的团队文件和版本管理。代码用Git管理每个版本提交信息写清楚“改了哪个模块、为什么改、效果如何”硬件设计文件统一归档调试日志坚持记录。这些事情看起来和赛车成绩没有直接关系但它带来的间接帮助非常大。当版本可以随时回退参数变化可以对照日志查的时候你的队伍就有了更快的试错速度。工程能力的提升就是靠这些不起眼的小习惯累积出来的而不是某一个周末突然开了窍。第三个建议准备一份“现场故障排查手册”和随车工具箱。手册上写清楚常见的十种故障现象、对应的排查顺序和解决办法比如“开机后舵机抖 → 先看供电是否稳定 → 再看信号线是否接触良好 → 最后用示波器看PWM波形是否正常”。比赛现场环境嘈杂、紧张指望临时冷静下来理性分析是不现实的但是只要照着排查手册来哪怕不能立刻修复也比站在那里发呆强得多。随车工具箱里面备上焊台、螺丝刀套件、备用轮胎、扎带、杜邦线、万用表和示波器几乎能覆盖九成以上的突发情况。最后再讲一个具体的小技巧。比赛发车之前别急着按启动键先拿示波器或者电压表看一下电池电压。很多队伍的电池电压其实还有余量但大电流负载下会瞬间跌落导致主控复位或者舵机响应变慢。如果你能养成“发车前测负载电压”的习惯至少能避开每年都会出现的这一类低级事故。准备到这个程度的时候你在赛场上真正要考虑的已经不再是“会不会完赛”而是“今天能不能跑出一个让自己满意的有效成绩”。智能车竞赛的乐趣恰恰就在于它永远不会按照你预想的方式发展。哪怕上一届拿了奖新一届换了赛道、换了规则一切都要从头来过。希望这篇基于第十八届安徽赛区经验的复盘文章能帮你在下一届少走一些弯路把时间花在真正能提升成绩的地方。
返回列表