跳到主要内容

5.4.3 姿态检测

功能介绍

姿态检测 App 通过订阅摄像头发布的图片消息,检测出人体关键点后分析人体姿态,并发布姿态事件。

姿态事件使用自定义算法 msg 发布出去, 用户可以订阅此 topic 的 msg 用于应用开发。

目前只支持跌倒检测功能,检测人体是否跌倒。

代码仓库: (https://github.com/D-Robotics/hobot_falldown_detection)

支持平台

平台运行方式示例功能
RDK X3, RDK X3 ModuleUbuntu 20.04 (Foxy), Ubuntu 22.04 (Humble)启动 MIPI/USB 摄像头获取图像,并进行人体关键点检测以及姿态检测,最后通过 Web 展示图像和算法效果,发布姿态事件
RDK X5, RDK X5 ModuleUbuntu 22.04 (Humble)启动 MIPI/USB 摄像头获取图像,并进行人体关键点检测以及姿态检测,最后通过 Web 展示图像和算法效果,发布姿态事件

准备工作

RDK 平台

  1. RDK 已烧录好 Ubuntu 系统镜像。

  2. RDK 已成功安装 TogetheROS.Bot。

  3. 确认 PC 机跟 RDK 处于同一网段,IP 地址前三段需保持一致

  4. RDK 已安装 MIPI 或者 USB 摄像头。

使用介绍

RDK 平台

姿态检测 pkg 订阅人体关键点检测 pkg 发布的数据,经过算法推理后发布算法 msg,通过 websocket package 实现在 PC 端浏览器上渲染显示发布的图片和对应的算法结果。

友情提示:体验 App 时,将摄像头旋转 90 度,模拟人跌倒的效果。

使用 mipi 摄像头发布图片

# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .

# 配置MIPI摄像头
export CAM_TYPE=mipi

# 启动launch文件
ros2 launch hobot_falldown_detection hobot_falldown_detection.launch.py

使用 USB 摄像头发布图片

# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .

# 配置USB摄像头
export CAM_TYPE=usb

# 启动launch文件
ros2 launch hobot_falldown_detection hobot_falldown_detection.launch.py

运行命令中的参数说明,参考 hobot_falldown_detection package 源码中的 README.md。

结果分析

启动姿态检测 pkg 后,在运行终端输出如下信息:

[hobot_falldown_detection-4] [INFO] [1660271558.250055538] [body_kps_Subscriber]: receive targetType: personpointType: body_kps
[hobot_falldown_detection-4] [INFO] [1660271558.250598996] [fall_down_publisher]: track_id: 1 is fall down

输出 log 显示,订阅到了 body_kps 数据,并发布了姿态事件。

在 PC 端的浏览器输入 http://IP:8000 ,人体检测框,关键点和姿态检测结果在 web 端展示渲染效果(IP 为 RDK 的 IP 地址):

Web 端跌倒检测人体框、关键点与姿态结果渲染效果