
2025-K题国一-自动避障小车
简介
本系统以TI MSPM0G3507为主控芯片,基于其官方开发板构建,实现了自动避障小车的多模式运动控制。系统具备基础避障通行、蛇形绕桩与绕柱旋转功能,并在此基础上实现了对环境布局变化的识别与自适应路径
简介:本系统以TI MSPM0G3507为主控芯片,基于其官方开发板构建,实现了自动避障小车的多模式运动控制。系统具备基础避障通行、蛇形绕桩与绕柱旋转功能,并在此基础上实现了对环境布局变化的识别与自适应路径开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
嵌入闪电⚡ 团队
湖南汽车工程职业大学
2025年9月
获奖情况:2025年全国大学生电子设计竞赛国家一等奖(K题)
一、团队介绍
我们是 嵌入闪电⚡ 团队,来自湖南汽车工程职业大学。本设计方案在2025年全国大学生电子设计竞赛中荣获国家一等奖。
团队成员
| 姓名 | 专业 | 职责分工 |
|---|---|---|
| JamieK | 汽车智能 | 控制 |
| RuQiu | 物联网 | 视觉 |
| shuilang | 汽车维修 | 硬件 |
二、题目要求
本次竞赛的任务是设计并制作一辆能够自主避障的智能小车。小车需在如图1所示的、尺寸为2m×2m的方形场地内运行。场地四周设有边墙,内部固定有4个白色和5个黑色圆柱作为障碍物。小车从指定的入口A驶入,根据各项任务的具体要求,自主规划路径以避开所有圆柱,并最终从出口C驶出。
场地布局

