第二十一届智能汽车竞赛雁过留痕组:从零到一的技术方案与实战优化指南
第二十一届全国大学生智能汽车竞赛已拉开帷幕,本届雁过留痕组在规则与技术难度上均有显著升级。本文由龙邱工程师团队深度解析,旨在帮助参赛同学快速搭建认知框架、掌握核心调试技巧,避开常见陷阱,高效备战。
一、赛题规则与信息获取渠道
赛题规则是备赛的核心依据,必须持续关注官方最新动态。主要信息来源包括:
- 全国大学生智能汽车竞赛官网 —— 发布正式规则与修订通知
- 卓晴老师CSDN博客 —— 提供赛题解读与场地说明
- 卓老师微信公众号(TsinghuaJoking) —— 评论区常有官方答疑
本届雁过留痕组在赛道识别、打靶机制及控制策略上均有新要求,建议参赛队伍尽早研读规则,避免方向性偏差。






二、搭车清单与硬件选型
硬件方案直接影响调试效率和稳定性。以下为推荐配置清单(以演示车模为例):

模块名称 | 作用 | 是否必须 | 是否需要自制 |
C 车模 | 车模运动平台 | 是 | 否 |
电池 | 供电 | 是 | 否 |
STC32G144 核心 板 | MCU 最小系统,引�� GOIO 管脚 | 是 | 否 |
STC32G144 母版 | 稳压电源、统一外设资源接口 | 是 | 是 |
神眼摄像头 | 识别赛道,循迹 | 是 | 否 |
DRV8701E 双路电 机驱动 | 驱动控制两路电机 | 是 | 是 |
LQ 1024 线编码器 | 精确反馈两个电机的转速 | 是 | 否 |
激光模块 | 包含激光的云台,打靶 | 是 | 否 |
LSM6DSR 陀螺仪 | 姿态反馈,转向控制 | 否 | 否 |
低压报警器 | 保护电池 | 否 | 否 |
Ips2.0 显示屏 | IPS 彩屏,显示神眼图像,显示数据等 | 否 | 否 |
USB-TTL 模块 | 串口调试 | 否(比赛时禁用) | 否 |
蓝牙模块 | 无线调试查看参数等 | 否(比赛时禁用) | 否 |
无线图传模块 | 传输车模运行时图像 | 否(比赛时禁用) | 否 |
选型时需注意:主控芯片推荐使用STC32G144系列,性能强劲且生态成熟;电机驱动建议选用带电流反馈的模块,便于后续闭环控制。⚠️ 切勿忽视电源模块的稳定性,电压波动会导致传感器数据异常。
三、软件环境搭建详解
工欲善其事,必先利其器。以下是标准开发环境搭建流程:
3.1 安装Keil集成开发环境
STC32G144单片机需安装Keil C251编译器。从Keil官网下载最新安装包,安装步骤包括:填写注册信息、选择安装目录、破解激活。破解方法可在CSDN搜索“Keil C251注册”获取。





3.2 安装AiCube-ISP烧录软件
从STC官网下载最新版ISP工具,用于程序烧录与仿真驱动安装。

3.3 添加型号与头文件到Keil
打开AiCube-ISP,在“Keil仿真设置”中选择对应型号(如STC32G144),点击“添加型号和头文件”,将目录定位到Keil安装目录即可。



3.4 安装CH340串口驱动
从WCH官网下载CH340驱动,用于串口调试。

3.5 下载开源库
开源库可从龙邱官方渠道获取(QQ群、Gitee、淘宝客服)。库结构包含GPIO、ADC、UART等模块例程。

3.6 拓展Keil中断号支持
STC单片机部分中断向量号超过31,需安装中断号拓展插件。在开源库“软件工具”文件夹中运行插件,选择Keil安装目录即可。



