公司动态

2.0 从零到国赛:一个工训赛智能垃圾桶项目的完整技术演进与实战复盘

📅 2026/7/16 1:45:38
2.0 从零到国赛:一个工训赛智能垃圾桶项目的完整技术演进与实战复盘
1. 从语音识别到图像识别的技术转型最初我们团队考虑用语音识别方案参加互联网比赛主要因为当时觉得图像识别技术门槛太高。语音方案虽然实现了基础功能但实际使用中存在明显缺陷环境噪音干扰大、方言识别率低、需要用户主动交互。这个伪智能版本最终只拿到省赛铜奖却让我们意识到真正的智能设备应该具备主动感知能力。转折点出现在接触全国大学生工程实践与创新能力大赛工训赛后。比赛要求设备能自动识别并分类12种常见生活垃圾这对识别精度和响应速度都提出了更高要求。我们测试了两种主流方案OpenMV方案在树莓派上运行OpenCV实测帧率仅3-5FPS且CPU占用率常达90%以上K210方案使用Sipeed Maix开发板专用神经网络加速器使帧率提升到20FPS以上# OpenCV基础识别代码示例实测性能较差 import cv2 cap cv2.VideoCapture(0) while True: ret, frame cap.read() # 图像处理流程会严重拖慢帧率 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # ...后续处理代码最终选择K210的关键因素性价比突出当时售价仅199元比树莓派Intel神经计算棒方案便宜60%开发便捷支持MicroPython编程比传统嵌入式开发更友好功耗优势整机功耗控制在5W以内适合移动场景2. K210开发板的实战应用与优化MaixPy开发环境给我们带来惊喜的同时也暴露出硬件限制。在实现视频播放图像识别并行任务时频繁出现内存不足报错MemoryError。通过三个关键优化最终稳定了系统2.1 内存管理技巧使用gc.collect()手动触发垃圾回收将模型从默认的KFPKG格式转换为更节省内存的KMODEL格式预处理阶段将图像分辨率从320x240降至160x120// 内存优化示例MaixPy import gc from maix import camera, display def optimize_memory(): gc.collect() # 手动回收内存 img camera.capture() img.resize(160, 120) # 降分辨率 # ...图像处理代码2.2 模型训练注意事项数据集要包含各种光照条件下的样本标注时采用YOLOv3格式而非VOC格式节省30%存储空间使用数据增强技术旋转/加噪/模糊提升泛化能力实际踩坑最初用500张图片训练模型测试准确率仅68%。扩充到2000张并优化标注后提升到89%3. 下位机架构设计与通信协议当识别种类增加到12类时K210单独处理所有任务显得力不从心。我们设计了下位机系统架构[图像识别层] K210 │ (串口协议) ▼ [控制决策层] 树莓派4B │ (GPIO/PWM) ▼ [执行机构层] 舵机直流电机3.1 串口通信优化最初使用简单的ASCII协议如发送A代表厨余垃圾遇到数据丢失问题。改进方案采用二进制协议帧头(0xAA)数据类型(1byte)数据长度(1byte)校验和(1byte)添加重传机制超过200ms未收到应答自动重发设置双缓冲接收区// Arduino串口通信示例 void setup() { Serial.begin(115200); } void loop() { if(Serial.available() 4){ if(Serial.read() 0xAA){ byte type Serial.read(); byte len Serial.read(); byte checksum Serial.read(); // ...校验处理逻辑 } } }4. 冲击国赛的技术升级为准备国赛我们将系统升级为Jetson NanoYOLOv5方案主要改进包括4.1 硬件配置对比组件省赛方案国赛方案提升幅度主控K210Jetson Nano 4GB5倍算法YOLOv3-tinyYOLOv5s准确率15%执行机构普通舵机6自由度机械臂抓取精度2mm摄像头OV2640(200万)IMX219(800万)分辨率4倍4.2 机械结构改进增加云台机构使摄像头可180°旋转扫描设计滑轨系统让垃圾平稳进入识别区封闭式结构减少环境光干扰4.3 数据集优化技巧使用LabelImg工具标注时对细小物体如牙签采用放大标注法对反光物体易拉罐增加偏振镜拍摄样本最终构建6500张标注图片的训练集5. 比赛现场应对策略省赛现场遇到三个意外状况及解决方案光照突变问题场馆顶灯突然开启导致识别异常临时解决方案在代码中增加白平衡强制校准# Jetson Nano上的应急处理代码 camera.set_controls(hflipTrue, vflipTrue, awb_modeincandescent)网络延迟需要上传数据但现场WiFi不稳定改用4G热点备用方案实现数据本地缓存和断点续传机械臂抖动因供电不足导致末端执行器晃动临时增加10000μF电容稳压降低PWM频率从50Hz到30Hz6. 团队协作经验分享作为软件负责人总结出三点协作要领版本控制规范硬件设计用Git管理STP文件代码仓库采用分支策略master - dev - feature/xxx每次提交必须包含测试视频文档同步机制使用腾讯文档实时更新进展硬件接口变更必须更新《引脚分配表》关键算法要有流程图说明测试流程优化建立自动化测试脚本如python test_accuracy.py对核心功能进行压力测试连续运行8小时制作故障树分析图(FTA)预判风险点这个项目从最初简陋的语音方案到最终完整的智能系统技术栈覆盖嵌入式开发、机器学习、机械设计等多个领域。最大的收获不是奖项而是学会如何将一个想法通过工程化手段变为现实。建议后来者重点关注三个维度技术深度吃透核心算法、系统思维各模块协同、工程素养文档与测试。