图1-1 自动避障小车测试场地示意图
通用规则
- 小车在行驶过程中不得触碰任何圆柱障碍物
- 小车可以接触但不能翻越场地边墙
- 小车上仅设置一个"启动按键",用于一键启动各项任务
- 小车尺寸在任何状态下均需满足:长≤35cm、宽≤25cm、高≤35cm
- 所有传感器及控制电路必须全部集成在小车上,测试过程中不得与外部进行任何形式的通信
2.1 基本要求
在图1所示的固定圆柱布局下,小车从准备区出发,完成以下任务:
任务(1):快速穿越
- 目标:一键启动后,小车从入口A进入,自主选择任意路径,并在10秒内车身完全从出口C驶出
- 评分标准:完成时间越短得分越高
任务(2):蛇形绕障
- 目标:一键启动后,小车从入口A进入,以左右变向的蛇形轨迹(轨迹示意:S 或 Z)依次绕过第二行的所有圆柱,并在10秒内车身完全从出口C驶出
- 路径要求:必须按照蛇形轨迹绕过指定圆柱
任务(3):绕圈行驶
- 目标:一键启动后,小车从入口A进入,自主选择任意两个颜色不同的圆柱,并分别环绕其行驶一圈(方向不限),随后在总计10秒内车身完全从出口C驶出
- 约束条件:必须选择两个不同颜色的圆柱
2.2 发挥部分
在完成基本要求的基础上,小车在每次穿越过程中还需满足以下附加约束:
> 约束条件:
> - 不得从两个黑色圆柱之间穿过
> - 沿场地边墙墙角转弯的次数不超过1次
任务(1):动态路径规划
- 场景:在图1布局的基础上,按裁判指令将第1行第3列的黑色圆柱与场上任意一个白色圆柱互换位置
- 要求:小车从准备区一键启动,自主规划并执行最优路径,从A口进入,C口驶出
- 评分标准:完成用时越少越好
任务(2):未知环境探测与路径规划
- 场景:裁判按指令随机排列场地内的圆柱
- 探测阶段:小车在准备区一键启动后,有30秒的时间在准备区内对场地进行探测,以识别所有圆柱的位置
- 执行阶段:完成探测后,小车需穿过出发线进入A口,并在10秒内自主规划路径,车身完全从C口驶出
任务(3):其他
- 创新功能:展示系统在基础和发挥部分之外的其他创新性功能或性能优化
三、设计摘要
本系统以 TI MSPM0G3507 微控制器为核心,打造了一辆融合视觉与惯性导航的自主避障小车。主控负责运动与任务调度,视觉协处理器则专心做图像识别,并通过 UART 实时汇报障碍物和路径信息。IMU 与编码器深度结合,保证了里程和姿态的高精度。
控制层次清晰:底层 PID 管速度,中间层管走直线和转弯,顶层用有限状态机统筹任务。结合角度误差校正与累积补偿,小车能稳健完成直行、转弯甚至圆弧运动。
系统在裸机环境下运行,靠定时器中断实现多任务调度,响应迅速且稳定。经过测试,小车在比赛任务中表现可靠,性能全面超标,展示出很强的鲁棒性和工程价值。
四、题目分析
4.1 基础部分任务分析
基础部分主要通过实现以下核心函数来完成各项任务(代码已开源这里只写了部分核心函数仅供参考):
1. car_move_cm() - 直线行驶控制
bool car_move_cm(float mileage, CAR_STATES move_state);
功能:控制小车直线行驶指定里程。
参数:
mileage:目标里程(厘米)move_state:行驶状态(直行/其他)
实现逻辑:
- 设置目标里程并进入相应状态
- 根据编码器累计里程判断是否达到目标
- 达到目标后停止并复位
2. spin_turn() - 原地旋转控制
bool spin_turn(float angle);
功能:控制小车原地旋转到目标角度。
参数:
angle:目标角度(度)
实现逻辑:
- 有IMU:计算当前角度误差,用PID收敛
- 无IMU:基于码盘计算轮子弧长,判断转向是否完成
3. car_circle() & update_circle_control() - 绕圈控制
bool car_circle(float radius_cm, bool clockwise, float target_angle_deg);
void update_circle_control(void);
功能:实现绕圈控制,支持指定半径和方向。
参数:
radius_cm:绕圈半径(厘米)clockwise:顺/逆时针方向target_angle_deg:绕行角度(度)
实现逻辑:
- 根据IMU累计角度判断是否完成绕圈
- 动态计算内外轮速度差,实现差速转弯
4. car_reset() - 系统重置
void car_reset(void);
功能:重置小车所有状态参数。
重置内容:
- 清零电机速度、编码器里程、PID控制器
- 停止PWM输出
- 清空绕圈相关状态
4.2 发挥一任务分析
在"发挥一"任务中,我们需要应对第一行第三列黑色柱子的位置变更。由于换上去的柱子必定是白色,这为我们提供了明确的识别突破口。与其每一步都进行复杂的识别,我们采用预设路径规划的策略,沿着固定的最优路径来解决此任务。

图4-1 发挥一唯一通用路径图
策略优势:
- 避免复杂的实时识别算法
- 路径预规划,执行效率高
- 鲁棒性强,不易受环境干扰
4.3 发挥二任务分析
在“发挥二”任务中,我们重点识别圈出的四根柱子:
-
若其中有一根是白色,则可利用题目中的一次直角弯直接从中间穿过,此时 4 个边角共有 4 条可行路径。
-
若四根柱子全部为黑色,根据题意,我们仅需再识别两根柱子,这两根柱子必然为以下三种情况之一:
- A 黑、B 白
- A 白、B 白
- A 白、B 黑
在这三种情形下,可以重新规划路径,或对之前的 4 条路径稍作调整,即可顺利通过。

图4-2 发挥二任务中的四根关键柱子示意图
技术要点:
- 计算机视觉:圆柱识别与定位算法
- 路径规划:固定的4条路径
- 通信协议:主控与视觉模块的高效数据传输
- 实时性:30秒探测 + 10秒执行的时间约束
五、硬件总体设计框图

