站内搜索
发作品签到
2025-K题国一-自动避障小车
专业版

2025-K题国一-自动避障小车

简介

本系统以TI MSPM0G3507为主控芯片,基于其官方开发板构建,实现了自动避障小车的多模式运动控制。系统具备基础避障通行、蛇形绕桩与绕柱旋转功能,并在此基础上实现了对环境布局变化的识别与自适应路径

简介:本系统以TI MSPM0G3507为主控芯片,基于其官方开发板构建,实现了自动避障小车的多模式运动控制。系统具备基础避障通行、蛇形绕桩与绕柱旋转功能,并在此基础上实现了对环境布局变化的识别与自适应路径
复刻成本:1000

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2025-09-05 10:04:26更新时间:2026-05-26 13:55:52

描述

嵌入闪电⚡ 团队

湖南汽车工程职业大学

2025年9月


获奖情况:2025年全国大学生电子设计竞赛国家一等奖(K题)


一、团队介绍

我们是 嵌入闪电⚡ 团队,来自湖南汽车工程职业大学。本设计方案在2025年全国大学生电子设计竞赛中荣获国家一等奖

团队成员

姓名专业职责分工
JamieK汽车智能控制
RuQiu物联网视觉
shuilang汽车维修硬件

二、题目要求

本次竞赛的任务是设计并制作一辆能够自主避障的智能小车。小车需在如图1所示的、尺寸为2m×2m的方形场地内运行。场地四周设有边墙,内部固定有4个白色5个黑色圆柱作为障碍物。小车从指定的入口A驶入,根据各项任务的具体要求,自主规划路径以避开所有圆柱,并最终从出口C驶出。

场地布局

屏幕截图 2025-09-08 133439.png

图1-1 自动避障小车测试场地示意图

通用规则

  • 小车在行驶过程中不得触碰任何圆柱障碍物
  • 小车可以接触但不能翻越场地边墙
  • 小车上仅设置一个"启动按键",用于一键启动各项任务
  • 小车尺寸在任何状态下均需满足:长≤35cm、宽≤25cm、高≤35cm
  • 所有传感器及控制电路必须全部集成在小车上,测试过程中不得与外部进行任何形式的通信

2.1 基本要求

在图1所示的固定圆柱布局下,小车从准备区出发,完成以下任务:

任务(1):快速穿越

  • 目标:一键启动后,小车从入口A进入,自主选择任意路径,并在10秒内车身完全从出口C驶出
  • 评分标准:完成时间越短得分越高

任务(2):蛇形绕障

  • 目标:一键启动后,小车从入口A进入,以左右变向的蛇形轨迹(轨迹示意:SZ)依次绕过第二行的所有圆柱,并在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:行驶状态(直行/其他)

实现逻辑

  1. 设置目标里程并进入相应状态
  2. 根据编码器累计里程判断是否达到目标
  3. 达到目标后停止并复位

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 发挥一任务分析

在"发挥一"任务中,我们需要应对第一行第三列黑色柱子的位置变更。由于换上去的柱子必定是白色,这为我们提供了明确的识别突破口。与其每一步都进行复杂的识别,我们采用预设路径规划的策略,沿着固定的最优路径来解决此任务。

屏幕截图 2025-09-08 134655.png
图4-1 发挥一唯一通用路径图

策略优势

  • 避免复杂的实时识别算法
  • 路径预规划,执行效率高
  • 鲁棒性强,不易受环境干扰

4.3 发挥二任务分析

在“发挥二”任务中,我们重点识别圈出的四根柱子:

  • 若其中有一根是白色,则可利用题目中的一次直角弯直接从中间穿过,此时 4 个边角共有 4 条可行路径。

  • 若四根柱子全部为黑色,根据题意,我们仅需再识别两根柱子,这两根柱子必然为以下三种情况之一:

    1. A 黑、B 白
    2. A 白、B 白
    3. A 白、B 黑
      在这三种情形下,可以重新规划路径,或对之前的 4 条路径稍作调整,即可顺利通过。

屏幕截图 2025-09-08 134747.png
图4-2 发挥二任务中的四根关键柱子示意图

技术要点

  • 计算机视觉:圆柱识别与定位算法
  • 路径规划:固定的4条路径
  • 通信协议:主控与视觉模块的高效数据传输
  • 实时性:30秒探测 + 10秒执行的时间约束

五、硬件总体设计框图

