← 返回 OpenMV

OpenMV

送药小车视觉模块预研

这一专题围绕 OpenMV 送药小车视觉模块预研展开,目标不是只写几个摄像头脚本,而是把 OpenMV、STM32、电机控制、PID、路线状态机和串口协议之间的分工整理清楚,形成后续电子设计竞赛类智能车项目可以复用的视觉方案。

项目主线可以概括为:OpenMV 负责视觉识别和图像预处理,STM32 负责电机、编码器、PID、任务状态机和投药执行机构。OpenMV 不直接控制小车动作,而是把“线在哪里、是不是路口、目标在哪里、数字是多少”这些结构化结果通过 UART 发给 STM32。

当前源码分成五个版本:v1 负责五路 ROI 循迹并输出 error;v2 在循迹基础上识别普通线、左岔、右岔、十字路口和丢线;v3 负责颜色目标、形状判断和滤波,适合追球或识别投放点;v4 使用模板匹配识别数字,适合病房号、站点号或药品编号;v5 把前面功能统一成固定大包协议,方便 STM32 侧只写一个解析器。

工程上最重要的是统一串口协议。v5 使用固定帧格式发送 mode、error、route、digit、x、y、radius、area、flags、state、frame_id 和 checksum。这样 STM32 不需要理解图像处理细节,只要解析 VisionPacket,然后按当前任务阶段选择 error 做循迹 PID、按 route 做路口决策、按 digit 更新目标站点。

推荐开发顺序是先分开验证,再统一集成:先跑 v1 确认黑线识别和 error 可用;再跑 v2 验证路口判断;再准备数字模板跑 v4;最后用 v5 统一接入 STM32。v3 的目标识别和滤波更适合作为后续扩展,用于追球、找色块、动态目标或对准投放点。

如果一句话总结这个专题,就是:OpenMV 在送药小车里不是主控,而是一个可复用的视觉 API 层;它把摄像头看到的路线、路口、数字和目标转换成稳定字段,STM32 再根据这些字段完成真正的运动控制和任务决策。

GitHub 仓库:flyyansii/openmv-medicine-car-prep

提交:1317232 init openmv medicine car prep

v1 循迹脚本:medicine_car_vision_v1.py

v2 路口识别脚本:medicine_car_vision_v2_route.py

v3 目标识别脚本:medicine_car_vision_v3_target.py

v4 数字模板匹配脚本:medicine_car_vision_v4_digit_template.py

v5 统一协议脚本:medicine_car_vision_v5_unified.py