RobotArm OpenMV 机械臂 — 垃圾分类教程
视频教程参考:星瞳科技 OpenMV - RobotArm机械臂垃圾分类教程!
1. 简介
本教程演示如何使用 OpenMV 摄像头配合机械臂,实现垃圾的自动分类。
项目代码库:OpenMV-Robot-Arm-Project-Garbage Classification
2. 例程文件说明
例程包含如下文件:
- model.tflite 和 labels.txt:对垃圾进行识别的神经网络分类模型;
- move.py:机械臂移动代码,包含各坐标信息;
- main.py:垃圾分类例程的主程序;
将所有文件复制到 SD 卡目录中,运行 main.py。
3. 使用加长夹具
- 此例程使用加长夹具:

- 实例中主要分类以下物品:

示例物品:玻璃瓶(可回收)、废旧电池(有害)、烟蒂(其他)、柠檬(厨余),用于演示垃圾分类任务
- 垃圾桶种类:

垃圾桶:可回收、有害、其他、厨余(四类)
- 将机械臂放置于A4纸大方框中:

- 垃圾桶和托盘摆放,托盘为三子棋棋盘的反面:

4、OpenMV 代码调试
运行main.py,校准检测框,运行此例程时,会出现检测框偏移的现象:

调整参数:
ShiftX = 40 #调整检测框在X方向上的偏移
ShiftY = 0 #调整检测框在Y方向上的偏移
调整后:

5、垃圾分类
检测框调整完成后,运行代码;
将垃圾放置于黑色托盘上;
机械臂将自动拾取垃圾,将垃圾放置于对应的垃圾桶内;
流程解析:

6、核心部分讲解及问题解决:
- 采用神经网络识别的方案:
垃圾分类使用图像分类模型,模型识别流程可见三子棋第7.1点。
- 识别区域:
和三子棋采取的方式一样,垃圾分类也划分出一个ROI,模型针对ROI内的区域进行精确识别,可以有效放置外界干扰
识别区域出现偏移时:
# 识别区域位移(相对于屏幕中心的偏移)
ShiftX = 40
ShiftY = 0
# 模型输入尺寸(宽、高)——与训练时一致
w = 128
h = 128
# 计算感兴趣区域(ROI):在 320x240 图像上的中心区域并加上偏移
roi = (int((320 - w) / 2) + ShiftX, int((240 - h) / 2) + ShiftY, w, h)
调整ShiftX,ShiftY即可控制检测框的位置;W、H则是检测框的宽和高。