📚 本文是 「从 0 到 1 带你打电赛 · 小车电控篇」 系列(共 12 篇)第 12 篇。
前面十一篇,我们把一辆电赛小车从里到外拆了个遍:从拿分逻辑、赛题套路,到电机电源、感知、PID、串级双环、视觉通信、状态机……该有的零件都齐了。但你会发现一个残酷的事实——赛场上翻车的队伍,十有八九不是输在”不会”,而是输在”现场没扛住”。明明实验室里跑得好好的车,一到测评台就画龙、就冲出、就死机;明明算法都对,却因为没备份、没睡觉、最后一刻手贱改了个参数,把到手的奖弄丢了。
这一篇是整个系列的收官,也是最接地气的一篇。我们不讲新算法,只讲一件事:怎么把四天三夜活着打完,并且把已经会的东西,稳稳地变成台上的分数。 内容分四块:四天三夜的作战节奏、一张能照着排查的故障速查表、几条保命拿分的现场细节,最后是一份精选开源仓库清单。
一、四天三夜,到底是怎么个打法
电赛全国赛是四天三夜、约 84 小时连续作战(一般从第 1 天早上 8 点,到第 4 天晚上 20 点封箱上交)。这不是一场冲刺,是一场马拉松——而且是你自己一边造跑鞋一边跑的马拉松。
💡 一个贯穿全程的比喻
把这四天想成跑一场”自己造跑鞋的马拉松”:第 1 天做鞋(搭机械、焊板子),第 2 天试跑(联调),第 3 天调配速、写日记、还得补个觉,第 4 天上午把装备定死、然后稳稳跑到终点——中途大改方案,约等于弃赛。
队伍标准配置是 2 软 1 硬(两人写软件、一人管硬件),但分工不是各扫门前雪,而是有节奏地交替。多支国奖队伍的复盘高度一致,节奏大致是这样:

