第十八届全国大学生智能车竞赛,2023年夏天办完。现在你搜智能车相关内容,刷出来的大多是第二十一届、第二十二届的规则和获奖总结了,但回头看,第十八届其实是很多经典赛道元素的"定型版"——十字、环岛、坡道、断路、路肩这些词汇,以及负压电磁、摄像头、双车接力这些组别框架,从那一届开始变得非常清晰。这篇文章就围绕第十八届的赛道构成,把每个组别到底考什么、赛道元素怎么识别、备赛时应该优先解决哪些问题,拆开来讲清楚。不管你是准备后续比赛的队伍,还是带队的指导老师,只要想把"看比赛"变成"看懂比赛",这篇应该都有参考价值。
1. 第十八届的赛道版图:八个组别分别考什么
1.1 组别调整背后的三个风向标
第十八届的规则一出来,最直观的感受是组别数量明显变多。室内有负压电磁、摄像头、电能接力、独轮车、智能视觉、完全模型,室外有极速越野,还有一个声音信标组虽然名义上也在室内场地,但场地形态和传统赛道差异很大。表面上看是"花样变多",实际上传递了三个信号。
第一个信号是竞赛想降低"纯速度"的权重。传统电磁组、摄像头组当然还是要跑得快,但其他组别的加入,让那些在机械结构、算法设计、系统集成上有积累的队伍有了更多选择空间。第二个信号是引入了真正的工程闭环。电能接力组里的无线充电、双车协同,不是某个算法能单独解决的,需要硬件、通信、控制三块同时可靠工作,这在以前的赛题里很少见。第三个信号是智能化方向变得明确。智能视觉组和完全模型组的任务,已经从"找赛道边界"升级成"理解赛场语义",这已经接近自动驾驶决策的雏形。
1.2 室内赛道的基础构成与共同基本盘
不管哪个室内组别,赛道铺在地上都是深色背景加白色引导线,电磁组则是在赛道下方埋设漆包线。官方会统一规定赛道宽度,各组别使用的引导介质不同,但元素高度共通。第十八届室内赛道里反复出现的元素,我整理成了一张表:
| 赛道元素 | 常见组别 | 核心难点 |
|---|---|---|
| 十字 | 电磁、摄像头 | 容易误判为直道,状态切换不及时 |
| 环岛 | 电磁、摄像头 | 入环/出环识别不稳定,路径容易甩出 |
| 坡道 | 电磁、摄像头 | 图像近处遮挡、机械重心偏移 |
| 断路 | 电磁、摄像头 | 信号瞬时丢失后的容错处理 |
| 路肩 | 摄像头、视觉组 | 赛道边界特征突变,干扰中线提取 |
| 斑马线起跑线 | 全部室内组 | 停车精度、三秒发车计时 |
这些元素共同构成了赛道的基本盘。任何一个元素处理不好,都可能让整圈成绩报废。第十八届备赛期间,几乎所有强队的时间表都是围绕这几个元素排的:先跑稳直道弯道,再逐个攻破元素。
1.3 从组别倒推核心能力
我把第十八届主要组别要考核的核心能力整理成一个清单,方便新队伍按图索骥:
- 负压电磁组:电磁传感器设计、机械下压力调校、高速稳定性
- 摄像头组:图像处理、中线提取、元素状态机
- 电能接力组:无线充电管理、双车通信、停车定位
- 独轮车组:倒立摆控制、平衡与循迹的耦合
- 智能视觉组:模型部署、多目标识别、场景决策
- 极速越野组:GPS定位融合、高速路径控制
- 声音信标组:麦克风阵列、声源定位、快速转向
- 完全模型组:赛道语义理解、规划与控制
从这张清单能看出来,第十八届已经不是"会循迹就能拿奖"的时代了。每个组别都需要至少两个方向的深入能力,这对队伍的人员配置提出了更高要求。
2. 十字、环岛、坡道:三个高频赛道元素的工程解法
2.1 十字判断:先解决"有没有",再解决"往哪走"
十字大概是所有队伍第一个想骂人的元素。电磁组的经典场景是:正常直道时两个水平电感的差比和在一个很小的范围内波动,到了十字区域,水平信号并不会像弯道那样出现明显大小偏差,而是出现一段"两条横线都有信号、差比和趋近于零"的平台。很多队伍第一次跑十字,车会很稳地冲过去,反而觉得没事,等到速度上来后发现入十字的路径偏了,才意识到问题的严重性。
常用做法是加一个垂直于车轴的竖直电感,或者斜向八字电感。当竖直电感信号超过某个阈值,且持续若干毫秒,就触发"疑似十字"状态;连续确认若干帧之后进入"十字确认"状态,此时方向控制继续按当前直道偏差走,但可以做小幅修正;过完十字后,竖直电感信号回落,状态复位。
摄像头组的逻辑思路类似,但信号来源不同。摄像头给出赛道图像后,程序提取左右边界,中线就是边界的中分。十字的典型特征是:底部中线附近突然出现一大块"空白",左右边界同时向外扩张,边线斜率在入口处出现阶梯状跳变。判断时不要只靠单帧,建议做连续帧计数,避免把"赛道宽度变化"或者"普通大弯"误判成十字。
我队里当时踩过的坑就是只用了单帧判断,结果在直道进入普通弯道时误触发十字,车猛地一抖。后来改成连续三帧同时满足条件、出口条件恢复之后,误报率才压下去。这个经验后来反复证明,所有元素识别都要先解决"有没有",再解决"往哪走",顺序不能反。
2.2 环岛进出:难点从来不在"绕圈",而在识别
环岛分为入环、循环、出环三个阶段。入环识别有很多方案:电磁组可以在环岛入口附近布置额外的竖直电感或磁标,用来检测入口处的磁场特征变化;摄像头组则是看赛道边线在某一侧突然形成一大片白色区域,也就是环岛内部的空白,或者路肩突然出现。
入环识别后,最重要的事情是降速并给定内环偏移。绕圈的时候如果还按直道中线跑,车会顺着切线方向冲出环岛外侧,这是新手队伍最常见的翻车点。正确做法是:一旦进入环岛状态,目标线不再是赛道中线,而是人为向环心内偏的一条线。这个偏移量可以在调试时通过改变目标中线的横坐标比例来调参。环内车速也要提前降,不然高速大回环的离心力会直接把车甩出赛道,机械抓地力再好也救不回来。
出环识别相对难。环内绕行时,车会周期性看到相似画面,必须用"累计角度/累计距离"判断是否快绕完一圈,或者检测出口分支特征。有些队伍会引入编码器里程计,过了入口之后累计走的距离到某个值,就认为接近出口,这比只看图像要稳得多。第十八届现场,不少队伍在环岛出环时冲出赛道,基本都是"以为到了出口、提前打方向,结果打早了"。
2.3 坡道与断路:给系统留一点冗余
坡道看起来简单,笔直开上去、开下来,但真正的翻车点很隐蔽。摄像头组的图像在坡道底部会突然"看不见近处的赛道",因为摄像头俯仰角对近处地面的遮挡变大;坡顶时画面里远处没有可参考的边界,中线提取会跳变。解决办法是加陀螺仪辅助,检测到俯仰角变化时切换坡道控制模式,此时不再依赖画面近处,而是用上一帧的角度外推直行,直到下坡后重新看到近处边界。
电磁组的坡道问题主要出在机械:车底盘太低,过坡顶时容易刮到底盘;重心靠前的车会在坡顶翘头。负压组加了风机抽气之后,重心和压力分布更加复杂,建议在坡道测试时留足余量,否则到了比赛现场用新电池、新轮胎,坡道性能会有明显波动。
断路是电磁组的特色元素。导线在某段区域没有铺设,车冲过去时电感信号会瞬间降到很小的值。如果程序里做的是"信号越小越按直线走",那么断路中间方向控制会处于无信号状态,车通常能冲过去;但如果车速不够,车会在断路中央停下,然后再也找不到信号。我的经验是:检测到所有电感信号低于某个阈值,也就是归一化后接近0的时候,不要立刻转成"无脑直行",而是保持进入断路前的方向盘角度,同时开一个速度环的恒速模式,保证以足够的速度通过断路区域。这样哪怕方向稍有偏差,车也能靠惯性滑过去。
3. 负压电磁组:电磁循迹的核心参数与技术细节
3.1 电感排布:决定你上限的起点
负压电磁组用的是电磁引导,赛道下边埋漆包线,导线通约20kHz的交流电流。车上的工字电感感应到磁场后输出交流信号,经过调谐电路、运放放大、检波,变成单片机可读的直流电压。这套链路里,任何一个环节的器件参数漂移,都会直接影响最终的控制量。
电感排布基本有几种流派:水平对称、水平加竖直、水平加斜向八字,以及四电感、六电感阵列。水平对称主要用于直道和弯道的偏差计算,竖直电感主要用于十字、环岛、断路的特征识别,斜向八字则是在大弯上有更好的线性度。刚开始做的时候不用贪多,三到四个电感足够跑完大部分场景,等到具体元素卡住了再加传感器。
拿到传感器原始数据后,第一件事不是处理,而是归一化。因为不同电感放置位置、不同车的车身高度,原始电压范围可能差三四倍。直接用原始差值做PID,换块电池、换个场地,参数就要重调。归一化常用的做法是差比和,也就是左减右除以左加右。这个值天然限定在负一到一之间,对信号幅度的变化不敏感。但要注意左加右接近0时,比如断路区域,会除零,程序里必须加一个保护分支。
3.2 负压风机:机械带来的速度红利与代价
第十八届负压电磁组相比往届,最明显的变化是允许使用负压装置。原理是车底用离心风机高速抽气,使底盘下方气压低于环境气压,从而形成向下的大气压力差,等效于给车增加了几百克的"虚拟重量",过弯时轮胎侧向力上限大幅提高。这也是为什么负压组能在同样赛道元素下跑出比普通电磁组高得多的速度。
代价主要有三块。第一是电磁干扰。风机电机工作时的换向噪声会对电感信号产生明显耦合,特别是风机靠近传感器的时候。解决办法是给风机电源单独走线、加屏蔽,必要时串磁珠或CLC滤波,信号处理时再做均值滤波。我刚做负压的时候,风机一开,车就原地转圈,查了半天才发现是ADC采样被风机噪声污染了。
第二是能耗。负压风机的功率不低,电池掉电明显加快。电池电压下降后,同样PWM对应的实际转速会下降,所以程序里最好做电压补偿,把当前电压作为PID输出的修正因子。第三是重心与压力分布。负压把车向下压,但压力集中在风机附近。风机位置靠后,前轮抓地力不足,入弯速度提不上去;位置靠前,出弯加速又怕甩尾。这个只能用机械方式一点点试,没有捷径。
3.3 电磁组调参常见问题与排障链路
从我的经验来看,电磁组的大多数"薛定谔故障"都可以按下面的链路排:
- 直道抖动严重:先看归一化后的偏差是否平稳。如果偏差本身就在跳,那大概率不是PID问题,而是电感信号有噪声,或者ADC采样没做滤波。
- 弯道入弯总是不够狠:检查PID输出限幅。很多队伍把死限幅设得太小,高速入弯时转向力矩不足,车自然就推头了。
- 跑两圈后越来越偏:检查电池电压。大概率是欠压导致电机转速下降,需要电压补偿或者把速度闭环做得更硬。
这套排查逻辑在比赛现场特别管用。现场能用的调试工具少、时间紧,与其盲目调PID,不如先锁定是传感器、执行器还是电源的问题。如果传感器信号本身是干净的,执行器响应也正常,那再去碰PID参数才有意义。反过来,信号源就是脏的,调三天PID也只是把噪声放大。
4. 电能接力、独轮车、声音信标:新增组别的赛道与解题思路
4.1 电能接力组:一场小型整车系统集成
电能接力组的赛道形态是两辆车在同一赛道上跑,前车和后车独立出发。前车在正常循迹后进入接力区停车,后车从后方出发,到达前车位置并完成无线充电,充电完成后前车重新出发继续跑。这个组别把重点放在了"系统能做多完整"上面。
真正的难点不是某一辆车跑多快,而是两车在接力区的对接精度。停车一定要准,偏差超过一定范围,无线充电线圈的耦合效率就会明显下降;后车到位的判断也不能只靠定时器,最好通过通信协议确认前车准备好没有,避免两车相撞。
双车通信一般用NRF24L01或者蓝牙模块。很多人以为通信是简单的,实际上在比赛环境里干扰源很多,而且两车都在运动,通信丢包是常态。我们的做法是设计一个简单的"心跳包加确认"机制:后车持续发送"我到了",前车收到并确认,确认后又发"出发",都对不上号就不往下走,最多浪费点时间,但不会让两辆车打架。
4.2 独轮车组:平衡、循迹、速度三环耦合
独轮车在第十八届能开组,其实挺大胆的。一般车辆模型有四个轮子,控制输入是转向和油门;独轮车只有一个轮子,必须多做一整套平衡环,车一旦倒了就完了。
独轮车的电磁循迹和四轮电磁组的算法思路相近,但控制架构完全不同。四轮车可以拆成方向环、速度环两个独立PID;独轮车必须在同一个控制周期内同时输出平衡力矩、转向力矩和驱动力矩,三个环是耦合的。稍微调不好就会出现:为了保持平衡,车身左右乱晃;想加速时,平衡控制器又开始大角度摆动。
实际调试顺序建议先把平衡环调稳,让车能原地直立,再叠加速度环和循迹环。如果平衡环本身有延迟,后面怎么调都是白搭。另外,独轮车的重心高度对平衡影响很大,电池位置轻微变化可能就让你重新调一整天。第十八届现场很多独轮车队伍早上还能跑,中午换个电池重心变了,车就站不起来了,这种问题只能靠规范化装配来解决。
4.3 声音信标组:声源定位与快速转向
声音信标组的赛道不再是标准跑道,而是场地内随机布置的若干个信标。某个信标发出声音,车要冲到声源附近,触发信标切换后,再去追下一个信标。这更像一个追逐任务,车的路径是动态的,不是固定的。
声源定位核心是麦克风阵列。常见的是在车头装三个或四个麦克风,利用同一声音到达不同麦克风的时间差来估计声源方位角。时间差可以用互相关估计,理论上精度能做到不错,但实际场地有回声和噪声,实测误差会大不少。
有一个常被忽略的问题是车速。如果你算出声源在正前方30度,但车以高速冲过去,等你转向完成,声源方向已经变了。所以声音信标组的速度环要专门做"到达末期的减速控制",越靠近信标速度越慢,直到触发切换。这和摄像头组跑环岛是同一个逻辑,先保证能到,再考虑快。
5. 视觉与越野:跳出赛道的两种解题思路
5.1 智能视觉组与完全模型组:从"巡线"到"语义理解"
智能视觉组和完全模型组都有视觉任务,但比传统摄像头组高一个层次。传统摄像头组做的是找赛道边界,目标颜色、形状相对固定;智能视觉组则要识别具体物体,比如数字、颜色标签、锥桶、停车区域,甚至红绿灯状态。这意味着程序里必须部署真正的目标检测或分类模型,而不是一个简单的二值化。
第十八届的时候,很多队伍用OpenART mini这类边缘视觉模块,把摄像头采集的图像直接送入跑好的模型,输出目标类别和坐标。训练数据要自己拍,这个坑很大。很多人以为模型都是拿现成权重直接用,实际上官方给的是预训练权重,赛道上的光照、摄像头角度、物体大小都不同,必须自己做数据增强和微调。
决策层也别写得太死。比如识别到红色区域后,不要直接写死"看到红色就减速",因为赛道上的红色可能是路肩、锥桶,也可能是官方贴的标记。更好的做法是输出一个结构化的感知结果,包括类别、置信度和位置,再由状态机根据当前场景决定动作。完全模型组的赛道语义更接近自动驾驶:车道保持、静态避障、动态避障、红绿灯停车。它的核心是任务编排,不是单纯跑得快。
5.2 极速越野组:GPS、路径点与速度的博弈
极速越野是室外组,场地是操场或者草地,赛道没有边界线,车靠GPS路径点来确定大致方向。听起来很简单,实际上GPS在普通环境下误差有数米,如果直接按GPS坐标控制方向,车会画龙。更麻烦的是,GPS数据更新频率通常只有5到10赫兹,对一辆高速越野车来说,两个数据点之间车已经跑出去好几米。
实践中多数队伍用GPS做粗定位,惯性传感器和编码器做短距离修正的组合方案。车在直道时可以开得很快,快到弯道前要提前根据路径点规划减速度,不能等到了弯心才发现偏了。这个组的比赛经验其实涉及路径规划与航位推算,不是单纯的控制问题。第十八届现场能看到很多越野车在操场直道上跑得很欢,一进弯就飞出去,基本都是减速度规划没做好。
5.3 摄像头的曝光与现场环境对抗
无论视觉组还是摄像头组,现场灯光永远是最大的敌人。赛场顶光、逆光、灯管频闪都会让图像质量骤降。赛前一定要做曝光锁定和自动白平衡关闭,否则图像一亮一暗地跳,中线提取会跟着抖。我们当时用一个简单方法:赛前对着场地拍一段视频,统计像素亮度的变化范围,然后手动设定曝光时间和增益,把画面控制在最稳定的工作区间。
图像处理还有一个容易被忽略的细节:赛道边界的提取在弯道处会出现"八邻域"搜索方向的选择问题。如果搜索方向固定,弯道过急时边线会断,中线也就跟着跳。建议做动态搜索方向,每次都从上一帧边界点的位置开始,向当前行进方向的左右两侧搜索,能大幅提高边线连续性。
6. 从第十八届看备赛:时间线、工具链与翻车点
6.1 备赛时间线:多数队伍真正有效开发期只有四到五个月
智能车竞赛每年下半年发规则,次年上半年分区赛,8月全国赛。对于大多数队伍来说,真正能用来开发的时间是1月到7月。建议按四个阶段拆:
| 阶段 | 时间 | 任务 |
|---|---|---|
| 平台搭建 | 1月前后 | 车模装好、主控选型、传感器点亮、跑通最简单的循迹Demo |
| 基础稳定 | 2到3月 | 把直道、大弯跑稳,速度能到0.6到0.8米每秒 |
| 元素专项 | 4到5月 | 逐个攻破十字、环岛、坡道、断路,把状态机补全 |
| 提速与调优 | 6月到赛前 | 逐步加码速度,反复跑赛道,做可靠性压测 |
很多队伍前期花大量时间在选型上,车模装了拆、拆了装,等到4月传感器还没固定好。建议第一步就先把基础跑通,哪怕算法很粗暴,先让车能动起来,这个正反馈比什么都重要。车能跑之后,团队才有动力继续改下去。
6.2 现场翻车点与排查链路
比赛现场看到最多的故障,基本可以分成三类。
第一类是传感器偶发失效。现象是车跑着跑着突然某个点方向偏掉,然后又恢复。原因大概率是排线松动或者线头氧化。赛前一定要把所有连接器重新插拔一遍,有条件就换新排线。第二类是电池问题。临上场前换上旧电池,或者电池充电不满,跑一圈之后车速下降十分明显。一定要建立统一的电池管理表,记录每块电池的循环次数和使用时间,上赛场前只拿状态最好的那几块。
第三类是程序崩溃。单片机死机、看门狗没喂导致复位,都会让车在赛场上突然停下或者乱跑。程序里一定要加看门狗,并且留一个"冲出赛道后自动停车"的保护逻辑。这些保护逻辑平时看着多余,关键时刻能救回一整年的努力。
6.3 给后续参赛者的一些实在建议
- 先解决可靠性,再解决速度。一辆永远不会冲出赛道的慢车,比一辆容易冲出去的快车更容易获奖。
- 调试时保留数据。跑完一圈就把关键传感器数据导出来做回归对比,否则改了参数都不知道改在哪。
- 多备一套关键机械件。转向舵机、轮胎、电池、排线,是最容易在赛场上坏的。
- 组队时不要全部都是写程序的,至少要有一个人懂机械、一个人懂硬件,不然遇到信号问题就是灾难。
提示:第十八届之后,很多组别规则都有微调,但赛道元素和工程方法基本延续了下来。准备新一届比赛时,与其到处找新代码,不如先把这些基础元素的处理逻辑彻底搞懂。
最后说句我自己的感受。第十八届的赛道规则看完,最深的体会是:这比赛越来越不是在考"车跑得快不快",而是在考"整个团队遇到问题之后,能不能用工程方法快速定位和解决"。赛道上的元素你都能在网上找到开源代码,但真正拉开差距的,是当车不按你的预期跑的时候,你知不知道问题出在哪。这种能力,智能车竞赛能练出来,专业课很难教出来。早点把车搭起来,让它先跑起来,比什么都强。