驴友花雕 发表于 2025-10-19 10:46:12

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器



1、测试实验硬件连接
将HukyLens 2 连接到Arduino主板对应的I2C引脚,使用电源线连接Arduino Uno与电脑。额外供电提示:Arduino Uno的I2C引脚输出的电压不足以支持HUSKYLENS 2正常工作,当HUSKYLENS 2接在Arduino Uno上时须有额外数据线连接HUSKYLENS 2的Type-C接口与电源,为HUSKYLENS 2进行额外供电。接线图可参考下图。



2、设置测试实验平台
打开 Mind+ 编程软件,选择主控板 Arduino,加载HUSKYLENS 2 库




驴友花雕 发表于 2025-10-19 10:49:18

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器

3、颜色识别(Color Recognition)是一种计算机视觉与感知技术,其核心目标是:通过摄像头、图像传感器或算法,自动检测并判断物体或图像中的颜色信息。颜色识别是视觉智能的重要基础能力,它让设备具备“看懂颜色”的能力,是智能识别、自动控制、人机交互等系统中的基础功能之一。

(1)颜色识别的基本定义
颜色识别是指:
将图像中的像素值转换为颜色模型中的数值(如 RGB、HSV、Lab),并根据设定规则或模型判断颜色类别或属性。
它不仅识别“是什么颜色”,还可以分析颜色的分布、比例、变化趋势等。

(2)常见颜色模型



(3)颜色识别的技术流程
图像采集:通过摄像头或图像文件获取视觉数据。
颜色空间转换:将图像从 RGB 转换为 HSV 或 Lab 等更适合识别的模型。
区域提取:识别目标区域或物体轮廓。
颜色分析:统计像素值并判断颜色类别或比例。
结果输出:返回识别结果,如“红色球”、“绿色标签”、“蓝色背景”等。

(4)应用场景举例
教育实验:识别颜色球、颜色卡片进行互动教学
手机相机美颜或滤镜识别肤色与背景色
工业检测:识别产品颜色是否合格
智能交通:识别红绿灯颜色进行自动驾驶控制
零售系统:识别商品包装颜色进行分类
机器人视觉:识别颜色目标进行抓取或导航

(5)技术优势与挑战



(6)颜色识别场景



驴友花雕 发表于 2025-10-19 10:52:02

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器

4、执行器(Actuator)是一种将控制信号转换为物理动作的装置,是自动化系统和机器人中的关键部件。它的作用是根据控制系统的指令,驱动机械结构完成特定动作,如移动、旋转、推动、夹取等。

(1) 执行器的核心定义
执行器是将电信号、液压信号或气动信号转化为机械运动的装置,是“感知—决策—执行”链条中的最后一环。

(2)常见执行器类型



(3)执行器在系统中的作用
动作执行:如机械臂的关节旋转、轮式小车的驱动、夹爪的开合。
反馈闭环:配合传感器形成闭环控制系统,实现精准定位与动态调整。
能量转换:将控制系统的能量信号(电、气、液)转化为机械能。
接口桥梁:连接控制系统与物理世界,是“虚拟指令”落地的关键。

(4)应用场景举例
工业自动化:机器人焊接、搬运、装配
智能家居:窗帘开合、电动门锁、自动调光
航空航天:飞行器舵面控制、姿态调整
医疗设备:手术机器人、康复辅助机械
仿生机器人:模仿肌肉运动的柔性执行器

(5)使用执行器需注意事项
负载匹配:选择合适的执行器类型与规格,避免过载或性能不足
控制精度:需配合编码器、传感器实现闭环控制,提升定位与响应能力
响应速度:不同驱动方式响应时间不同,需根据任务需求选型
能耗与散热:电动执行器需考虑功率与热管理
安全机制:设置限位、急停、过载保护,防止误动作或损坏

(6)为简化测试实验,这里使用简单的执行器LED模块




驴友花雕 发表于 2025-10-19 10:54:02

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器


5、实际测试的几个范本




6、测试实验代码

/*【花雕动手做】AI 视觉传感器 HUSKYLENS 2 之识别颜色来控制执行器模块
* 使用平台:MindPlus
* 主控板:Arduino Uno
* 功能说明:本程序使用 HUSKYLENS 2 AI 视觉传感器识别画面中的颜色块,
* 根据不同颜色块的 ID 控制执行器(此处为 LED 灯)实现快闪、慢闪或熄灭效果。
*/

#include "DFRobot_HuskylensV2.h"// 引入 HUSKYLENS 2 的驱动库,用于控制 AI 视觉模块

HuskylensV2 huskylens;// 创建 HUSKYLENS 设备对象,供后续调用识别与数据获取功能