第 1 天:定平台、搭机械、焊板子。 这是最忙也最关键的一天。先按题目的硬约束把平台选死(尺寸、主控、传感器都要合规,下文细说),然后机械组全力把车搭出来。
❗ 机械搭得好,算法轻松十倍
这几乎是所有国奖选手复盘里的原话。机械松垮、重心歪、左右两个电机转速差太大,软件再怎么调都救不回一条直线——有位作者就吃过亏:两个电机转速差太大,不在程序里补偿就根本走不直。所以记住一句话:车跑偏,先怀疑机械,再怀疑代码,别一上来就猛加积分。
第 2 天:模块联调。 机械稳定后,把感知、电机、PID、通信一块块接起来跑通。这一天的目标是”全程能慢速跑完”,不求快。
第 3 天:核心调试 + 开始写报告。 这是分水岭。两个软件队员轮流——一个调车,一个写报告,报告随做随存、不要攒到最后赶。
🔥 第 3 天晚上,必须睡 1~2 小时
这是用血泪换来的铁律。多支国奖队伍复盘一致:第 3 晚通宵,会直接导致第 4 天上午定稿、测评时判断力崩盘,反而出错。带个折叠床或睡垫,排班保证至少一人清醒值守。很多卡死的问题,睡一觉醒来常常迎刃而解;硬熬下去,边际收益极低。
第 4 天上午:定稿封箱。 不再改结构,最后一小时彻底停手,把能跑的版本稳稳交上去。
报告:边做边写,对着评分表填空
很多人误以为报告要憋到最后熬夜写。错。报告应该是第 3 天就开始、随做随存——因为它本质上是一道”按点给分”的填空题。
回顾我们在《这比赛到底在比什么》一篇说过的结论:现在的小车题总分 120 = 客观测试 100 + 设计报告 20,报告只占约 1/6。
⚠️ 别再信"报告占 1/3"的老说法
网上很多二手资料还在说”总分 150、报告 50、占三分之一”。这是 2019 年前的旧格式。按近年官方单题评分表(2021 F 题送药小车、2024 H 题自动行驶小车),实测都是总分 120、报告 20,约占 1/6。别按 1/3 去规划报告投入——把时间砸在让车真跑起来上,性价比高得多。
报告 20 分怎么分?以 2024 H 题官方评分表为例:
| 评分小项 | 分值 | 你该填什么 |
|---|---|---|
| 系统方案 | 3 | 整车系统框图、方案比较与选型理由 |
| 理论分析与计算 | 5 | 误差来源分析、PID 推导、关键参数计算 |
| 电路与程序设计 | 5 | 电路框图、核心流程图 / 状态机图 |
| 测试方案与结果 | 4 | 实测数据表 + 结果分析(最值钱的”闭环”证据) |
| 报告结构规范性 | 3 | 摘要、图表编号、格式整洁 |
写报告的诀窍就一句:对着这张表,一项一项填。 其中体现”测了 → 有数据 → 会分析”这条闭环最值钱。还要注意一点:测试数据必须真实可复现。因为拟获一等奖的队伍要过”综合测评”这一关(满分 30 分,统一在 8 月 10 日 8:00–15:00 闭卷制作,禁网、禁手机、禁电脑,只能带纸质资料,至少 3 名专家共同记录签字)。编造数据、或报告与实物对不上,是大忌。
二、调试与避坑:分模块自测 + 故障速查表
调试最忌讳”啥都接上、一把上电、然后对着不动的车发呆”。正确姿势是分模块自测,从下往上一层层确认,每层 OK 了再叠下一层:
- ☐ 电源:上电先量各路电压(电机轨、5V、3.3V),别让 MCU 欠压复位
- ☐ 电机方向:低 PWM 单独给每个电机,确认正转 / 反转方向对、没接反
- ☐ 编码器:手动转轮子,看脉冲计数有没有变、正反方向符号对不对
- ☐ 传感器:灰度看黑白阈值、IMU 看 Yaw 静止漂不漂、视觉看回传数据
- ☐ 速度环(内环):给固定目标速度,看能不能稳准跟随
- ☐ 方向 / 循迹环(外环):内环稳了再叠外环,先慢速循迹
- ☐ 状态机 + 保护:最后把丢线找回、出界急停、视觉超时降级接上
下面这张速查表,建议直接打印贴在工位上。绝大多数现场故障都能在里面对号入座:
| 症状 | 最可能的原因 | 怎么治 |
|---|---|---|
| 画龙 / 来回振荡 | 方向环 Kp 太大;或转向环乱加了 I | 减小 Kp;转向 / 循迹环只用 PD,别加 I(积分会引入延迟,弯道拖沓画龙) |
| 老往一边偏(走不直) | 机械不对称、左右电机转速差 | 加固定前馈 offset(如某省一队给右轮 offset=30),而不是无限加 Ki |
| 只嗡嗡响、电机不转 | PWM 太低没过启动死区;驱动没使能;只接了方向脚没给 PWM | 加死区补偿、查使能脚、确认 PWM 输入有信号(详见《让电机听话》) |
| 一加速就复位 / 死机 | 电源跌落、VM 没并大电容;或多串口 / 多中断在 80MHz 下抢资源卡死 | 驱动 VM 并大电解电容、电机地与控制地单点共地;理顺中断优先级 |
| 视觉时好时坏 | 串口丢字节、没做超时保护,吃了过期数据 | DMA + IDLE 空闲中断收包,>100ms 超时就降级到灰度 / IMU(详见《视觉与通信》) |
| Yaw 越跑越偏 | 陀螺仪零漂;纯里程 / 纯陀螺没有绝对参考 | 开机静止采零偏;用灰度过点 / 到点标志定期校正航向 |
| 响应慢 / 回复慢 | P 偏小,或速度环 I 作用不够 | 适当加 P;静差大就加 I(速度环) |
| 超调大、冲过头 | D 不够,或 P 太猛 | 加 D 抑制超调;理想阶跃响应是 4:1 衰减(前高后低两个波) |
📝 看波形治百病
表里这些症状,最高效的判断方式是用 printf 把”目标速度, 实际速度”两路发到 VOFA+ 画曲线,对着波形对症下药。这套”波形症状 → 调哪个参数”的诊断方法是调参的核心功夫,完整流程见《PID 调参实战》一篇,这里不展开。
几个最容易踩的坑,单独拎出来强调
🔥 PID 没加限幅 = 定时炸弹
位置式 PID 不给积分限幅,长时间偏差后积分项会爆掉(积分饱和):误差反向了还久久退不出来,表现为大幅过冲、长时间画龙;输出不限幅则直接顶满 PWM。积分项要单独限幅,总输出也要限幅,两道都不能少。 速度环改用增量式 PI 能天然抗饱和,更适合电机调速。
🔥 全白丢线时的"除零陷阱"
灰度循迹算偏差时,分母(各路灰度之和)一旦接近 0(全白、冲出赛道)就会除零或乱转。必须做丢线保护:沿用上一次的偏差方向继续打死转向,或切回角度闭环、减速找线。尤其是”只能前进不能后退”的题型(如 2024 H 题),冲出去没法倒车找线,全靠转向纠回,这个保护不做就是直接出界 0 分。
⚠️ 控制周期被阻塞拖慢
别在定时中断里写阻塞式 delay,也别在中断里刷 OLED、发一长串串口。中断里只做”读传感器 + 算 PID + 写 PWM”,耗时的打印 / 显示放主循环。否则控制周期被拖得忽快忽慢,$K_i$、$K_d$ 的等效系数会随周期乱跳,波形抖成一团。
三、保命拿分:现场细节决定生死
讲完技术,再讲几条”不写代码但能救命”的现场策略。这些每一条背后都有人摔过跟头。
求稳,永远优于求全
这是整个系列反复强调、也是现场最值钱的一条心法。回顾《这比赛到底在比什么》:客观测试约占 83%,而且有一堆“失败即 0 分”的红线——投影脱离弧线、整车越黑线、超时达规定 1 倍以上、用错主控、装了禁用的摄像头、尺寸超标、用了禁用的麦轮 / 履带……任何一条中招,该项甚至全场归零,比少拿几分发挥部分严重得多。
所以拿分顺序应该是:先吃满低门槛的基本要求 → 再啃高分项 → 发挥部分按”能不能稳定复现”来取舍。
🧩 两个真实的反面教材
两个故事一个结论:冲高风险的发挥项之前,先问自己——万一失败,会不会把已经到手的分一起赔进去? 不稳定的功能,宁可不做。
测评现场和定稿后,绝不大改硬件和 PID 参数
现场测评一般有 30 分钟准备时间(电路恢复、虚焊重焊、换普通元件都行;超时则每超 1 分钟扣 1 分),但封箱后硬件不可改。第 4 天上午定稿之后,更要把”求稳”刻进 DNA:
🔥 最后时刻改参数,是性价比最低的赌博
后期人疲劳、脑子冲动,改参数的收益远小于翻车的风险。确实要微调,也只改数值不改结构,改之前先 git tag 备份一个能跑的版本,留足回滚时间。上面那个”第 19 分钟改参数全盘皆输”的故事,就是没留回滚时间的典型。
备件全双份,且要趁早囤
⚠️ 赛题发布时,常用器件可能已经断货
立创官方提醒:常用器件清单往往赛前一周才发布,等赛题正式发布,很多器件早就被抢断货了。所以经费允许的话,买最好的,而且多买几个:主控、电机、驱动、传感器都囤 2~3 份。(来源)
别只盯着电子元件。备件清单里还要有:笔(报告全程手写,至少 2 支)、热熔胶、封箱用的木板 / PVC 板。有人现场才发现没带够笔——细节翻车,最冤。另外建议赛前先把 2~3 道历年题完整做一遍,把循迹、测距、视觉这些算法模块当”半成品”储备好,现场直接调用。
用一份问题清单,把疲劳期的脑子”外包”出去
国奖队的另一个习惯:全程维护一份 Bug 清单(随手记下遇到的问题和解法)。等到第 3、4 天人困马乏时,靠这份清单快速定位”这个坑我之前是怎么填的”。本质上就是把疲劳期的认知负担,前置到清醒的时候——和”报告随做随存”是同一个道理。
💡 现场行动准则三连
- 一个问题卡超过 10 分钟没思路,就换路子或求助队友 / 资料,别死磕(4 天里时间是最贵的资源)。
- 每个能跑的版本,立刻打包备份;”能复现”比”更优”重要得多。
- 心态上:你的目标是稳稳拿到该拿的分,不是做出最炫的车。
四、精选开源仓库与学习资源
最后送上一份”站在巨人肩膀上”的清单。这些都是社区里口碑不错的开源项目,逐个评注它们是什么、能借鉴多少。
❗ 一句话用法
先看懂、再借鉴,别整包照抄——尤其是 PID 参数,必须按你自己的车重、电机、地面重新调。 看懂别人”为什么这么写”,比抄下来重要一百倍。
MSPM0 路线(2024 起电赛官方主推)
| 仓库 | 是什么 | 可复用度 |
|---|---|---|
| ZhijianLi2003/ZLC_MSPM0_Peripheral_Library | 山大(威海)ZLC 队 2024 H 题国一作品:完整外设库 + 串级 PID(方向 PD + 左右轮增量式 PI)+ 1024 线编码器 + 8 路灰度 + IMU + DRV8701E,控制周期 20ms;含设计报告 PDF、B 站讲解、立创 EDA 扩展板,还带”无线急停开关”做失败保护 | 极高:可直接当 MSPM0 小车的代码骨架和报告范本,参数与控制周期都能借鉴 |
| menoking/PIDCarTemplate-MSPM0G3507 | 电赛 MSPM0 两轮 / 四轮 PID 小车模板:封装好延时 / 编码器 / 电机 / 按键(短按长按双击)/ MPU6050 / OLED / 蓝牙 / 灰度 API,速度 / 转向 / 距离 / 陀螺仪多环参数初值齐全,克隆即用 | 高:新车起步脚手架,省下大量外设移植时间 |
| abcuer/2024-NUEDC-H-TI_CAR | 24H 题省一惯导 + 巡线小车:分层状态机,pid.c 增量 / 位置双模、track.c 灰度加权、angle.c、dist.c 代码清晰,含实测参数、查表补偿、EDA 开源、选型清单 |
很高:代码可读 + 真实可抄参数,循迹小车最佳学习样本之一 |
| Torris-Yin/mspm0-modules | MSPM0 常用模块驱动合集,库内人气最高,配 B 站课程(注意:它要求其他中断优先级都低于 SysTick) | 高:模块多 + 教学视频,按需取用单个驱动 |
| danshoujieyi/TI-MSPM0G3507 | 电赛指定板工程模板三件套:裸机 / FreeRTOS / RT-Thread,两套 RTOS 都移植好了 | 高(想上 RTOS 的队):带操作系统的工程骨架 |
| TexasInstruments/mspm0-sdk | TI 官方 MSPM0 SDK(DriverLib + SysConfig),近年控制类题常指定 MSPM0,官方一手资料 | 高:官方底层驱动权威来源,但需配合 SysConfig 图形配置 |
STM32 / 跨平台路线(练手和借鉴思路)
| 仓库 | 是什么 | 可复用度 |
|---|---|---|
| Pansamic/CarOS | 电赛小车底层驱动 + 应用接口框架,STM32 / MSP432 跨平台,封装电机驱动 / 速度环 / 运动学闭环(需配 FreeRTOS) | 中高:架构规范、可移植;非 MSPM0 需自适配 |
| we-worker/STM32f407Zgt6-project-temp | 启明欣欣 STM32F407 框架,多分支含 23H 题 / FFT / ADC / TIM / DMA 采样 / DAC-DMA / GUI | 中高(STM32 路线):信号处理与采样模板丰富 |
| hongfeiyucode/find_way_car | 自称”最快”的 STM32 循迹小车,含循迹 / 寻光 / 切换 / 安卓遥控;作者复盘”两电机转速差必须程序补偿才走直” | 中:入门循迹 + 真实踩坑记录 |
题库与官方文档(必备底料)
- CCBP/NUEDC_Topic:历年全国电赛真题 PDF 合集,每题含官方评分标准表。研究评分逻辑、看清”基本要求 vs 发挥部分”分值的第一手权威来源,做题型预测和能力反推必备。
- 立创开发板 lspi 竞赛指南 wiki:备赛流程、器件采购、按分值优先级拿分等实操建议,前面引用的”器件易断货””按分值优先级取舍”都出自这里。
💡 怎么把这些仓库串起来用
推荐路线:先用 ZLC 或 PIDCarTemplate 把框架立起来,再拿 abcuer 当”答案”对照着读懂循迹与状态机怎么写,最后翻 CCBP 的真题评分表,反推自己这届该把火力集中在哪。
写在最后
到这里,”从 0 到 1 带你打电赛·小车电控篇”十二篇就全部讲完了。我们从”这比赛在比什么”出发,一路走过赛题进化、整车搭建、电机电源、感知、PID 入门到进阶、调参实战、进阶算法、视觉通信、状态机,最后落到今天这份现场作战手册。
如果只让我留一句话给即将上场的你,那就是开篇就埋下、今天又反复出现的那条主线——
✅ 稳 → 准 → 快
先让车不冲出、不挂零,再让它定点停准,最后才拼用时更快。能力是一层层叠上去的,分数也是。把基础做扎实、把保护做齐全、把能跑的版本备份好,剩下的,交给那 84 个小时里你和队友的默契。
电赛不只是一场比赛,它会逼你在极限压力下,把书本上的电机、PID、状态机真正变成手里能跑的东西。那种”它终于稳稳停在终点”的瞬间,值得你熬的每一个夜。
去吧,把车跑稳。祝你拿奖。
📚 本文是 「从 0 到 1 带你打电赛 · 小车电控篇」 系列(共 12 篇)第 12 篇。




