跳到主要内容

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 端跌倒检测人体框、关键点与姿态结果渲染效果