每个准备智能车竞赛的队伍,几乎都做过同一件事:到处找一份“历届智能车竞赛比赛赛题清单”,想拿它当备考词典。结果搜出来的东西不是年份缺漏,就是组别信息含糊,有的甚至把规则更新前的旧版本当赛题贴出来。我自己先后在三支队伍里待过,从电磁组入门,后来转做摄像头和视觉项目,对这些混乱深有体会。这篇文章想聊聊,我后来是怎么把历届赛题整理成一份真正能用的清单的,以及在整理过程中总结出的赛题演化逻辑。
1.1 看似在整理题目,实际在观察规则演化
很多人以为整理赛题清单就是把每年的题目按年份排列好,像背单词一样看一遍。但真去整理的时候会发现,单纯堆年份没有意义,因为同一道“题目”在不同年份的赛道元素、评分方式、硬件约束完全不同。比如同样是“跑完赛道一圈”,早期可能只有黑线和弯道,后面却加入了车库、灯控、障碍和任务识别。把这些变化拉通来看,你看到的不是一个个孤立的比赛题目,而是一套规则体系如何在十几年里不断给自己加码。
我后来给清单加的备注里,专门有一列叫“这届赛题和上届比多了什么”,这比单列年份更容易看出命题组的思路。赛道元素一个接一个出现,背后的逻辑是:既要让老队伍有延续性,又要逼所有队伍解决新问题。你在清单上看到的每一条改动,几乎都对应着上一届比赛里大面积翻车或大面积同质化的问题。规则的变化,本质是在用题目引导参赛队伍往特定技术方向走。
1.2 我这份清单是怎么建起来的(选材与来源)
整理清单最大的困难不是“没资料”,而是“资料到处都有,但没人汇总”。官方每年会发布竞赛规则和技术报告,但技术报告散落在官网存档里,各赛区通知又经常更新细则,论坛里还会流出往届队员自己的复盘和技术分享。我建清单时定的原则是:以全国比赛规则为主干,以赛区公告为分支,以优秀队伍公开的技术报告和项目复盘为注释。三者对照之后,一条赛题的真实信息才能看全。
这样整理出来的清单有个好处:能区分“官方赛题”和“实际比赛时遇到的赛题”。比如有的赛区会因为场地原因调整发车区域,或者在总规则之外增加“不允许使用某某传感器”的限制,如果只看全国版规则,到了现场才会发现方案被限制。把这些差异写进清单后,我后来带队员模拟测试时,都能提前避开这类问题。
2. 从一根黑线到整车加全场:这些年赛题演化的四条主线
2.1 起步期:几乎所有赛题都围绕“循迹竞速”
智能车竞赛早期,赛道是一条连续的引导线,车要沿线跑完一圈,比谁用的时间短。那个年代的赛题非常纯粹:传感器负责读线,单片机负责运算,舵机负责转向,电机负责跑。光电组用灰度传感器或激光管排成阵列,摄像头组则尝试用图像计算赛道偏差。程序的循环体里,主要就是“该往左打多少、该往右打多少”的决策,赛道元素也就是直道、弯道、S弯、十字路口和起跑线。
这个阶段看似简单,但它把整个竞赛最核心的逻辑立住了:车必须在不可完全预知的赛道上稳定完成任务。比如十字路口区域,压到十字正中央时,传感器输出会变成一片空白,如果程序没有状态判定,车就会在那里乱摆。很多老队伍在这个时期积累起来的“传感器阵列布局+状态机切换”经验,直到今天都还能用在复杂的任务上。整理赛题时如果把起步期跳过,会很容易忽略这套底层方法论的来源。
2.2 扩军期:电磁、光电、摄像头三组并行
竞赛进行到早期几年之后,组别开始分化,电磁、光电、摄像头三组并行成为常态。电磁组的赛道地面下埋有导线,导线通过特定频率的交流电,车上的电感线圈经过谐振电路感知导线位置。电磁车无法像视觉车那样“看”到远处赛道,依靠的是十几到几十厘米范围内的磁场趋势,控制策略更依赖预测滤波和平滑处理。同一个赛道图纸,在不同传感器模态的车辆面前,变成了完全不同的感知问题。
这个时期赛道的复杂元素也在快速增加,坡道、障碍、虚线、路肩开始频繁出现。每增加一个元素,本质上就是给赛车的状态机增加一个分支。比如坡道会让摄像头的视野剧烈变化,如果不提前写坡道检测和对应的视角切换逻辑,车冲上坡道时会把天空误当成赛道边界,后果就是加速飞出跑道。这类题目的共同点在于:表面考硬件和算法,实际考的是对“场景变化”的应对能力,也就是对规则的理解深度。
2.3 任务化时期:车库、灯控、停车、障碍判断逐渐进入
随着组别和赛道元素不断增多,赛题开始从“跑得快”转向“跑得准”。这个阶段最明显的特征是:车库、信号灯、停车区、障碍物等任务元素进入赛道。车不再只负责从起点跑到终点,还必须在途中识别库门、规划入库、判断红绿灯状态、避让前方障碍。传统路径跟踪之上,叠加了语义理解和状态决策,赛题第一次有了“任务流”的感觉。
之前有队伍在车库任务上吃了大亏。原因是他们光顾着提高转向精度和速度环响应,却忽略了分类器的鲁棒性,当车身接近车库时因光线变化导致底色误判,把阴影当成可通行区域直接越了过去。这种问题在纯竞速阶段完全不存在,却是任务化赛题的核心考点。把历年赛题铺开看,这一类“环境感知带来的决策失误”出现的频率极高,命题组反复在换着方式考察同一类能力,只是用不同赛道元素做包装。
2.4 智能化时期:直立、信标、双车、节能、视觉各占一方
最近这些年,赛题清单里出现了大量在控制模态或任务模式上完全不同的组别。直立组让车体在行驶中保持两轮自平衡,双车组让两辆车编队协同完成超车或跟车,信标组让车在没有固定赛道的场地上靠识别信标自主导航,节能组用极有限能量跑完全程,视觉组直接引入深度学习目标识别。从清单结构看,这已经不是“一组方案吃多年”的时代,而是每个组别都自带一套完全不同的技术栈。
信标组的场地不再有引导线,车要自己判断哪里是目标,并通过红外或视觉锁定位置;节能组则考验电机效率、滚动阻力和滑行策略,车往往不能一味加速,而是要在“能耗”和“时间”之间找平衡。这两类赛题把竞赛带向了两个极端:一个极度依赖感知和决策,一个极度依赖系统建模和功耗控制。整理到这个阶段时,我最大的感受是,赛题已经不再只考察“你能把车调得多快”,而是考察“你能不能选对适合自己队伍的方向”。
3. 历年高频组别到底在考什么:按技术栈逐组拆解
3.1 电磁组:电感布局和失线预测
电磁组在历年赛题里属于入门门槛最低、但做深很不容易的组别。常见的电感布置有水平双电感、垂直双电感和八字形电感,其中八字形电感因为正对导线时差分信号为零、偏向一侧时输出方向明确的误差信号,受到很多队伍偏爱。但电感排布没有唯一正确答案,关键是让误差信号在车身动态范围内保持单调性,不能出现某一段角度输入下误差反而变小的情况。
电磁车真正难的地方是“失线”。电感只能感知有限范围内的磁场,遇到大曲率弯道、突发跳变或导线铺装不连续时,误差信号会突然变弱。如果滤波不及时,转向系统会失去稳定参考,车就直接冲出去。常见应对是运动模型外推和小波滤波或卡尔曼滤波,用前几个周期的趋势预测下一时刻的路径位置。从历届赛题看,电磁组真正拉开差距的不是稳定时跑多快,而是失线后能不能救回来,这个能力对后续做其他组别也有很大帮助。
3.2 摄像头组:从图像延迟到控制闭环
摄像头组的历届赛题,表面考的是图像处理,内里考的是延迟链。摄像头从曝光、读出到送进单片机,再经过预处理和后处理,最后变成舵机PWM,这中间的总延迟决定了车在转向反应前已经往前开了多远。很多队伍把大量精力放在二值化算法和边缘提取上,却忽略一个事实:图像再清晰,如果处理时间超过几十毫秒,高速过弯时还是来不及转向。
成熟的做法是先把整个“采集-处理-执行”链路延迟实测出来,再在速度环里加入对应的相位补偿,或者用降采样分辨率来换取更短的处理周期。另一个常见优化是自适应阈值,赛道不同区域的光照不一致,固定阈值很难保证全场有效。整理历年赛题清单时,我看到摄像头组的“技术瓶颈”列里清一色写的是“动态阈值”“延迟补偿”这两个词,就知道这组别到底在考什么了。
3.3 直立组:平衡环、速度环、转向环的耦合
直立组赛题里,车的直立方向是一个不稳定系统,需要倾角和角速度反馈构成直立环,同时用速度环维持目标速度,再用左右轮差速实现转向。三个控制环共用同一套电机执行器,互相之间存在强烈耦合。很多队伍第一周能站住车,但一启动就跑飞,根本原因不是直立环参数没调好,而是速度环和直立环在低速起步时形成了持续的震荡。
直立组还十分依赖机械装配。重心越高,机械响应越灵活,但平衡越难;重心放低以后虽然稳,但速度变化需要更大的倾斜角度。很多队伍在“重心高度”这一个参数上就能磨掉几周。我建议准备直立组的队员提前接受一个现实:这组永远有调不完的参数和机械细节。在历届赛题清单里,直立组是最难用“跑得快”来概括的,因为它考核的是控制系统设计的综合能力。
3.4 双车组和信标组:通信、博弈与局部定位
双车组刚出现时,很多人以为是两辆车一前一后跑圈。实际上赛题常常包含跟车、超车、车距保持等博弈性动作,两辆车的无线通信模块需要在行驶中交换位置和状态。通信丢包是避不开的,所以程序里必须设计超时重试、状态回退机制,否则两车在狭窄赛道相遇会直接卡死。双车组的核心难点,从单车循迹变成了“多智能体协调”,思路完全不一样。
信标组则更接近非结构化环境:没有引导线,车要通过识别信标发出的红外或可见特征来确定目标方位。传统视觉里的“特征跟踪”在这里可以直接复用,但更大的挑战在于,车要把自己在场地里的位置估计出来,不然冲过去也碰不到目标信标。很多信标车做得极快,但换个场地或灯光条件就完全失效,问题就出在过度依赖固定环境标定。想要稳定,就得把定位思路改成“实时特征匹配+惯性修正”,这是从信标组里能带走的通用能力。
3.5 节能组和视觉组:两个极端方向
节能组把“跑”这件事提到了系统工程的层面。赛题往往对电池容量或储能上限做出规定,车要在初始能量固定的情况下尽可能跑完全程。你不仅要知道怎么控制电机,还得实测电机在不同转速下的效率、轮胎的滚动阻力、减速滑行的策略。有的队伍在机械结构上做到极致轻量,把整个赛程做成了“滑行运动”。这个组别对控制算法以外的能力要求很高,但对真正喜欢机械和电调的队伍来说,是性价比极高的方向。
视觉组则完全相反,计算资源升级到高性能嵌入式平台,赛题包含目标识别、交通要素检测和语义理解。它把深度学习的模型训练、剪枝量化、推理部署都拉进了赛题范围。如果只看清单文字,很容易被“标注多少图像、模型量化到几位”这些概念吓到,但真正执行起来,很多任务的难点其实在数据采集和场景标注,这恰恰是可以靠团队协作解决的部分。视觉组和节能组放在同一张清单里,你会明显感受到竞赛正在往“平台分化”的方向走。
4. 整理赛题清单时我最想保留的四个字段
4.1 任务类型到底是不是竞速
历年赛题里,“竞速”“任务”“对抗”“节能”四个词背后对应的是完全不同的备赛策略。竞速型只需要把单圈时间压到最短;任务型必须保证每个动作的完成率和成功率;对抗型要额外编写对手行为应对逻辑;节能型则要精细化建模整车的能量流。如果清单里只写组别和年份,忽略任务类型,很容易把一个任务型赛题当纯竞速来练,最后在状态机设计上大量丢分。
我最后使用的表格里,第一列固定是“任务类型”,并在旁边加注“该类型下最常见的完成路径”。这样我复盘的时候只要扫一眼这一列,就能快速定位每届赛题的核心矛盾。任务类型也是新人入队时最需要理解的概念,理解了它,才能避免拿着上一届竞速逻辑来备战下一届任务型比赛。
4.2 主要感知输入是什么
赛题里虽然经常出现同一个组别名,但感知输入已经差别巨大。有的组用电磁线圈,有的用光电传感器,有的用摄像头,近几届还有激光雷达、深度相机、红外信标和无线通信模块。感知输入决定了车辆能获得的信息边界,也决定了整套技术方案的起点。我见过不少人复现别人的开源方案总是失败,最后才发现对方用的是另一种传感器,整套算法依赖完全不同。
所以我在清单里加了一列“主要感知输入”,并且标明是否包含辅助输入(如编码器、陀螺仪、无线通信)。这样整理后,你会发现某些赛题之间的关联变得清晰:比如同样是定位问题,信标组靠视觉信标,而某些视觉组靠二维码标记,底层需求其实一致,只是传感器形态不同。这个字段对跨组别迁移经验特别有用。
4.3 这届赛题最卡人的算法瓶颈
每一届赛题都有一两个最棘手的技术点,它会成为大多数队伍的瓶颈。比如双车组的通信稳定性、直立组的环间耦合、视觉组的模型推理时延、节能组的功耗测量偏差。整理清单时,我把这些瓶颈单独列为“关键技术瓶颈”字段,并在备注里写清楚常见症状和解决思路。这个字段是我认为整个清单里最有含金量的部分,因为它直接告诉你:这届赛题真正在考你什么。
如果没有这个字段,一张赛题清单就只是信息和日期的排列。加了它之后,清单就变成了“考点预测表”。我带新队员时,通常会让他们优先查这个字段,再决定先补哪块知识。很多队伍备赛时间不够,就是因为把时间浪费在不会成为瓶颈的地方,比如反复调一个对总分影响极小的转向参数,而不是优先解决会让车直接完不成任务的通信或状态机问题。
4.4 评定规则里的隐藏扣分项
比赛不是考满分,而是比少扣分,这个道理在历届赛题里一直适用。有些规则表面只写“压到路肩一次扣两秒”,但整场跑下来压路肩十几次,总分就被压垮了。还有抢跑、越界、触碰赛道、发车失败等细节,都会成为排名翻车的根源。如果整理清单时只看“完成比赛”,完全忽略评分表,等于漏掉了一半的考题。
我在每一条赛题末尾加了一栏“易扣分细节”,记录当年最容易失分的行为和对应处理办法。这样备赛时可以把这些细节直接写入车上的程序逻辑。比如如果规则规定“碰到路肩就扣时间”,那原本追求极极限切线的策略,可能就要先退化到稳妥绕行。评分规则对策略的影响,在大多数情况下比算法对速度的影响更大。
5. 我实际踩过的三个坑,希望对你有用
5.1 官方规则和赛区细则对不上
我第一版清单只整理了全国比赛规则,结果拿给另一所学校的队员参考时,对方提醒我,他们的赛区规定电池只能用某一种,摄像头数量也有限制。那一刻我才意识到,不同赛区的执行细则并不完全一样,有些赛区甚至会因为场地条件临时调整发车顺序或赛道拼接方式。如果只准备全国版规则,到了现场才发现某个传感器被禁,整个方案都要推翻。
现在我的清单里每条后面都会带一栏“版本来源”,区分全国规则、某赛区补充说明和官方答疑帖。这里要说明的是,这项经验来自我参与过的比赛和与多校队伍交流后的实践总结,不一定完全适用于每一届,但可以作为通用习惯保留。整理时多留一分版本备注,就能避免后面团队照着一张旧图干到底。
5.2 只看题目不看技术报告
整理赛题初期,我只看官方给出的任务描述和赛道图,觉得看懂题目就够了。后来发现完全不够,因为题目只告诉你“做什么”,技术报告才会告诉你“怎么做”。官方每年发布的优秀技术报告里,有完整的硬件结构、控制框图和调试心得,很多字段比题目本身更接近赛题真正的难点。如果只看题目,容易让自己停留在“我能理解规则”的错觉里。
我把能找到的技术报告链接和公开的项目复盘都加入了清单的“延伸阅读”列。等整理完成之后,我的阅读优先级反而变成了先看报告再回到题目。报告里那些“实际调试中发现”“这里遇到一个坑”的描述,才是把赛题转化为工程能力的最好参考。这一习惯沿用至今,对我后来做其他项目也很有帮助。
5.3 同组别在不同年份难度完全不同
这个坑尤其容易出现在老队员带新队员的时候。有的老队员会拿自己当年跑过相对简单的组别经验,告诉新人“这组很容易”,但新人实际备赛时,面对的已经是加了近几届新元素的赛题。比如摄像头组早期和后期对算力的要求、感知范围的要求完全不在一个量级,如果把几年之间的赛题混在一起对比难度,得出的结论会严重失真。
我在清单里特意加了一列“当年可用算力背景”,例如单片机主频、是否允许使用更高级的视觉平台、是否禁止某些传感器等。这样对照之后,就能理解一届赛题为什么这么设计。难度评估不能只看组别名,而是要看该年份的技术环境约束和个人能力是否能匹配上。
6. 清单在手之后,怎么把它变成训练计划
6.1 把赛题还原成需求池
拿到历届赛题清单之后,第一步不是找最难的题开始练,而是挑几道有代表性的赛题,把它们拆成“需求池”。以“进入车库停车”为例,拆下来至少包含:识别库门、判断停车位、控制纵向距离、微调车身姿态、判断停车完成。每个需求点都可以对应一项具体的硬件模块或算法实现。当需求池列全之后,队员就能清楚地看到自己的盲区在哪,而不是盲目地全员围着主控板打转。
6.2 用技术栈给队伍做匹配
每个队伍的人员背景和实验室条件不一样,选组不能只凭兴趣。清单里的“主要感知输入”“算法瓶颈”和“任务类型”这几列,正好可以拿来给队员做匹配。擅长Linux和Python的队伍,可以优先考虑视觉类;熟悉单片机和PID控制的,直立组或电磁组可能更顺手;机械和结构能力强的,节能组和信标组的机械设计部分更容易发挥优势。把人和赛题的技术栈对齐,备赛效率会高很多,这一点可以说是决定胜负的隐藏因素。
6.3 从清单里抽取一条最小可跑闭环
不管最终报哪个组别,我都建议先让车跑通一个“最小可跑闭环”,也就是在简单的直道上自动走直线,再逐步加弯道和任务。早年的赛题赛道,其实就是最好的最小闭环素材。先把“能跑”这件事做成,再谈精度和速度。很多队伍一开始就冲完整赛道,结果东修一块西补一块,最后连一个稳定基础都没有。
6.4 把静态清单滚成动态知识库
清单不是整理完就固定的,最好每个赛季结束后,都追加当年实际遇到的问题和解决办法。我现在用的清单字段还包含“问题现象、原因分析、解决办法、适用年份组别”,其实就是把原来的“赛题列表”滚动成了一个持续更新的知识库。两三个赛季用下来,它已经比绝大多数论坛帖子更贴近实际比赛,因为里面记录的不只是题目本身,还有一堆队伍在调试时流过的汗和踩过的坑。