任务名称
2025年_K题:自动避障小车(高职高专组)
任务要求
难度

一、 任务

制作一辆自动避障小车,从测试场地边墙入口 A 驶入,按具体任务要求绕过场地内的圆柱障碍,在规定时间内从出口 C 驶出。测试场地如图 1 所示,为边长 2 米的正方形,四周有边墙围挡,两侧有入口 A 和出口 C,4 个白色、5 个黑色圆柱用圆柱座固定在场地上作为障碍物。

二、 要求

小车在场地中行驶不应触碰圆柱,可触碰但不可跨越场地边墙。

1. 基本要求

圆柱排列如图 1 所示。小车放置在准备区。

(1)一键启动小车并开始计时,小车从 A 口进入,任选路径,10s 内车身完全从 C 口驶出。

(2)一键启动小车并开始计时,小车从 A 口进入,左右变向蛇行绕过第 2行各圆柱,行驶轨迹参见说明(6),10s 内车身完全从 C 口驶出。

(3)一键启动小车并开始计时,小车从 A 口进入,分别绕任意两个不同颜色的圆柱各转行 1 圈(方向不限),10s 内车身完全从 C 口驶出。

2. 发挥部分

小车每次从入口到出口穿越过程中还必须满足:不从两个黑柱间穿过,沿边墙墙角转弯不超过 1 次。

(1)小车放置在准备区,在图 1 的基础上按指令将第 1 行第 3 列处的黑柱与任一白柱互换位置,一键启动小车并开始计时,从 A 口进入,计时至车身完全从 C 口驶出,用时越少越好。

(2)小车放置在准备区,按指令随机排列圆柱,一键启动探测圆柱,在 30s内完成探测、穿过出发线进入 A 口,10s 内车身应完全从 C 口驶出。

(3)其他。

三、 说明

(1)测试时场地、边墙及圆柱座由赛区提供。场地用长 300cm 宽 210cm 的哑光喷绘布制作,背景色为灰色(R:170 G:170 B:170),喷绘出图 1 中圆柱位置(直径 2.5cm 黑色圆圈)、黄色边墙位置、黑色出发线和黑色虚线,其线宽分别为 0.2cm、1cm、2cm 和 0.2cm。障碍圆柱用直径 2cm 白色 PVC 电工穿线管制作,长度 20±1cm。白柱采用 PVC 原色,黑柱表面涂哑光黑色。圆柱座采用白色“直接套管”(PVC 管标准配件,长度 4~5cm)。在喷绘布上圆柱位置开孔,将圆柱座用热熔胶粘接固定在地面上。场地边墙高 3±0.5cm,用木板制作,表面黄色,用热熔胶固定。测试时参赛队必须自带圆柱,插入赛区准备好的圆柱座。圆柱和圆柱座、场地及周边不得有任何其他标志和传感器。

(2)所有传感器及控制电路均安装在小车上,小车尺寸在任何状态均必须满足(含所有传感器和控制电路):长≤35cm、宽≤25cm、高≤35cm。测试中小车与外部不得有任何通信交互。

(3)小车上只有 1 个“启动按键”,设置好测试项目后可用其一键启动小车。

(4)发挥部分(2),小车一键启动后在 30s 探测时间内可在准备区中任意移动。

(5)完成各项穿越要求的用时不得超过 20s,否则视作失败,该项计 0 分。K - 3 / 3

(6)蛇行轨迹示意如图:

(7)所有测试项目只能测试一次。

评审标准

参考答案

GPT-4o给出的建议


✅ 一、设计目标解读

设计一辆具备自动避障与路径规划能力的小车,能根据不同任务(蛇形绕柱、识别柱子颜色、绕柱一周等)完成从入口A到出口C的路径穿越,在10秒内完成任务,并具备一定的拓展性(动态布局识别、路径约束)。


✅ 二、推荐平台与方案概览

模块 方案建议
控制核心 STM32(如F103C8)、MSPM0、Arduino(ATmega328)
驱动系统 直流电机 + L298N 或双H桥(PWM控制)
避障传感器 红外对管 / 超声波模块 / TOF激光测距(视预算)
识别模块 颜色识别:TCS34725 / 灰度阵列;图像识别可用 OpenMV(如发挥部分)
路径规划 PID巡线 + 状态机控制路径切换
电源系统 7.4V锂电池 + DC-DC 降压模块(5V/3.3V)

✅ 三、设计重点与注意要点

1. 小车结构与布线

  • 小车结构紧凑,尺寸控制在 35cm × 25cm × 35cm 以内;

  • 所有传感器必须固定牢靠,避免抖动;

  • 通信接口统一(I2C/SPI/UART)便于模块互联;

2. 传感与识别系统

  • 红外阵列判断地面黑/白圆柱位置;

  • TCS34725 等颜色识别传感器判断白柱/黑柱;

  • 巡线方案建议使用3~5个灰度对管进行蛇形控制;

