回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕动手做】AI视觉传感器HUSKYLENS2之识别人体姿态输出数据并控制LED模块 简单

头像 驴友花雕 2025.10.24 7 0

13.jpg

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

 

000- (2).jpg

 

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

 

000- (1).jpg
 

3、姿态识别(Pose Estimation)是一种计算机视觉技术,其核心目标是:通过摄像头或图像分析系统,自动检测人体或物体的关键点位置,并判断其空间姿态、动作或结构状态。姿态识别是让机器“理解动作语言”的关键技术。它让设备“看懂动作”,广泛应用于智能健身、动作分析、人机交互、机器人控制、AR/VR等领域。

(1)姿态识别的基本定义
姿态识别是指:
识别图像或视频中人体(或物体)的关键点位置,如关节、骨骼、角度等,并推断其动作或姿态。
它不仅识别“是谁”,更关注“在做什么”。

(2)人体姿态识别的关键点示例

 

01.jpg


(3)姿态识别的技术流程
图像采集:通过摄像头或视频获取动作画面。
目标检测:识别画面中的人体或物体区域。
关键点定位:标出各个关节或结构点的位置坐标。
姿态建模:根据关键点关系构建骨架或动作模型。
动作分析:判断当前姿态属于哪种动作或状态。

(4)应用场景举例
智能健身:识别用户动作是否标准,提供纠正建议
游戏互动:通过身体动作控制角色或界面
教育实验:识别学生手势、站姿、运动状态
行为分析:识别走路、跑步、跌倒等行为
机器人控制:通过人类姿态指令控制机器人动作
AR/VR:实现沉浸式体感交互体验

(5)姿态识别的类型

 

02.jpg
 

4、人体姿态图

 

0-1.png

 

5、相关场景

 

000-1.gif000-2.gif000-7.gif000-8.gif000-9.gif00 (1).gif
 

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

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

(2)常见执行器类型

 

01.jpg


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

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

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

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

 

02.jpg
 

7、特别收集了几个测试样本

 

30.gif
31.gif
32.gif
33.gif
35.gif
37.gif
42.gif
43.gif

8、测试实验代码

 

 

代码
/*【花雕动手做】AI视觉传感器HUSKYLENS2之识别人体姿态输出数据并控制LED模块
 * 使用平台:MindPlus
 * 主控板:Arduino Uno
 * 功能说明:
 * 本程序使用 HUSKYLENS 2 AI 视觉传感器识别画面中的人体姿态,
 * 并输出识别到的相关数据(ID、尺寸、中心坐标),
 * 根据特定人体 ID 控制 LED 灯的闪烁或关闭,实现姿态驱动的智能交互控制。
 */

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

// 创建 HUSKYLENS 设备对象
HuskylensV2 huskylens;

void setup() {
  Serial.begin(9600);       // 初始化串口通信,波特率为 9600,用于调试输出
  Wire.begin();             // 初始化 I2C 通信,用于与 HUSKYLENS 模块连接

  // 持续尝试连接 HUSKYLENS,直到连接成功
  while (!huskylens.begin(Wire)) {
    delay(100);             // 每次尝试之间延迟 100 毫秒
  }

  // 输出初始化成功提示信息
  Serial.println("HUSKYLENS 2 启动成功");
  Serial.println("识别人体姿态来控制执行器模块");

  // 设置数字引脚 13 为输出模式,用于控制 LED 灯
  pinMode(13, OUTPUT);
}