未命名绘图.drawio.png
图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)芯片
  • 保护功能
    • 高精度过压/欠压保护
    • 可编程限流功能
    • 故障状态指示
    • 有效防止后端电路因电源异常而损坏

电压变换模块

采用两级稳压架构实现高效电源管理:

级别器件型号输入电压输出电压负载模块特点
第一级TPS5430212V5V电机驱动等大功率模块开关降压,高效率
第二级A1117-3.35V3.3V微控制器及数字电路线性稳压,低噪声

电源电路原理图

图6-1 电源电路设计原理图

6.2 核心外设电路设计

人机交互模块

  • 按键输入电路

    • 采用外部上拉电阻确保高电平稳定
    • 软件去抖算法保证按键识别准确性
  • 状态指示电路

    • 三极管驱动电路控制蜂鸣器声音提示
    • 74HC595 移位寄存器扩展I/O端口
    • 提升系统操作便利性和状态可视化能力

核心外设电路图

图6-2 核心外设电路设计

6.3 模块接口与选型

为增强系统扩展性与兼容性,设计中预留了循迹传感器接口。各核心模块选型如下:

核心模块选型表

模块类别选型型号主要特性接口类型购买链接单价 (¥)
电机驱动TB6612FNG * 2双路 H 桥驱动,1.2A 连续电流PWM + GPIO点我购买13
显示模块1.3 寸 OLED128×64 分辨率,低功耗IIC/SPI点我购买10.8
视觉处理Sipeed MaixCAMAI 加速,图像识别UART点我购买338.9
姿态传感器正点原子 LSM6DSV六轴 IMU,高精度IIC点我购买45
TI 开发板MSPM0G3507低功耗 + 模拟测量能力,适合感知与测量点我购买215
航模电池狮子锂电池 3S带负载能力强XT60点我购买148
底盘套件包MG310 直流减速电机 mini 智能小车力气大、速度稳,自带霍尔编码器6P点我购买120

总价统计

合计¥903.7

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

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

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

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

07140cf816a6f916ba2c20da2e5ab919.jpg
图6-7 MSPM0G3507开发板
> 🛒 MSPM0G3507开发板 点我购买

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

a7d3e9f662c2ad6283b5ff8f3d1f298e.jpg
图6-9 MG310直流减速电机mini智能小车
> 🛒 MG310直流减速电机mini智能小车 点我购买

七、程序设计与流程

7.1 软件架构设计

系统软件采用模块化分层架构,在裸机环境下运行,通过定时器中断实现多任务调度:

层次功能模块
应用层任务调度、状态机、路径规划
控制层PID控制、运动控制、传感融合
驱动层PWM驱动、UART通信、编码器读取
硬件层MSPM0G3507、外设模块、传感器

7.2 主程序流程

系统主程序流程设计如下:

未命名绘图.drawio.png
图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;
        // ... 其他状态处理
    }
}

八、实物展示

小车实物图1 - 整体外观

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

小车实物图2 - 侧面视角

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

小车实物图3 - 内部结构

图8-3 小车侧面结构展示

8.1 机械结构特点

  • 紧凑设计:整车尺寸严格控制在规定范围内(长≤35cm、宽≤25cm、高≤35cm)
  • 模块化布局:主控板、电源模块、传感器模块合理分布,便于调试和维护
  • 稳定底盘:2轮驱动设计,确保运行稳定性和转向精度

8.2 电路板设计

  • 多层PCB设计:采用2层PCB工艺
  • 接口丰富:预留多种扩展接口,便于功能扩展

8.3 系统集成度

整套系统高度集成化,所有传感器、控制电路、执行模块均集成在小车平台上,实现了完全自主的避障导航功能。


九、测试数据

测试项目要求时限实际用时(s)是否触碰圆柱是否触碰边墙特殊要求完成情况成功/失败得分
基本(1) 任选路径10s6.41s□是 ✅否□是 ✅否车身完全驶出 ✅是 □否✅成功/10
基本(2) 蛇行绕行10s8.13s□是 ✅否□是 ✅否左右变向 ✅是 □否✅成功/15
基本(3) 绕圆柱转圈10s8.42s□是 ✅否□是 ✅否绕2个不同色各1圈 ✅是 □否✅成功/25
发挥(1) 互换圆柱20s6.6s□是 ✅否□是 ✅否不穿黑柱间 ✅是 □否
墙角转弯≤1次 ✅是 □否
✅成功/20
发挥(2) 随机排列探测30s
穿越10s
探测: 1.1s
穿越: 8.4s
□是 ✅否□是 ✅否不穿黑柱间 ✅是 □否
墙角转弯≤1次 ✅是 □否
✅成功/25

