2026电赛H题 钢球视觉识别方案 钢球数据集 车载平衡滚球
⚡ 2026 电赛 H 题 · 车载平衡滚球 · 钢球视觉识别方案(K230 通用版)
标注数据集 + 训练好的 YOLO 模型(kmodel)+ K230 端部署代码 + 图传代码 + 教程文档
亚博智能 / 庐山派(K230/K230D)/ 01 科技 / 创乐博 / 正点原子 全系兼容
H 题的本质是"循迹小车 + PPR 水管摆杆 + 钢球稳定 + 图传监视"的多自由度运动控制题,其中钢球位置视觉识别是整套 PID 控制系统的"眼睛"——识别精度与帧率直接决定摆球能否稳住。本方案帮你把最耗时的"数据采集 → 标注 → 训练 → 转 kmodel → 板端部署"全链路跑通,到手即训、到手即跑。
🎯 方案交付清单
序号 交付内容 说明
✅ 1 标注好的钢球识别数据集 YOLO 格式 txt 标签,直接可用于训练
✅ 2 训练好的 YOLO 模型(.kmodel) K230 的 KPU 专用格式,板子上电即跑
✅ 3 K230 端部署代码 CanMV MicroPython 脚本,参考嘉楠官方 YOLO 示例架构
✅ 4 图传模块代码(发送端 + 接收端) 满足 H 题"全程图传监视"的赛题硬要求
✅ 5 部署教程文档 从烧固件到上板运行,图文步骤,不懂 YOLO 也能上手
🏗️ 系统架构(K230 作为视觉协处理器)
摄像头(OV5640/OV2640)↓ MIPI[K230 开发板]├─ 运行 YOLO 推理,识别钢球位置 ├─ 像素坐标 → 实际刻度(cm)映射 ├─ UART(TTL3.3V)──→ STM32 主控(位置环 PID 输入) └─ WiFi/图传模块 ──→ 场外 PAD/笔记本 实时显示+录像
💡 参考 2026 H 题方案:K230 只做感知层,不参与闭环控制,通过串口以 ≥50Hz 帧率把钢球刻度值下发给 STM32,STM32 再做三级串级 PID。
推荐串口协议(极简可靠,比赛零 bug)
电平:3.3V TTL,TX↔RX 交叉对接
波特率:115200 8N1
数据帧:#数值\r\n
示例:
#0.00\r\n // 钢球居中零点
#-3.20\r\n // 向左偏移 3.2cm
#2.75\r\n // 向右偏移 2.75cm
STM32 在串口中断中缓存数据,主循环解析浮点值送入位置环 PID。
✨ 方案核心优势
🎯 省时间 · 到手即用
H 题赛程 4 天 3 夜,视觉这块从零开始至少耗费 1.5 天。本方案数据、模型、代码、教程一步到位,队伍可以把时间集中在 PID 调参和机械结构优化上——这才是拿高分的关键。
🔧 多板兼容 · 无需改代码
已验证兼容主流 K230 开发板:
开发板 兼容性说明
亚博智能 K230 已实测跑通 YOLOv8→ONNX→kmodel 全链路
立创·庐山派 K230 / Lite-K230D CanMV 固件原生支持,注意显示模式从 HDMI 改为 LCD
01 科技 K230 标准 CanMV 架构,直接部署
创乐博 K230 标准 CanMV 架构,直接部署
正点原子 K230 标准 CanMV 架构,直接部署
⚠️ 庐山派用户注意:嘉楠官方部分示例默认 HDMI 显示,庐山派无 HDMI 输出,运行前需把 display_mode 从 “hdmi” 改为 “lcd”,否则报 RuntimeError: init panel failed。
🎯 识别稳定 · 为 H 题优化
• 模型输入尺寸与训练时严格一致(推荐 320×320 或 640×640,K230 官方转换链路要求 imgsz 必须匹配)
• 钢球直径 1cm,在画面中约 30~40 像素,采用亚像素重心定位提升精度至 ±1mm
• 推理帧率 ≥ 50Hz,满足位置环 200Hz 控制的需求
📦 kmodel 转换已帮你做完
K230 部署最大的"隐藏 Boss"就是 ONNX→kmodel 转换:nncase 版本匹配、校准集选择、量化参数……很多队伍模型训完却卡在转换这一步。本方案直接交付转换好的 kmodel,跳过这个坑。
官方转换链路参考:PyTorch(.pt) → ONNX → nncase 编译 → K230 可加载的 .kmodel
🎯 适合人群
• 🏃 备赛时间紧张的队伍:不想从头搞视觉,需要稳定方案确保拿分
• 🤔 不熟悉 YOLO 训练流程:环境配置、模型转换一头雾水
• 🎯 冲一/二等奖的队伍:把视觉这块标准化,精力集中在 PID 与控制策略
• 🔧 首次接触 K230 的队伍:教程从烧固件讲起,零基础可上手
📋 H 题拿分路径与本方案的对应
任务项 分值 本方案覆盖情况
第 1 项:图传 6 分 ✅ 图传代码+部署教程,硬件安装即拿分
第 3 项:静态摆球 13 分 ✅ 钢球识别+串口下发,调 PD 即可稳球
第 4 项:行至 B 点稳球 20 分 ✅ 视觉反馈+循迹 PID 联动基础
第 5 项:整圈稳中心 20 分 ✅ 高帧率识别支撑高速动态场景
第 6 项:任意位稳球 20 分 ✅ 刻度映射精度 ±1mm,支持任意目标位置
据 H 题攻略,“保底盘”+主力区合计约 95 分可得,视觉稳定识别是这一切的前提。
🔧 快速上手(K230 端核心代码框架)
from libs.PipeLine import PipeLine, ScopedTiming
from libs.YOLO import YOLOv5
import os, sys, gc
ifname== “main”:
# 参考嘉楠官方 K230 YOLO 示例架构2,5
rgb888p_size = [320, 320]
display_size = [640, 480]
kmodel_path = “/data/ball_detection.kmodel”
labels = [“steel_ball”]
confidence_threshold = 0.5
model_input_size = [320, 320]
pl = PipeLine(rgb888p_size=rgb888p_size, display_size=display_size, display_mode="lcd") pl.create() display_size = pl.get_display_size() yolo = YOLOv5(task_type="detect", mode="video", kmodel_path=kmodel_path, labels=labels, rgb888p_size=rgb888p_size, model_input_size=model_input_size, display_size=display_size, conf_thresh=confidence_threshold, nms_thresh=0.45, max_boxes_num=50) yolo.config_preprocess() while True: with ScopedTiming("total", 1): img = pl.get_frame() res = yolo.run(img) # === 此处插入:钢球像素坐标 → 实际刻度(cm) 映射 === # === 此处插入:UART 串口发送 #数值\r\n 给 STM32 === pl.show_image() gc.collect() yolo.de_init() pl.destroy()📖 完整代码、校准参数、串口协议实现、图传发送/接收端代码,详见交付的教程文档。
🏷️ 关键词
#2026电赛 #H题 #车载平衡滚球 #钢球识别 #K230 #庐山派 #YOLO #kmodel #目标检测 #图传 #STM32 #PID控制 #智慧小车
⚠️ 本方案为 H 题备赛辅助资料,赛题具体要求以全国大学生电子设计竞赛组委会发布的官方赛题为准。