3. 控制策略

  • 基本任务可通过状态机(行驶 -> 避障 -> 绕柱 -> 前进)控制;

  • 避障使用边缘检测或PID调节;

  • 旋转一周:计圈/角度可用陀螺仪或IMU模块辅助(如 MPU6050);

4. 时间优化

  • 控制逻辑简洁,每一步用时须精准;

  • 速度/PWM占空比调节要兼顾精度与速度;

  • 路径最短为主要优化方向(尤其是发挥部分任务);


✅ 四、系统模块分工(建议 3 人团队任务划分)

成员 主要任务
队员A 硬件搭建、电路焊接、电机驱动测试
队员B 传感器调试、避障与路径规划算法实现
队员C 主控程序集成、任务流程逻辑控制、文档撰写

✅ 五、本题考察的知识点与技能点

类别 具体内容
电子电路设计 小车电源管理、驱动电路(L298N/H桥)、传感器信号采集
嵌入式系统 MCU编程(定时器、PWM、ADC、I2C/SPI通信等)
控制算法 PID巡线、状态机控制、路径规划逻辑
信号处理 红外传感器信号滤波与判断、颜色识别处理
集成调试能力 多模块软硬件联调能力
项目管理 时间分配、任务调度、测试验证与问题排查

✅ 六、建议开发流程(4 天安排)

天数 主要任务
第一天 明确方案 → 模块焊接 → 小车结构搭建
第二天 控制系统调试 → 避障逻辑实现 → 基本任务测试
第三天 蛇形绕柱 / 绕圈控制 → 颜色识别 / 巡线控制
第四天 发挥部分调试 → 撰写报告 → 多轮测试与优化

以下是适用于自动避障小车PID 避障 + 巡线控制完整代码框架,支持移植到 MSPM0、STM32(HAL)、Arduino 等平台。


✅ 一、控制系统功能概览

功能 实现方式
巡线 3~5路红外传感器,PID调整电机差速
避障 前方红外/超声判断,状态切换
路径选择状态机 依据传感器输入切换运行模式

🧠 二、全局变量定义(C语言示例)

// PID参数
float Kp = 20.0f, Ki = 0.0f, Kd = 5.0f;
float error = 0, last_error = 0, integral = 0;

// 巡线传感器值:左中右
uint8_t sensor_L, sensor_M, sensor_R;

// 当前状态
typedef enum { MODE_LINE_FOLLOW, MODE_OBSTACLE_AVOID, MODE_ROTATE } ModeType;
ModeType mode = MODE_LINE_FOLLOW;

🚗 三、巡线控制逻辑(PID实现)

void Line_Follow_PID()
{
    // 读取红外传感器,黑线为1,白底为0
    sensor_L = Read_IR_Left();
    sensor_M = Read_IR_Middle();
    sensor_R = Read_IR_Right();

    // 差值计算(可自定义更复杂模型)
    error = sensor_L - sensor_R;

    // PID控制
    integral += error;
    float derivative = error - last_error;
    float output = Kp * error + Ki * integral + Kd * derivative;
    last_error = error;

    // 调节电机速度(限幅)
    int base_speed = 60;
    int left_speed = base_speed - output;
    int right_speed = base_speed + output;

    Set_Motor_Speed(left_speed, right_speed);
}

🔍 四、避障检测逻辑(简单状态切换)

void Check_Obstacle()
{
    int dist = Get_Obstacle_Distance();  // 超声波 or 红外距离(单位cm)

    if (dist < 20) {
        mode = MODE_OBSTACLE_AVOID;
    }
}

🔄 五、避障策略(绕行或停车)

void Obstacle_Avoid()
{
    Stop_Motors();
    Delay_ms(300);

    // 简单右转避障策略
    Set_Motor_Speed(50, -50); // 原地右转
    Delay_ms(600);            // 转90度
    Set_Motor_Speed(60, 60);
    Delay_ms(800);            // 前进避开
    Set_Motor_Speed(-50, 50); // 左转回正
    Delay_ms(600);
    Set_Motor_Speed(60, 60);  // 继续前进

    mode = MODE_LINE_FOLLOW;
}

🧩 六、主循环逻辑(状态机调度)

int main(void)
{
    Init_All_Peripherals();

    while (1)
    {
        Check_Obstacle(); // 先判断是否切换状态

        switch (mode)
        {
            case MODE_LINE_FOLLOW:
                Line_Follow_PID();
                break;

            case MODE_OBSTACLE_AVOID:
                Obstacle_Avoid();
                break;

            case MODE_ROTATE:
                Rotate_Around(); // 选做功能
                break;
        }

        Delay_ms(10);
    }
}

⚙️ 七、底层函数说明

函数名 作用
Read_IR_Left() 读取左侧红外传感器状态(0/1)
Get_Obstacle_Distance() 读取前方障碍距离(超声波)
Set_Motor_Speed(l,r) 设置左右电机速度(-100~100)
Stop_Motors() 停止左右电机输出
Delay_ms() 毫秒级延时(阻塞)