总分:90/90


十、演示视频

10.1 视频内容

系统运行的完整演示视频展示了以下内容:

基本任务演示

  • 快速穿越任务:展示小车从A口到C口的最快路径规划与执行
  • 蛇形绕障任务:演示S形或Z形轨迹绕过第二行圆柱的精确控制
  • 绕圈行驶任务:展示小车环绕不同颜色圆柱的差速转弯控制

发挥任务演示

  • 动态路径规划:演示位置变更后的自适应路径规划能力
  • 环境探测与规划:展示30秒探测阶段和10秒执行阶段的完整过程

10.3 观看方式

  1. 📹 25年电赛K题基础加发挥代码开源
  2. 📂 附件视频(见随文附件)

十一、编译与烧录说明

11.1 主控模块 (TI MSPM0G3507)

(1) 环境搭建

  1. 安装 Keil MDK-ARM,使用内置 Arm Compiler 6 (ArmClang)

  2. 安装 MSPM0G3507 设备支持包 (DFP):

    • 打开 Keil → Project -> Manage -> Pack Installer... → 搜索 MSPM0G → 安装 TexasInstruments.MSPM0G_DFP
    • 也可以点击下载MSPM0G_DFP包
  3. 安装 TI 官方 SDKSysConfig

    • SDK:包含驱动库、示例代码和文档,安装到 C:\ti\mspm0_sdk\...
    • SysConfig:图形化配置工具,生成 ti_msp_dl_config.c/h 初始化文件。

(2) Keil 集成 SysConfig

  1. 检查 SDK 路径下 tools\keil\MSPM0_SDK_syscfg_menu_import.cfgsyscfg.bat 中的路径是否正确。

  2. 在 Keil 中:

    • 打开示例工程 (...\examples\...\keil\xxx.uvprojx)。
    • Tools -> Customize Tools Menu -> Import... → 选择上面的 .cfg 文件。
    • 导入后,Tools 菜单会出现 SysConfig 选项。

(3) 编译、烧录与调试

  1. SysConfig 配置

    • 双击 .syscfg 文件 → Tools -> SysConfig 打开界面 → 配置外设/引脚 → 保存生成配置代码。
  2. 编译:点击 Rebuild/Build (F7),确保无报错。

  3. 烧录

    • USB 连接开发板(板载 XDS110 或 CMSIS-DAP 调试器)。
    • Project -> Options for Target...Debug 选项卡选择调试器 → Utilities 选项卡勾选 "Use Target Driver for Flash Programming"。
    • 点击 Download (F8) 烧录固件。
  4. 调试:点击 Start/Stop Debug Session (Ctrl+F5) 进入调试模式,可运行、断点、单步执行并观察变量寄存器。


11.2 视觉模块 (Sipeed MaixCAM)

基于 MicroPython,使用 MaixVision 进行开发。

烧录步骤:

  1. USB Type-C 连接 MaixCAM 到电脑。
  2. 打开 MaixVision,选择正确串口并点击 连接
  3. 打开视觉处理 .py 源码。
  4. 点击 “保存到开发板 (main.py)”,脚本将写入板载存储。
  5. 上电后开发板会自动运行 main.py

十二、附件内容

本设计方案的完整技术资料已整理并提供,便于技术交流与学习:

12.1 技术文档

  • 📋 附件一:系统硬件设计
    • 完整硬件原理图(PDF格式)
    • PCB工程文件(嘉立创PRO格式)
    • 器件清单(BOM表)
    • PCB Layout设计文件

12.2 软件源码

  • 💻 附件二:完整源代码工程
    • 主控MCU源码工程(基于TI MSPM0G3507)
    • 视觉模块源码(基于Sipeed MaixCAM)
    • 编译配置文件
    • 调试脚本与工具

12.3技术支持

如需获取更多技术细节或有疑问,欢迎联系:


感谢您的阅读与关注!

2025年全国大学生电子设计竞赛

嵌入闪电⚡ 团队


本报告遵循开源共享原则,欢迎技术交流与合作

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
K题_自动避障小车.pdf
84
2
2025K-Code.rar
113
3
2025年全国大学生电子设计大赛k题.mp4
37
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航