基于姿态识别(posture_recognition) 的结果实现“人体跟随”。当识别到目标为“站立”时,节点根据目标在画面中的水平偏差与框高占比,实时输出底盘速度指令。
人体跟随(human_following)节点订阅 posture_recognition/message (识别消息),并发布 cmd_vel ( geometry_msgs/Twist )控制底盘。
以OriginBot智能小车为例,先启动小车底盘运动控制
该节点默认绑定可以直接通过平台节点管理菜单启动。
| 参数名 | 描述 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| input_topic | 订阅主题 | String | posture_recognition/message | 姿态识别节点发布的消息话题(JSON 文本)。 |
| cmd_topic | 速度指令主题 | String | cmd_vel | 发布 geometry_msgs/Twist 控制底盘。 |
| target_box_ratio | 目标框高度占比 | double | 0.7 | 期望的人体框高度占比(越大表示越近),用于距离控制。 |
| too_close_ratio | 过近阈值 | double | 0.95 | 超过此占比强制后退,保障安全距离。 |
| too_far_ratio | 过远阈值 | double | 0.45 | 低于此占比强制前进,避免丢失目标。 |
| kv | 线速度增益 | double | 1.0 | (距离误差 → 线速度)比例增益。 |
| kw | 角速度增益 | double | 2.0 | (水平偏差 → 角速度)比例增益。 |
| v_max_forward | 最大前进速度 | double | 0.45 | 前进速度上限(m/s)。 |
| v_max_backward | 最大后退速度 | double | 0.30 | 后退速度上限(m/s)。 |
| w_max | 最大角速度 | double | 1.8 | 角速度上限(rad/s)。 |
| center_deadband | 居中死区 | double | 0.03 | 相对宽度的居中死区,偏差小于此值不转向。 |
| dist_deadband | 距离死区 | double | 0.02 | 目标框占比与期望占比的误差小于此值不前后移动。 |
| ema_alpha | 指数平滑系数 | double | 0.35 | 对中心与框占比做 EMA 平滑,范围 0~1,越大越灵敏。 |
| lost_timeout_sec | 丢失超时 | double | 0.5 | 在未收到消息或未检测到“站立”超过此秒数时立即急停。 |
| cmd_rate_hz | 指令频率 | double | 20.0 | 定时下发频率(Hz),用于保活(部分底盘需持续心跳)。 |
点击“人体跟随”节点,进入该节点通信页面。
点击发布主题“/cmd_vel”中的“订阅”按钮,类型选择“文字”,可查看线速度/角速度;
或点击姿态识别节点订阅主题“/posture_recognition/image_jpeg”选择“图片”,查看框出来的人体姿态。