智能车竞赛技术复盘:从机械调校到算法稳定性的工程实践
2026/8/22 4:26:11 网站建设 项目流程

1. 从“省三”到“国赛门口”:一个智能车竞赛老兵的复盘视角

如果你正在准备或已经参加过全国大学生智能车竞赛,尤其是像“单车定向”这样对机械、控制、算法要求都极高的组别,那么这篇文章值得你看。它不是一个成功者的经验分享,而是一个两次拿到省赛三等奖、最终止步国赛门槛的参赛者,用整整一年时间换来的深度复盘。我们聊的不是如何“速成”或“夺冠”,而是如何更扎实地走完从校赛、省赛到冲击国赛的完整路径,以及那些在技术报告里很少提及,却足以决定成败的“非技术”细节。

“单车定向”组别,简单说就是让一辆两轮自平衡的智能车,在赛道上自主识别路标并完成定向任务。它考验的远不止是代码和电路,更是对车模机械调校、传感器融合、控制算法稳定性和临场应变能力的综合挑战。很多人以为调好PID、识别准路标就能行,但真正做下来会发现,从“能动”到“能稳定完赛”,从“省赛出线”到“国赛水平”,中间隔着巨大的实践鸿沟。我用了两个赛季,两次省三,最终在东北赛区与国赛失之交臂,这次复盘,就是想把这中间的教训和思考拆解清楚。

2. 备赛初期:避开“盲目堆技术”的第一个大坑

很多队伍一开始就容易陷入一个误区:看到规则发布,立刻去追最新的算法、最复杂的传感器、最炫的控制理论。我们第一年就踩了这个坑。以为用了更贵的IMU、写了更复杂的互补滤波,车就能更稳。结果就是,车的基本直立和行走都还没解决,所有高级算法都是空中楼阁。

2.1 硬件平台选择与机械调校是地基

“单车定向”的车模,其机械结构本身就是控制系统的一部分。车模的质心高度、轮胎摩擦力、舵机安装的虚位、电池的固定方式,这些看似基础的问题,直接影响所有算法的效果。

  • 重心与平衡:电池位置是调整重心的关键。重心太高,车容易晃动;太低,转向响应可能变慢。我们花了大量时间在3D打印各种电池支架上,进行微调。
  • 机械对称性与虚位:务必确保车模左右机械结构对称。舵机臂、连杆的虚位会导致控制指令的延迟和误差,表现出来就是车走直线时会“画龙”。这些机械误差是软件很难完全补偿的。
  • 传感器安装:陀螺仪和加速度计必须刚性固定在车体主结构上,避免因振动产生额外噪声。摄像头支架要稳固,避免在车体晃动时产生图像抖动。

经验之谈:不要一上来就埋头写代码。先用一周时间,把车模机械部分调到尽可能“正”和“稳”。用手推着车在平地上走,看它能否保持直线;轻轻拨动,看它能否快速回正。这个手感,比任何仿真都来得直接。

2.2 基础控制:先把车“立住”和“走直”

在机械调校的基础上,才能谈控制。单车的基础是直立控制(平衡)和速度控制。

  • 直立环(PD控制):核心是角速度(陀螺仪)反馈。比例项(P)决定“扶正”的力度,微分项(D)抑制摆动。调参时,先在小范围内手动给车一个倾斜,观察它能否快速且平稳地回到直立位置,而不是剧烈振荡或反应迟钝。
  • 速度环(PI控制):目标是让车在平衡的同时,保持期望的速度。速度误差积分(I)用来消除稳态误差。这里最容易出的问题是速度环输出干扰了直立环,导致车整体抖动。我们的经验是,先让直立环非常稳定后,再慢慢加入速度环,且速度环的参数要相对“柔和”。
  • 转向环:对于定向任务,转向的精准和柔和至关重要。除了根据图像处理得到的中线偏差进行PD控制外,还需要加入前馈控制,在入弯时提前打角。转向参数过于激进,车会在赛道上“画蛇”;过于保守,则无法及时过弯。

调试时,一定要在空旷、安全的场地进行,最好有队友在旁边随时准备扶住车模,防止飞车损坏。

3. 核心任务实现:图像处理与定向策略的稳定性博弈

