Session 645 minutes

第6课:全身姿态跟踪(Human Body / Pose Tracking)

Learning objective: 识别 17 个身体关键点:肩膀、手肘、手腕、臀部、膝盖和脚踝。

Theory & practice

🤸 第6课:姿态跟踪——会模仿动作的机器人

🤖 能看懂身体动作的 AI

上一课 AI 识别了人脸。本课我们利用 姿态估计(Pose Estimation) 技术,让电脑识别整个身体的姿势。

系统会找出身体上的关键点,再根据它们的坐标判断你是站着、侧身还是举起手臂。

任务: 让角色或机器人做出与用户姿势相对应的动作。

🎯 学习目标

完成本课后,你将能够:

  • 理解什么是身体关键点。
  • 在 PictoBlox 中开启姿态识别。
  • 读取肩膀、手肘和手腕的坐标。
  • 识别举手动作。
  • 用身体动作控制角色。

1. 什么是姿态估计?

姿态估计是让 AI 在图像或视频中找到身体各部位位置的技术。

PoseNet 系统把身体分成 17 个关键点(Keypoints):

分组关键点
面部鼻子、左眼、右眼、左耳、右耳
手臂肩膀、手肘和手腕
腿部臀部、膝盖和脚踝

每个关键点通常包含:

  • x 坐标:水平位置。
  • y 坐标:垂直位置。
  • 置信度:AI 对识别结果的把握程度。

2. 准备摄像头

为了准确识别姿势:

  1. 1把摄像头放在稳定的位置。
  2. 2站得足够远,让摄像头能拍到上半身或全身。
  3. 3选择光线明亮的地方。
  4. 4避免多人同时出现在画面中。
  5. 5运动前清理周围的空间。
⚠️ 练习时不要动作太快,也不要站在障碍物旁边。

3. 添加姿态检测扩展

在 PictoBlox 中:

  1. 1点击 扩展 Extension。
  2. 2找到并选择 Pose Detection 或 Human Body Detection。
  3. 3允许 PictoBlox 使用摄像头。
  4. 4检查姿态识别积木是否已出现。

不同版本的 PictoBlox 中,积木名称可能略有不同。

4. 开启并分析画面

编写基础程序:

text
当绿旗被点击
开启视频,透明度 20%

重复执行
    分析摄像头中的姿态

分析积木必须放在 重复执行 循环中,AI 才能在你移动时持续更新身体位置。

5. 读取关键点坐标

要识别手臂动作,我们需要这些点:

text
左肩
右肩
左手腕
右手腕

创建变量:

text
左肩_Y
右肩_Y
左手腕_Y
右手腕_Y

更新数值:

text
重复执行
    分析摄像头中的姿态

    将 [左肩_Y] 设为
        [左肩的 y 坐标]

    将 [左手腕_Y] 设为
        [左手腕的 y 坐标]

举起左臂时,手腕会比肩膀更高。

text
如果 <左手腕_Y 大于 左肩_Y> 那么
    说 "你举起了左手!"
🔍 写条件前先检查 Y 轴方向: 让角色 说 [左手腕_Y],然后依次放下和举起手臂。如果举手时数值变大,就按本课使用 大于;如果数值变小,就把所有比较改成 小于。

6. 识别每个动作

Mục Trọng Tâm

举起左手

text
如果 <左手腕_Y 大于 左肩_Y> 那么
    说 "左手举起来了!"
Mục Trọng Tâm

举起右手

text
如果 <右手腕_Y 大于 右肩_Y> 那么
    说 "右手举起来了!"
Mục Trọng Tâm

双手举起

text
如果
    <左手腕_Y 大于 左肩_Y>
    与
    <右手腕_Y 大于 右肩_Y>
那么
    说 "双手都举起来了!"

7. 小项目:模仿机器人

Mục Trọng Tâm

任务

让角色根据用户的姿势切换造型。

text
当绿旗被点击
开启视频,透明度 20%

重复执行
    分析摄像头中的姿态

    将 [左肩_Y] 设为 [左肩的 y 坐标]
    将 [右肩_Y] 设为 [右肩的 y 坐标]
    将 [左手腕_Y] 设为 [左手腕的 y 坐标]
    将 [右手腕_Y] 设为 [右手腕的 y 坐标]

    如果
        <左手腕_Y 大于 左肩_Y>
        与
        <右手腕_Y 大于 右肩_Y>
    那么
        换成 [双手举起] 造型
        说 "太棒了!" 1 秒
    否则
        如果 <左手腕_Y 大于 左肩_Y> 那么
            换成 [举左手] 造型
        否则
            如果 <右手腕_Y 大于 右肩_Y> 那么
                换成 [举右手] 造型
            否则
                换成 [站立] 造型

角色会根据你的姿势改变样子。

8. 用姿势控制机器人

可以约定:

姿势机器人指令
举左手左转
举右手右转
双手举起前进
双手放下停止

例如:

text
如果 <双手举起> 那么
    机器人前进
否则
    如果 <举左手> 那么
        机器人左转
    否则
        如果 <举右手> 那么
            机器人右转
        否则
            机器人停止
⚠️ 连接真实机器人前,务必先用舞台上的角色测试程序。

9. 如果 AI 识别不准确

请检查:

  • 双肩和手臂是否都在画面中。
  • 房间是否足够明亮。
  • 衣服和背景是否容易区分。
  • 画面中是否有多人。
  • 摄像头是否在晃动。
  • 姿态分析积木是否在循环中。

如果角色频繁切换状态,请在每个动作上保持约 1 秒再让它执行。

🧩 挑战

选择一个想法升级项目:

  1. 1做一个健身游戏,每次举手得分。
  2. 2通过侧身控制宇宙飞船。
  3. 3玩家举起双手时播放声音。
  4. 4手腕高于头部时让角色跳起来。
  5. 5添加变量 练习次数 统计正确动作的次数。

✅ 记住

  • 姿态估计帮助 AI 识别身体姿势。
  • PoseNet 使用 17 个关键点。
  • 每个关键点都有 x、y 坐标和置信度。
  • 比较手腕和肩膀的位置可以识别举手动作。
  • 条件把姿势转换成角色或机器人的动作。
  • 摄像头需要充足的光线并清楚地看到身体。
Mục Trọng Tâm

快问快答

  1. 1什么是关键点?
  2. 2PoseNet 能识别多少个关键点?
  3. 3识别举手动作需要比较哪些点?
  4. 4为什么要先在舞台上测试,再控制真实机器人?

Sẵn sàng kiểm tra kiến thức?

Chuyển sang phòng thi riêng để làm bài, xem kết quả và giải thích.

第2部分能力测评:计算机视觉与 AI 姿态跟踪 →14 questions · 15 minutes