// 初始化函数
void setup() {
Serial.begin(9600);       // 初始化串口通信,波特率设置为 9600,用于数据输出到串口监视器
Wire.begin();             // 初始化 I2C 通信,用于与 HUSKYLENS 模块连接
while (!huskylens.begin(Wire)) {// 持续尝试连接 HUSKYLENS,直到连接成功
    delay(100);             // 每次尝试之间延迟 100 毫秒
}
Serial.println("HUSKYLENS 2 启动成功");      // 输出初始化成功提示信息
Serial.println("识别颜色来控制执行器模块");    // 输出功能说明
pinMode(13, OUTPUT);      // 设置数字引脚 13 为输出模式,用于控制 LED 灯
}

// 主循环函数
void loop() {
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);// 请求 HUSKYLENS 执行颜色识别算法,处理当前画面
if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)) {// 判断是否有识别结果可用
    Serial.println("画面中的颜色块总数为:" +
      String(huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION)));// 输出当前识别到的颜色块数量

    // 如果识别到 ID 为 1 的颜色块,执行 LED 快闪
    if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) != NULL) {
      Serial.println(RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1), Result, name) + "LED快闪");
      digitalWrite(13, LOW);   // 熄灭 LED
      delay(200);            // 延迟 200 毫秒
      digitalWrite(13, HIGH);// 点亮 LED
      delay(200);            // 延迟 200 毫秒
    }

    // 如果识别到 ID 为 3 的颜色块,执行 LED 慢闪
    if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 3) != NULL) {
      Serial.println(RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 3), Result, name) + "LED慢闪");
      digitalWrite(13, HIGH);// 点亮 LED
      delay(800);            // 延迟 800 毫秒
      digitalWrite(13, LOW);   // 熄灭 LED
      delay(800);            // 延迟 800 毫秒
    }

    // 如果识别到 ID 为 4 的颜色块,关闭 LED 灯
    if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 4) != NULL) {
      Serial.println(RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 2), Result, name) + "LED灯灭");
      digitalWrite(13, LOW);   // 熄灭 LED
    }
}

delay(500);// 每次识别后延迟 500 毫秒,控制识别频率,避免过于频繁地读取数据
}


驴友花雕 发表于 2025-10-19 11:00:10

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器

7、实际测试的代码解读

程序目标概述
该程序使用 HUSKYLENS 2 AI 视觉传感器识别画面中的颜色块,并根据不同颜色块的 ID 控制 Arduino 引脚上的 LED 灯,实现快闪、慢闪或熄灭的效果。它是一个典型的“视觉识别 + 执行器控制”应用示例。逐步代码解读:

(1)引入库与创建对象
cpp
#include "DFRobot_HuskylensV2.h"

HuskylensV2 huskylens;
引入 HUSKYLENS 官方库,提供与设备通信的函数接口。
创建 huskylens 对象,用于调用识别算法和获取识别结果。

(2)初始化函数 setup()
cpp
void setup() {

Serial.begin(9600);

Wire.begin();

while (!huskylens.begin(Wire)) {

    delay(100);

}

Serial.println("HUSKYLENS 2 启动成功");

Serial.println("识别颜色来控制执行器模块");

pinMode(13, OUTPUT);

}
初始化串口通信(用于数据输出)和 I2C 通信(用于与 HUSKYLENS 连接)。
持续尝试连接 HUSKYLENS,直到连接成功。
设置数字引脚 13 为输出模式,用于控制 LED 灯。

(3)主循环函数 loop()
cpp
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
请求 HUSKYLENS 执行颜色识别算法,处理当前画面。

cpp
if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)) {
判断是否有识别结果可用,避免空数据处理。

(4)输出颜色块总数
cpp
Serial.println("画面中的颜色块总数为:" + String(huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION)));
获取当前画面中识别到的颜色块数量,并通过串口输出。

(5)根据颜色块 ID 控制 LED 灯
ID = 1:LED 快闪
cpp
if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) != NULL) {

Serial.println(... + "LED快闪");

digitalWrite(13, LOW);

delay(200);

digitalWrite(13, HIGH);

delay(200);

}
快速闪烁 LED 灯,每 200 毫秒切换一次状态。

ID = 3:LED 慢闪
cpp
if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 3) != NULL) {

Serial.println(... + "LED慢闪");

digitalWrite(13, HIGH);

delay(800);

digitalWrite(13, LOW);

delay(800);

}
慢速闪烁 LED 灯,每 800 毫秒切换一次状态。

ID = 2:LED 熄灭
cpp
if (huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 2) != NULL) {

Serial.println(...ID=2内容... + "LED灯灭");

digitalWrite(13, LOW);

}

(6)控制识别频率
cpp
delay(500);
每次识别后延迟 500 毫秒,避免过于频繁地读取数据。

驴友花雕 发表于 2025-10-19 11:03:00

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器

8、测试实验MInd+图形编程



9、实验串口返回情况




驴友花雕 发表于 2025-10-19 11:04:52

【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器

10、实验场景图动态图















页: [1]
查看完整版本: 【花雕动手做】AI视觉二哈识图2之识别颜色控制执行器