“单车定向”的难点在于,车要在高速平衡运行中,实时处理图像、识别路标(如数字、箭头),并做出正确的决策(直行、转弯、停车等)。这里的关键词是稳定性,而非单纯的识别率。

3.1 图像处理流程的鲁棒性设计

摄像头采集的图像受光照影响极大。实验室的均匀光线和比赛现场可能完全不同。

  1. 图像预处理:灰度化、二值化是基础。二值化的阈值不能写死。我们采用了动态阈值算法(如大津法)或根据图像灰度直方图自适应计算,以适应不同光照。
  2. 赛道边界提取:采用“边线扫描”法。从图像底部向上,从左、右两侧向中间扫描,找到灰度跳变点作为边界。要处理边界丢失(出界、反光)的情况,通常用上一次的边界值进行预测补全。
  3. 路标识别:这是定向的核心。
    • 区域定位:先根据赛道边界,预估路标可能出现的区域(通常是赛道中央上方),对这个区域进行重点处理,减少计算量。
    • 特征提取:对于数字,可以采用轮廓查找、外接矩形、长宽比、网格特征提取等方法;对于简单箭头,可以计算其轮廓的主方向。切忌使用计算量过大的深度学习模型,在单片机上可能无法实时运行。
    • 决策与容错:识别结果不能“一锤定音”。我们设计了一个状态机和一个置信度队列。连续多帧识别到同一个结果,且置信度较高,才执行相应的动作指令。单帧误识别不会导致车辆误动作。

3.2 控制与识别的协同:时间与空间的配合

识别出路标后,车需要在正确的位置做出动作。例如,识别到“左转箭头”后,需要在下一个路口左转。

  • 动作触发机制:不能识别到就立刻动作。我们建立了“动作执行区”的概念。将赛道分成网格,只有车身的预估位置进入预设的“转弯执行区”时,才执行转弯指令。这避免了因识别提前或滞后导致的早转/晚转。
  • 状态记忆:车需要记住当前的任务状态。例如,刚刚完成了一个右转任务,那么接下来一段时间内,即使图像出现噪声像右转箭头,也应忽略。我们用一个简单的任务列表(To-Do List)来实现。

4. 备赛后期与赛场实战:从实验室到赛场的“最后一公里”

在实验室跑得再顺,也不代表能适应赛场。我们两次省赛,一次因为赛场光线变化导致图像二值化崩溃,一次因为赛道摩擦力与实验室不同导致控制参数不适,最终都只拿了省三。冲击国赛那年,我们在备赛最后阶段做了针对性调整。

4.1 环境适应性训练与参数泛化

  • 光线模拟:用台灯、手电筒从不同角度照射赛道,模拟赛场可能出现的顶光、侧光、不均匀光。记录下摄像头参数(曝光、增益)和图像处理阈值的变化范围,编写几套参数预案。
  • 地面摩擦测试:找不同材质的平面(光滑地砖、粗糙水泥、比赛常用的PVC赛台)进行测试。重点观察在不同摩擦系数下,车的加速、减速以及转弯时的打滑情况。速度环和转向环的参数可能需要微调。
  • 全流程压力测试:不再只跑单圈。设置连续多圈、随机路标顺序的任务,让车长时间运行。观察内存是否泄漏、控制量是否饱和、电机是否过热。日志系统至关重要,需要将关键数据(如识别结果、车身姿态、控制输出)实时输出到上位机或SD卡,方便赛后分析。

4.2 赛场调试流程与心态管理

比赛现场的调试时间极其宝贵,必须流程化。

  1. 快速检查:上车后,第一件事不是发车,而是检查:电池电压、所有线缆连接、传感器数据在上位机是否正常、车轮是否空转顺畅。
  2. 参数微调:根据现场光线,快速切换或微调图像参数。在练习赛道跑1-2圈,主要看边界提取是否稳定,路标识别区域是否准确。
  3. 控制验证:重点感受直道加速和弯道通过性。如果弯道有打滑或推头,微调转向D参数或前馈量。切记:每次只修改一个参数,并记录修改前后的表现。
  4. 心态调整:赛场必然会出现意外。我们的策略是,前两次发车以求稳完赛为首要目标,拿到有效成绩。最后一次发车再尝试冲击更高速度。避免一上来就“猛冲”,导致首次发车失败,心态崩溃。

