Grove Vision V2摄像头模块

功能简介

Grove Vision V2是一款基于 MCU 的视觉 AI 模块,由 Arm Cortex-M55 和 Ethos-U55 提供支持。它支持 TensorFlow 和 PyTorch 框架,并与 Arduino IDE 兼容。借助 SenseCraft AI 算法平台,无需编码即可将训练好的 ML 模型部署到传感器。它具有标准 CSI 接口、板载数字麦克风和 SD 卡插槽,非常适合各种嵌入式 AI 视觉项目。

  • 强大的 AI 处理能力:采用 WiseEye2 HX6538 处理器,配备双核 Arm Cortex-M55 和集成 Arm Ethos-U55 神经网络单元。

  • 多功能 AI 模型支持:轻松部署 SenseCraft AI 的现成或自定义 AI 模型,包括 Mobilenet V1、V2、Efficientnet-lite、Yolo v5 和 v8。支持 TensorFlow 和 PyTorch 框架。

  • 丰富的外设:包括PDM麦克风、SD卡槽、Type-C、Grove接口等外设。

  • 高兼容性:兼容XIAO系列、Arduino、Raspberry Pi、ESP32开发板,方便进一步开发。

  • 完全开源:所有代码、设计文件和原理图均可修改和使用。

【配模块带外壳图片】

硬件设置

【配硬件接线图,及端口接线示意图】

具体使用时将连接摄像头的一端固定在机器人的头部(比如含在Bittle的嘴中)。

软件设置

安装相关的Arduino库文件

您需要引入相关库并执行以下操作。 从 GitHub 存储库下载最新版本的 Seeed_Arduino_SSCMA 库及ArduinoJSON库。 通过选择 Sketch > Include Library > Add .ZIP Library 并选择下载的文件,将该库添加到 Arduino IDE 中。 或者您可以在Arduino IDE的库管理栏目中直接搜索并安装最新版的Seeed_Arduino_SSCMA,ArduinoJSON库文件。如下图所示:

上传并运行OpenCatEsp32示例程序

  1. 在camera.h 中注释此宏定义

    #define MU_CAMERA

    并取消注释下行宏定义

    #define GROVE_VISION_AI_V2

    如下图所示:

  2. 将程序上传到机器人主板BiBoard中

  3. 打开Arduino IDE串口监视器,使用串口命令“XC”按回车键, 将机器人工作模式切换是摄像头模式,如下图所示:

【配示例功能演示视频】

验证模块功能(可选)

下面是一个Seeed_Arduino_SSCMA库中的示例程序(inference.ino),您可以将其上传到机器人主板BiBoard中,测试Grove Vision AI V2 的功能是否正常。您也可以参考该函数将模型输出结果用于其他功能:

#include <Seeed_Arduino_SSCMA.h>

SSCMA AI;

void setup()
{
    AI.begin();
    Serial.begin(9600);
}

void loop()
{
    if (!AI.invoke())
    {
        Serial.println("invoke success");
        Serial.print("perf: prepocess=");
        Serial.print(AI.perf().prepocess);
        Serial.print(", inference=");
        Serial.print(AI.perf().inference);
        Serial.print(", postpocess=");
        Serial.println(AI.perf().postprocess);

        for (int i = 0; i < AI.boxes().size(); i++)
        {
            Serial.print("Box[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.boxes()[i].target);
            Serial.print(", score=");
            Serial.print(AI.boxes()[i].score);
            Serial.print(", x=");
            Serial.print(AI.boxes()[i].x);
            Serial.print(", y=");
            Serial.print(AI.boxes()[i].y);
            Serial.print(", w=");
            Serial.print(AI.boxes()[i].w);
            Serial.print(", h=");
            Serial.println(AI.boxes()[i].h);
        }
        for (int i = 0; i < AI.classes().size(); i++)
        {
            Serial.print("Class[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.classes()[i].target);
            Serial.print(", score=");
            Serial.println(AI.classes()[i].score);
        }
        for (int i = 0; i < AI.points().size(); i++)
        {
            Serial.print("Point[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.points()[i].target);
            Serial.print(", score=");
            Serial.print(AI.points()[i].score);
            Serial.print(", x=");
            Serial.print(AI.points()[i].x);
            Serial.print(", y=");
            Serial.println(AI.points()[i].y);
        }
    }
}

效果如图:

Last updated