void loop() {
  // 请求 HUSKYLENS 执行人体姿态识别算法,处理当前画面
  huskylens.getResult(ALGORITHM_POSE_RECOGNITION);

  // 判断是否有识别结果可用
  if (huskylens.available(ALGORITHM_POSE_RECOGNITION)) {
    // 输出当前画面中识别到的人体数量
    Serial.println("画面中的人体总数为:" + String(huskylens.getCachedResultNum(ALGORITHM_POSE_RECOGNITION)));

    // 输出中心人体的详细信息(ID、宽度、高度、中心坐标)
    Serial.println("人体ID:" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, ID)));
    Serial.println("人体宽:" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, width)));
    Serial.println("人体高:" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, height)));
    Serial.println("人体中心点X坐标:" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, xCenter)));
    Serial.println("人体中心点Y坐标:" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, yCenter)));
  }

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

  delay(1000);  // 快闪后延迟 1 秒,避免连续触发

  // 如果识别到 ID 为 0 的人体,关闭 LED 灯
  if (huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 0) != NULL) {
    Serial.println(RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 0), Result, name) + "LED灯灭");
    digitalWrite(13, LOW);   // 熄灭 LED
    delay(1000);             // 延迟 1 秒
  }

  delay(3000);  // 每次识别后延迟 3 秒,控制识别频率
}

9、实际测试的代码解读

该程序使用 HUSKYLENS 2 AI 视觉传感器识别画面中的人体姿态,并输出识别到的相关数据(如 ID、尺寸、中心坐标)。根据识别到的特定人体 ID,控制 LED 灯的闪烁或关闭,实现基于姿态识别的智能交互控制。

模块与硬件说明
HUSKYLENS 2:AI 视觉传感器,支持人体姿态识别、物体识别、人脸识别等功能。
Arduino Uno:主控板,用于处理识别结果并控制执行器。
LED 灯(引脚 13):作为执行器,根据识别结果进行闪烁或关闭。

(1)初始化部分 setup()
cpp
Serial.begin(9600);       // 初始化串口通信,波特率为 9600
Wire.begin();             // 初始化 I2C 通信,用于与 HUSKYLENS 模块连接
while (!huskylens.begin(Wire)) {
 delay(100);             // 持续尝试连接 HUSKYLENS,直到连接成功
}
Serial.println("HUSKYLENS 2 启动成功");
Serial.println("识别人体姿态来控制执行器模块");
pinMode(13, OUTPUT);      // 设置数字引脚 13 为输出模式,用于控制 LED 灯
建立通信并初始化 HUSKYLENS。
设置 LED 控制引脚。

(2)主循环部分 loop()
a. 获取人体姿态识别结果
cpp
huskylens.getResult(ALGORITHM_POSE_RECOGNITION);
请求 HUSKYLENS 执行人体姿态识别算法。

cpp
if (huskylens.available(ALGORITHM_POSE_RECOGNITION)) {
判断是否有识别结果。

b. 输出人体姿态数据
cpp
Serial.println("画面中的人体总数为:" + String(huskylens.getCachedResultNum(ALGORITHM_POSE_RECOGNITION)));
Serial.println("人体ID:" + String(...));
Serial.println("人体宽:" + String(...));
Serial.println("人体高:" + String(...));
Serial.println("人体中心点X坐标:" + String(...));
Serial.println("人体中心点Y坐标:" + String(...));
输出当前画面中识别到的人体数量。

输出中心人体的 ID、尺寸、中心坐标等详细信息。

c. 控制 LED 灯逻辑
ID = 1:LED 快闪
cpp
if (huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 1) != NULL) {
 Serial.println(... + "LED快闪");
 digitalWrite(13, LOW);
 delay(100);
 digitalWrite(13, HIGH);
 delay(200);
}
快速闪烁 LED 灯,表示识别到 ID 为 1 的人体。

ID = 0:LED 熄灭
cpp
if (huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 0) != NULL) {
 Serial.println(... + "LED灯灭");
 digitalWrite(13, LOW);
 delay(1000);
}
熄灭 LED 灯,表示识别到 ID 为 0 的人体。

(3)节奏控制
cpp
delay(1000);  // 快闪后延迟 1 秒
delay(3000);  // 每次识别后延迟 3 秒,避免频繁刷新
控制识别节奏,适合稳定演示。

 

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

 

01.jpg

 

11、实验串口返回情况

 

02.jpg

12、实验场景图  动态图

 

03 (1).jpg
03 (2).jpg
03 (3).jpg
03 (4).jpg
03 (5).jpg
03 (6).jpg
03 (7).jpg
00231--.gif

评论

user-avatar
icon 他的勋章
    展开更多