⚠️ 注意:部分旧版本Keil可能不支持该插件。
四、软件基础入门:核心外设实战
软件是智能车的“灵魂”。本节介绍单片机基础外设,帮助新手先让小车“跑起来”。
4.1 GPIO输入输出
GPIO(通用输入输出)是单片机与外界交互的基础。输出模式可控制LED、蜂鸣器;输入模式可读取按键、光电管信号。
- 推挽输出:真正输出高/低电平,驱动能力强
- 开漏输出:高电平为高阻态,需外接上拉电阻
- 浮空/上拉/下拉输入:用于读取电平,上拉输入悬空时默认高电平
4.2 ADC采集
ADC(模数转换器)将模拟信号(如传感器电压)转换为数字值。关键参数:
- 分辨率:如12位ADC可分辨3.3V/4095≈0.806mV
- 基准电压:决定分辨率,必须稳定

4.3 定时器中断
定时器中断是周期性任务的核心实现手段,常用于传感器采集、闭环控制等。中断优先级高于主循环,但中断服务程序中严禁加入长延时或阻塞操作。
4.4 PWM脉宽调制
PWM通过调整占空比控制电机转速或舵机角度。电机常用1k~30kHz频率,舵机常用50Hz~333Hz。
4.5 串口通信
串口用于单片机与上位机、传感器等设备通信。需注意:TX接RX,RX接TX,波特率必须一致。

五、软件控制思路:帧率优化与算法突破
今年STC单片机首次增设摄像头组别,不少同学遇到卡顿问题——单帧处理耗时高达20ms以上,严重影响稳定性。经过反复测试,我们优化后单帧耗时稳定在9~11ms,彻底解决卡顿。

5.1 基础铺垫
卡顿核心原因:内存不足 + 算法耗时过长。以下为关键知识点:
- 灰度图:摄像头采集的图像仅含明暗信息,像素值0~255
- 二值化:通过阈值将灰度图转为黑白两色,简化计算
- 大津法:自动筛选最优阈值,适配不同光照场景

阈值选择不当会导致赛道轮廓模糊,甚至无法识别。大津法通过遍历0~255灰度值,计算“类间方差”,选取使背景与目标分离最彻底的阈值。


















六、打靶功能与车模控制思路
雁过留痕组要求小车在循迹过程中完成精准打靶,这对视觉识别与机械配合提出了极高要求。推荐采用以下策略:
- 视觉定位:利用摄像头识别靶标位置,通过坐标转换控制舵机角度
- 机械结构:采用激光笔+舵机云台,实现快速瞄准
- 控制算法:结合PID算法,确保打靶动作平滑且不干扰循迹
车模控制方面,建议采用串级PID(速度环+角度环),提高动态响应能力。同时,注意编码器数据滤波,避免噪声干扰。
[AFFILIATE_SLOT_1]七、调试技巧与常见误区
根据多年备赛经验,以下误区需特别留意:
- 误区一:直接复制开源代码而不理解原理。建议从GPIO、ADC等基础外设逐步调试。
- 误区二:忽视电源稳定性。电压波动会导致传感器数据异常,建议使用独立稳压模块。
- 误区三:中断服务程序过长。中断中避免延时或复杂计算,否则会导致系统崩溃。
- 误区四:忽视机械结构对控制的影响。例如轮胎磨损、重心偏移都会影响循迹精度。
✅ 推荐调试流程:先让小车直线行驶 → 再实现基本转弯 → 逐步加入打靶功能 → 最后优化帧率与稳定性。
[AFFILIATE_SLOT_2]总结
本文从赛题规则、硬件选型、软件环境搭建、核心外设、帧率优化到打靶控制,系统梳理了雁过留痕组的备战全流程。关键要点:吃透规则、搭建稳定环境、理解算法原理、逐步迭代优化。智能车竞赛没有绝对最优解,唯有不断探索才能找到最适合的方案。希望本文能帮助大家少走弯路,从容应对挑战!
// 计算本次输出
output = last_output + delta_output;
// 对总输出进行限幅,确保在硬件允许范围内
if (output > MAX_OUTPUT) { output = MAX_OUTPUT;
} else if (output < MIN_OUTPUT) { output = MIN_OUTPUT;
}