图5-1 硬件总体设计框图
硬件系统采用分层设计架构,主要包含以下模块:
5.1 硬件层
- 主控模块:TI MSPM0G3507 微控制器
- 传感器模块:编码器、IMU姿态传感器
- 执行模块:电机驱动
- 视觉模块:Sipeed MaixCAM AI开发板
5.2 驱动层
- 电机驱动:PWM信号生成与控制
- 传感器驱动:编码器计数、IMU数据采集
- 通信驱动:UART串口通信协议
5.3 控制层
- 运动控制:PID速度控制、位置控制
- 路径跟踪:直线控制、转向控制、圆弧控制
- 状态机管理:任务调度与状态转换
5.4 应用层
- 任务执行:基本任务与发挥任务实现
- 路径规划:静态与动态路径规划算法
- 人机交互:按键输入、状态显示
六、硬件电路设计
6.1 电源电路设计
系统电源设计采用多级保护与稳压方案,确保各模块稳定可靠供电:
输入保护模块
- 核心器件:TI
TPS25921ADR电子保险丝(eFuse)芯片 - 保护功能:
- 高精度过压/欠压保护
- 可编程限流功能
- 故障状态指示
- 有效防止后端电路因电源异常而损坏
电压变换模块
采用两级稳压架构实现高效电源管理:
| 级别 | 器件型号 | 输入电压 | 输出电压 | 负载模块 | 特点 |
|---|---|---|---|---|---|
| 第一级 | TPS54302 | 12V | 5V | 电机驱动等大功率模块 | 开关降压,高效率 |
| 第二级 | A1117-3.3 | 5V | 3.3V | 微控制器及数字电路 | 线性稳压,低噪声 |

图6-1 电源电路设计原理图
6.2 核心外设电路设计
人机交互模块
-
按键输入电路:
- 采用外部上拉电阻确保高电平稳定
- 软件去抖算法保证按键识别准确性
-
状态指示电路:
- 三极管驱动电路控制蜂鸣器声音提示
74HC595移位寄存器扩展I/O端口- 提升系统操作便利性和状态可视化能力

图6-2 核心外设电路设计
6.3 模块接口与选型
为增强系统扩展性与兼容性,设计中预留了循迹传感器接口。各核心模块选型如下:
核心模块选型表
| 模块类别 | 选型型号 | 主要特性 | 接口类型 | 购买链接 | 单价 (¥) |
|---|---|---|---|---|---|
| 电机驱动 | TB6612FNG * 2 | 双路 H 桥驱动,1.2A 连续电流 | PWM + GPIO | 点我购买 | 13 |
| 显示模块 | 1.3 寸 OLED | 128×64 分辨率,低功耗 | IIC/SPI | 点我购买 | 10.8 |
| 视觉处理 | Sipeed MaixCAM | AI 加速,图像识别 | UART | 点我购买 | 338.9 |
| 姿态传感器 | 正点原子 LSM6DSV | 六轴 IMU,高精度 | IIC | 点我购买 | 45 |
| TI 开发板 | MSPM0G3507 | 低功耗 + 模拟测量能力,适合感知与测量 | 无 | 点我购买 | 215 |
| 航模电池 | 狮子锂电池 3S | 带负载能力强 | XT60 | 点我购买 | 148 |
| 底盘套件包 | MG310 直流减速电机 mini 智能小车 | 力气大、速度稳,自带霍尔编码器 | 6P | 点我购买 | 120 |
总价统计
| 合计 | ¥903.7 |
|---|

图6-3 TB6612FNG电机驱动板模块
> 🛒 1.3寸OLED显示屏模块 点我购买

图6-4 可爱橙1.3寸OLED显示屏模块
> 🛒 1.3寸OLED显示屏模块 点我购买

图6-5 MaixCAM RISC-V开发板
> 🛒 Sipeed MaixCAM RISC-V 开发板 点我购买

图6-6 MS6DSV姿态解算模块
> 🛒 正点原子 MS6DSV 姿态解算模块 点我购买

图6-7 MSPM0G3507开发板
> 🛒 MSPM0G3507开发板 点我购买

图6-8 狮子航模锂电池3S
> 🛒 狮子航模锂电池3S 点我购买

