RobotArm OpenMV 机械臂 — 垃圾分类教程

视频教程参考:星瞳科技 OpenMV - RobotArm机械臂垃圾分类教程!

1. 简介

本教程演示如何使用 OpenMV 摄像头配合机械臂,实现垃圾的自动分类。

项目代码库:OpenMV-Robot-Arm-Project-Garbage Classification

2. 例程文件说明

例程包含如下文件:

  • model.tflitelabels.txt:对垃圾进行识别的神经网络分类模型;
  • move.py:机械臂移动代码,包含各坐标信息;
  • main.py:垃圾分类例程的主程序;

将所有文件复制到 SD 卡目录中,运行 main.py

3. 使用加长夹具

  1. 此例程使用加长夹具:

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

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

  1. 垃圾桶种类:

垃圾桶:可回收、有害、其他、厨余(四类)

  1. 将机械臂放置于A4纸大方框中:

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

4、OpenMV 代码调试

运行main.py,校准检测框,运行此例程时,会出现检测框偏移的现象:

调整参数:

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

调整后:

5、垃圾分类

检测框调整完成后,运行代码;

将垃圾放置于黑色托盘上;

机械臂将自动拾取垃圾,将垃圾放置于对应的垃圾桶内;

流程解析:

6、核心部分讲解及问题解决:

  1. 采用神经网络识别的方案:

垃圾分类使用图像分类模型,模型识别流程可见三子棋第7.1点。

  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则是检测框的宽和高。

results matching ""

    No results matching ""