5. 反思“错过国赛”:技术之外的关键短板

回顾东北赛区那次比赛,我们车子的技术状态其实比前两年都要好。最终差之毫厘,我认为问题出在以下几个“非技术”环节:

5.1 文档与代码管理的缺失

我们前期调试频繁,代码版本混乱,注释不全。比赛前一天晚上,想回溯一个一周前稳定的转向参数,竟然花了两个小时在多个版本的代码里寻找。建议:从第一天就使用Git进行版本管理,每次重大修改或参数调整都提交并写清日志。技术报告也应同步更新,不要堆到最后一周熬夜赶工。

5.2 对规则细节的钻研不足

“单车定向”的规则每年都有细微变化,比如路标种类、摆放逻辑、计分方式。我们虽然看了规则,但没有深入研究规则背后可能设置的“陷阱”。例如,某些路标组合出现顺序是否存在逻辑约束?完成定向任务的精度要求(停车位置)到底有多高?这些信息需要反复研读规则、分析往年赛题视频,甚至与裁判组沟通确认。对规则的理解深度,直接决定了算法策略的上限。

5.3 团队协作与应急预案的不足

比赛时,负责硬件的同学和负责软件的同学沟通不及时。一次传感器数据跳变,硬件同学怀疑是软件滤波问题,软件同学怀疑是硬件接触不良,耽误了调试时间。必须明确:场上出现任何问题,硬件同学第一时间检查物理连接和电源,软件同学查看原始传感器数据和基础控制输出,快速定位是机械问题、电气问题还是算法问题。 同时,我们没有准备充分的应急预案。例如,当主要路标识别算法连续失效时,是否有一个降级策略(比如按照固定路径跑完)来保底?当某个关键电机驱动芯片突然发热,是否有备用方案?这些都需要在赛前讨论并简单测试。

6. 给后来者的具体建议清单

如果你正准备投身智能车竞赛,特别是“单车定向”这类硬核组别,以下是我用一年时间打磨、两次省赛验证、一次国赛门槛失之交臂后,总结出的具体行动建议:

  1. 时间规划:将整个备赛周期分为机械调校期、基础控制期、图像算法期、融合调试期、环境适应期。每个阶段设定明确的验收标准,防止在某一个环节过度沉迷。
  2. 调试方法论
    • 隔离调试:调机械时,用最简单的开环程序测试。调控制时,先在空旷平地,再上简单赛道。调图像时,先用离线图片或视频,再在线运行。
    • 数据驱动:善用上位机工具(如匿名科创、VOFA+等)实时绘图,将车身姿态、控制量、图像处理结果可视化。相信数据,而非感觉。
    • 单一变量:每次只调整一个参数,观察变化,理解其物理意义。
  3. 代码与文档
    • 代码结构模块化(传感器驱动、图像处理、控制、决策等)。
    • 关键参数集中定义在头文件,方便调整。
    • 技术报告随开发进程持续撰写,包含清晰的流程图、算法说明和参数调整记录。
  4. 赛场清单
    • 物资清单:备用车模、备用核心板、电机、舵机、电池、各种螺丝工具、万用表、笔记本电脑、充电器、插线板。
    • 调试清单:赛前检查表(硬件连接、传感器数据、基础功能)。
    • 参数清单:针对不同光照、不同赛道摩擦系数的多套参数预案。
  5. 心态建设
    • 将目标分解为“成功发车”、“稳定完赛”、“取得有效成绩”、“冲击名次”。
    • 接受意外,把每次失败都当作一个数据点,用于改进系统。
    • 团队第一,明确分工,相互信任,避免互相指责。

智能车竞赛的魅力,就在于它是一场极其接近真实工程开发的演练。它考验的不仅是知识,更是将知识转化为稳定可靠系统的能力,以及在压力下排查问题、团队协作的综合素质。错过国赛固然遗憾,但这一年来在机械、电路、控制、算法上的深度实践,以及那些熬夜调试、解决问题的过程,是比奖状更扎实的收获。对于后来者,希望这些从“省三”视角总结的经验,能帮你少走一些我们走过的弯路,更稳健地冲向你的目标赛场。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询