图6-9 MG310直流减速电机mini智能小车
> 🛒 MG310直流减速电机mini智能小车 点我购买
七、程序设计与流程
7.1 软件架构设计
系统软件采用模块化分层架构,在裸机环境下运行,通过定时器中断实现多任务调度:
| 层次 | 功能模块 |
|---|---|
| 应用层 | 任务调度、状态机、路径规划 |
| 控制层 | PID控制、运动控制、传感融合 |
| 驱动层 | PWM驱动、UART通信、编码器读取 |
| 硬件层 | MSPM0G3507、外设模块、传感器 |
7.2 主程序流程
系统主程序流程设计如下:

图7-1 系统主程序流程图
7.3 核心算法实现
7.3.1 PID控制算法
系统采用位置式PID控制器,实现对速度和角度的精确控制:
typedef struct {
float Kp, Ki, Kd; // PID参数
float target; // 目标值
float error, last_error; // 误差值
float integral; // 积分项
float output; // 输出值
} PID_Controller_t;
float PID_Calculate(PID_Controller_t *pid, float current_value) {
pid->error = pid->target - current_value;
pid->integral += pid->error;
// 积分限幅
if (pid->integral > PID_INTEGRAL_MAX)
pid->integral = PID_INTEGRAL_MAX;
else if (pid->integral integral = -PID_INTEGRAL_MAX;
// PID输出计算
pid->output = pid->Kp * pid->error +
pid->Ki * pid->integral +
pid->Kd * (pid->error - pid->last_error);
pid->last_error = pid->error;
return pid->output;
}
7.3.2 状态机设计
采用有限状态机(FSM)管理系统运行状态:
typedef enum {
CAR_STATE_IDLE, // 待机状态
CAR_STATE_STRAIGHT, // 直线行驶
CAR_STATE_TURN, // 转向状态
CAR_STATE_CIRCLE, // 绕圈状态
CAR_STATE_TRACK, // 循迹状态
CAR_STATE_STOP // 停止状态
} CAR_STATES;
void Car_State_Machine(void) {
switch(car_state) {
case CAR_STATE_STRAIGHT:
update_straight_control();
break;
case CAR_STATE_TURN:
update_turn_control();
break;
case CAR_STATE_CIRCLE:
update_circle_control();
break;
// ... 其他状态处理
}
}
八、实物展示

图8-1 小车整体外观展示1

图8-2 小车整体外观展示2

图8-3 小车侧面结构展示
8.1 机械结构特点
- 紧凑设计:整车尺寸严格控制在规定范围内(长≤35cm、宽≤25cm、高≤35cm)
- 模块化布局:主控板、电源模块、传感器模块合理分布,便于调试和维护
- 稳定底盘:2轮驱动设计,确保运行稳定性和转向精度
8.2 电路板设计
- 多层PCB设计:采用2层PCB工艺
- 接口丰富:预留多种扩展接口,便于功能扩展
8.3 系统集成度
整套系统高度集成化,所有传感器、控制电路、执行模块均集成在小车平台上,实现了完全自主的避障导航功能。
九、测试数据
| 测试项目 | 要求时限 | 实际用时(s) | 是否触碰圆柱 | 是否触碰边墙 | 特殊要求完成情况 | 成功/失败 | 得分 |
|---|---|---|---|---|---|---|---|
| 基本(1) 任选路径 | 10s | 6.41s | □是 ✅否 | □是 ✅否 | 车身完全驶出 ✅是 □否 | ✅成功 | /10 |
| 基本(2) 蛇行绕行 | 10s | 8.13s | □是 ✅否 | □是 ✅否 | 左右变向 ✅是 □否 | ✅成功 | /15 |
| 基本(3) 绕圆柱转圈 | 10s | 8.42s | □是 ✅否 | □是 ✅否 | 绕2个不同色各1圈 ✅是 □否 | ✅成功 | /25 |
| 发挥(1) 互换圆柱 | 20s | 6.6s | □是 ✅否 | □是 ✅否 | 不穿黑柱间 ✅是 □否 墙角转弯≤1次 ✅是 □否 | ✅成功 | /20 |
| 发挥(2) 随机排列 | 探测30s 穿越10s | 探测: 1.1s 穿越: 8.4s | □是 ✅否 | □是 ✅否 | 不穿黑柱间 ✅是 □否 墙角转弯≤1次 ✅是 □否 | ✅成功 | /25 |
总分:90/90
十、演示视频
10.1 视频内容
系统运行的完整演示视频展示了以下内容:
基本任务演示
- 快速穿越任务:展示小车从A口到C口的最快路径规划与执行
- 蛇形绕障任务:演示S形或Z形轨迹绕过第二行圆柱的精确控制
- 绕圈行驶任务:展示小车环绕不同颜色圆柱的差速转弯控制
发挥任务演示
- 动态路径规划:演示位置变更后的自适应路径规划能力
- 环境探测与规划:展示30秒探测阶段和10秒执行阶段的完整过程
10.3 观看方式
- 📹 25年电赛K题基础加发挥代码开源
- 📂 附件视频(见随文附件)
十一、编译与烧录说明
11.1 主控模块 (TI MSPM0G3507)
(1) 环境搭建
-
安装 Keil MDK-ARM,使用内置 Arm Compiler 6 (ArmClang)。
-
安装 MSPM0G3507 设备支持包 (DFP):
- 打开 Keil →
Project -> Manage -> Pack Installer...→ 搜索MSPM0G→ 安装TexasInstruments.MSPM0G_DFP。 - 也可以点击下载MSPM0G_DFP包
- 打开 Keil →
-
- SDK:包含驱动库、示例代码和文档,安装到
C:\ti\mspm0_sdk\...。 - SysConfig:图形化配置工具,生成
ti_msp_dl_config.c/h初始化文件。
- SDK:包含驱动库、示例代码和文档,安装到
(2) Keil 集成 SysConfig
-
检查 SDK 路径下
tools\keil\MSPM0_SDK_syscfg_menu_import.cfg与syscfg.bat中的路径是否正确。 -
在 Keil 中:
- 打开示例工程 (
...\examples\...\keil\xxx.uvprojx)。 Tools -> Customize Tools Menu -> Import...→ 选择上面的.cfg文件。- 导入后,
Tools菜单会出现 SysConfig 选项。
- 打开示例工程 (
(3) 编译、烧录与调试
-
SysConfig 配置:
- 双击
.syscfg文件 →Tools -> SysConfig打开界面 → 配置外设/引脚 → 保存生成配置代码。
- 双击
-
编译:点击 Rebuild/Build (
F7),确保无报错。 -
烧录:
- USB 连接开发板(板载 XDS110 或 CMSIS-DAP 调试器)。
Project -> Options for Target...→Debug选项卡选择调试器 →Utilities选项卡勾选 "Use Target Driver for Flash Programming"。- 点击 Download (F8) 烧录固件。
-
调试:点击 Start/Stop Debug Session (Ctrl+F5) 进入调试模式,可运行、断点、单步执行并观察变量寄存器。
11.2 视觉模块 (Sipeed MaixCAM)
基于 MicroPython,使用 MaixVision 进行开发。
烧录步骤:
- USB Type-C 连接 MaixCAM 到电脑。
- 打开 MaixVision,选择正确串口并点击 连接。
- 打开视觉处理
.py源码。 - 点击 “保存到开发板 (main.py)”,脚本将写入板载存储。
- 上电后开发板会自动运行
main.py。
十二、附件内容
本设计方案的完整技术资料已整理并提供,便于技术交流与学习:
12.1 技术文档
- 📋 附件一:系统硬件设计
- 完整硬件原理图(PDF格式)
- PCB工程文件(嘉立创PRO格式)
- 器件清单(BOM表)
- PCB Layout设计文件
12.2 软件源码
- 💻 附件二:完整源代码工程
- 主控MCU源码工程(基于TI MSPM0G3507)
- 视觉模块源码(基于Sipeed MaixCAM)
- 编译配置文件
- 调试脚本与工具
12.3技术支持
如需获取更多技术细节或有疑问,欢迎联系:
- 团队邮箱:3350633136@qq.com
- 开源仓库:JamieK32 (JamieK)
感谢您的阅读与关注!
2025年全国大学生电子设计竞赛
嵌入闪电⚡ 团队
本报告遵循开源共享原则,欢迎技术交流与合作
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










