制作一辆自动避障小车,从测试场地边墙入口 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) |
小车结构紧凑,尺寸控制在 35cm × 25cm × 35cm 以内;
所有传感器必须固定牢靠,避免抖动;
通信接口统一(I2C/SPI/UART)便于模块互联;
红外阵列判断地面黑/白圆柱位置;
TCS34725 等颜色识别传感器判断白柱/黑柱;
巡线方案建议使用3~5个灰度对管进行蛇形控制;
基本任务可通过状态机(行驶 -> 避障 -> 绕柱 -> 前进)控制;
避障使用边缘检测或PID调节;
旋转一周:计圈/角度可用陀螺仪或IMU模块辅助(如 MPU6050);
控制逻辑简洁,每一步用时须精准;
速度/PWM占空比调节要兼顾精度与速度;
路径最短为主要优化方向(尤其是发挥部分任务);
| 成员 | 主要任务 |
|---|---|
| 队员A | 硬件搭建、电路焊接、电机驱动测试 |
| 队员B | 传感器调试、避障与路径规划算法实现 |
| 队员C | 主控程序集成、任务流程逻辑控制、文档撰写 |
| 类别 | 具体内容 |
|---|---|
| 电子电路设计 | 小车电源管理、驱动电路(L298N/H桥)、传感器信号采集 |
| 嵌入式系统 | MCU编程(定时器、PWM、ADC、I2C/SPI通信等) |
| 控制算法 | PID巡线、状态机控制、路径规划逻辑 |
| 信号处理 | 红外传感器信号滤波与判断、颜色识别处理 |
| 集成调试能力 | 多模块软硬件联调能力 |
| 项目管理 | 时间分配、任务调度、测试验证与问题排查 |
| 天数 | 主要任务 |
|---|---|
| 第一天 | 明确方案 → 模块焊接 → 小车结构搭建 |
| 第二天 | 控制系统调试 → 避障逻辑实现 → 基本任务测试 |
| 第三天 | 蛇形绕柱 / 绕圈控制 → 颜色识别 / 巡线控制 |
| 第四天 | 发挥部分调试 → 撰写报告 → 多轮测试与优化 |
以下是适用于自动避障小车的 PID 避障 + 巡线控制 的完整代码框架,支持移植到 MSPM0、STM32(HAL)、Arduino 等平台。
| 功能 | 实现方式 |
|---|---|
| 巡线 | 3~5路红外传感器,PID调整电机差速 |
| 避障 | 前方红外/超声判断,状态切换 |
| 路径选择状态机 | 依据传感器输入切换运行模式 |
// 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;
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题:自动避障小车》的项目报告模板(适用于高职高专组),可用于竞赛文档撰写、答辩准备和作品展示。已包含任务逻辑图位置信息(可插入控制流程图)、结构图等。
队伍编号:__________
学校名称:__________
参赛队员:、、__________
指导教师:__________
完成时间:2025年×月×日
本题要求设计一辆能在限定空间内完成自动绕柱、避障、识别任务的小车;
小车需在10s内完成指定路径穿越,具备一定路径判断与控制能力;
发挥部分可实现更多逻辑判断、动态路径规划等功能。
| 任务阶段 | 目标说明 |
|---|---|
| 蛇形绕柱 | 实现灰度巡线 + PID转向控制 |
| 遇障避障 | 前方识别障碍,及时绕行 |
| 绕柱识别 | 判断黑白柱子,依据颜色执行策略 |
| 路径切换 | 跳出蛇形后根据柱子分布做最短路径选择 |
✅(此处插入生成的“系统结构图”,展示:MCU → 红外 / 超声传感器 → 电机驱动 → 小车运动 → 显示模块)
| 模块 | 器件/说明 |
|---|---|
| 主控MCU | MSPM0 / STM32F103 / Arduino UNO |
| 红外传感器 | 3路或5路灰度对管阵列(巡线) |
| 避障模块 | 超声波(HC-SR04) / 红外模块 |
| 电机驱动 | L298N 或 TB6612(支持PWM控制) |
| 小车底盘 | 差速轮式结构,双轮+万向轮 |
| 电源系统 | 7.4V锂电池 + DC-DC 5V供电 |
✅(此处插入“控制流程图”,包含:启动 → 巡线 → 遇障 → 避障 → 判断 → 继续巡线 → 任务完成)
采用有限状态机(FSM)控制:
| 状态 | 触发条件 | 执行动作 |
|---|---|---|
| 巡线状态 | 正常前进 | PID调速 |
| 避障状态 | 距离 < 阈值 | 停止→转向→绕行 |
| 绕柱识别状态 | 检测到颜色传感器触发 | 判断黑/白柱 → 转弯/直行 |
| 完成状态 | 到达出口C | 停止,蜂鸣提示 |
使用3路灰度传感器,根据左右误差计算调整速度差;
控制左右轮差速,保持小车沿线前行;
使用超声模块实时检测距离;
距离小于20cm时,进入避障状态,右转绕行。
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;
}
| 测试项目 | 内容 | 是否通过 |
|---|---|---|
| 电机转向测试 | 前进、后退、左转、右转 | ✅ |
| 巡线准确性 | 不同背景/灯光下识别黑线 | ✅ |
| 避障反应 | 距离<20cm是否及时转向 | ✅ |
| 绕柱路径选择 | 能否完成绕行并回归主路线 | ✅ |
(插入实测照片或路径轨迹图)
| 项目 | 创新说明 |
|---|---|
| 模块化设计 | 电机/传感器/主控板接口统一,可快速替换 |
| 状态机结构 | 支持逻辑扩展与复杂路径判断 |
| 时间优化 | 任务完成时间 < 7.5秒,优于要求 |
| 便携测试 | 一键调试 + 显示状态反馈 |
| 队员 | 分工 |
|---|---|
| A | 电机控制、底盘搭建、整机调试 |
| B | MCU软件开发、PID控制编程 |
| C | 避障识别测试、报告整理与撰写 |
| 日期 | 工作内容 |
|---|---|
| 第一天 | 硬件组装 + 电机调试 |
| 第二天 | 巡线 + PID调试 |
| 第三天 | 避障识别 + 绕柱逻辑实现 |
| 第四天 | 优化 + 完整流程测试 + 写报告 |
实现了稳定的自动避障巡线功能;
状态逻辑控制清晰、可扩展;
对 PID 调参过程、传感器抗干扰等方面有深刻理解;
若有更长时间可进一步集成图像识别模块(OpenMV)。
原理图 / PCB截图
控制代码核心文件
控制流程图 / 系统结构图
任务实测视频或截图
PID参数调试记录表格
使用手册(启动方式 / 调试流程)