✅ 八、扩展建议

  • 若使用 MPU6050,可结合角速度/陀螺仪进行绕柱角度控制;

  • 使用 5路灰度红外传感器提升巡线鲁棒性;

  • 可加入状态 LED 指示当前模式(避障/巡线);

  • 若基于 MSPM0,推荐使用 TIMG/PWM/ADC + SysTick 组合控制。


以下是《K题:自动避障小车》的项目报告模板(适用于高职高专组),可用于竞赛文档撰写、答辩准备和作品展示。已包含任务逻辑图位置信息(可插入控制流程图)、结构图等。


全国大学生电子设计竞赛项目报告

K题:自动避障小车

队伍编号:__________
学校名称:__________
参赛队员、__________
指导教师:__________
完成时间:2025年×月×日


一、任务分析与目标定义

1.1 题目理解

  • 本题要求设计一辆能在限定空间内完成自动绕柱、避障、识别任务的小车;

  • 小车需在10s内完成指定路径穿越,具备一定路径判断与控制能力;

  • 发挥部分可实现更多逻辑判断、动态路径规划等功能。

1.2 目标任务拆解

任务阶段 目标说明
蛇形绕柱 实现灰度巡线 + PID转向控制
遇障避障 前方识别障碍,及时绕行
绕柱识别 判断黑白柱子,依据颜色执行策略
路径切换 跳出蛇形后根据柱子分布做最短路径选择

二、系统结构设计

2.1 系统结构图

✅(此处插入生成的“系统结构图”,展示:MCU → 红外 / 超声传感器 → 电机驱动 → 小车运动 → 显示模块)

2.2 硬件构成说明

模块 器件/说明
主控MCU MSPM0 / STM32F103 / Arduino UNO
红外传感器 3路或5路灰度对管阵列(巡线)
避障模块 超声波(HC-SR04) / 红外模块
电机驱动 L298N 或 TB6612(支持PWM控制)
小车底盘 差速轮式结构,双轮+万向轮
电源系统 7.4V锂电池 + DC-DC 5V供电

三、软件控制与逻辑设计

3.1 控制流程图

✅(此处插入“控制流程图”,包含:启动 → 巡线 → 遇障 → 避障 → 判断 → 继续巡线 → 任务完成)

3.2 状态控制模型

采用有限状态机(FSM)控制:

状态 触发条件 执行动作
巡线状态 正常前进 PID调速
避障状态 距离 < 阈值 停止→转向→绕行
绕柱识别状态 检测到颜色传感器触发 判断黑/白柱 → 转弯/直行
完成状态 到达出口C 停止,蜂鸣提示

四、控制算法与实现方法

4.1 PID巡线控制

  • 使用3路灰度传感器,根据左右误差计算调整速度差;

  • 控制左右轮差速,保持小车沿线前行;

4.2 避障逻辑

  • 使用超声模块实时检测距离;

  • 距离小于20cm时,进入避障状态,右转绕行。

4.3 执行逻辑伪代码(简化)

switch (mode)
{
  case LINE_FOLLOW:
    Line_Follow_PID();
    break;
  case OBSTACLE_AVOID:
    Turn_Right(); Delay();
    Forward(); Delay();
    Turn_Left(); Delay();
    mode = LINE_FOLLOW;
    break;
  case FINISH:
    Stop(); Beep();
    break;
}

五、测试与调试过程

5.1 各阶段测试

测试项目 内容 是否通过
电机转向测试 前进、后退、左转、右转
巡线准确性 不同背景/灯光下识别黑线
避障反应 距离<20cm是否及时转向
绕柱路径选择 能否完成绕行并回归主路线

5.2 测试现场记录图

(插入实测照片或路径轨迹图)


六、创新点与优化策略

项目 创新说明
模块化设计 电机/传感器/主控板接口统一,可快速替换
状态机结构 支持逻辑扩展与复杂路径判断
时间优化 任务完成时间 < 7.5秒,优于要求
便携测试 一键调试 + 显示状态反馈

七、项目管理与成员分工

队员 分工
A 电机控制、底盘搭建、整机调试
B MCU软件开发、PID控制编程
C 避障识别测试、报告整理与撰写
日期 工作内容
第一天 硬件组装 + 电机调试
第二天 巡线 + PID调试
第三天 避障识别 + 绕柱逻辑实现
第四天 优化 + 完整流程测试 + 写报告

八、项目总结与反思

  • 实现了稳定的自动避障巡线功能;

  • 状态逻辑控制清晰、可扩展;

  • 对 PID 调参过程、传感器抗干扰等方面有深刻理解;

  • 若有更长时间可进一步集成图像识别模块(OpenMV)。


九、附录(建议内容)

  • 原理图 / PCB截图

  • 控制代码核心文件

  • 控制流程图 / 系统结构图

  • 任务实测视频或截图

  • PID参数调试记录表格

  • 使用手册(启动方式 / 调试流程)


 

相关活动
知识点考查
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号