工创赛智能救援小车:从视觉原型到完整闭环

2026 年 4 月,我参与了校级工程实践与创新能力竞赛智能救援赛项。小车需要在模拟场地中自主识别不同颜色的目标,完成接近、夹取、转运和返回搜索。项目最终获得校级二等奖。

早期方案:先把感知与控制链路跑通

初期笔记围绕 K210/CanMV 展开。我把系统拆成颜色识别、串口通信、任务状态机和麦克纳姆轮底盘四部分,并先验证“摄像头发现目标—发送类别与偏差—底盘调整方向”这条最小链路。

这个原型的价值不是成为最终方案,而是帮助我们尽早发现接口问题:视觉端应该输出什么信息、STM32 如何判断一帧数据是否完整、搜索与跟踪状态怎样切换、底盘运动方向与图像偏差怎样对应。

最终方案:OpenMV + STM32F407

经过现场调试与方案比较,最终系统使用 OpenMV4 H7 Plus 完成颜色阈值分割、色块筛选和目标定位,STM32F407 负责底盘控制、任务状态切换与执行机构控制。

视觉模块输出目标类别、水平偏差和尺度信息;主控将其转换为底盘速度指令,再通过麦克纳姆轮逆运动学得到四个车轮的目标速度。编码器反馈和 PID 控制用于减小电机差异造成的跑偏。

状态机让复杂任务可调试

我将连续任务分成搜索、跟踪、接近、夹取或转运、返回搜索等状态。每个状态只处理有限条件,并规定清晰的进入和退出规则。这比把所有判断都堆在主循环中更容易定位问题,也方便单独测试视觉、底盘和夹取机构。

调试中真正困难的部分

  • 摄像头画面中的左右偏差需要与底盘横移方向保持一致;
  • 四轮编号、安装方向和运动学公式必须统一;
  • 串口需要处理帧头、数据长度和异常数据,不能只读取单个字符;
  • PID 参数要在实际负载下调整,空载结果不能直接代表比赛状态;
  • 识别成功不等于任务成功,接近距离、对准精度和夹取动作必须一起验证。

项目反思

这次比赛让我第一次较完整地经历了从传感器输入到执行机构动作的系统联调。我学到的重点不只是 OpenMV 或 STM32 的某个函数,而是怎样定义模块边界、怎样用状态机组织任务,以及怎样通过逐层验证把一个复杂系统拆成可定位的问题。

查看项目详情与夹取演示




Enjoy Reading This Article?

Here are some more articles you might like to read next: