手势控制

基于食指方向识别(gesture_recognition_index_direction)实现“手势控制”。当识别到方向为“上/下/左/右”时,节点将实时输出底盘速度指令:上→前进、下→后退、左→原地左转、右→原地右转;未识别时立即停止。

手势控制(index_direction_controller)节点订阅 gesture_recognition_index_direction/message (识别消息),并发布 cmd_vel ( geometry_msgs/Twist )控制底盘。

启动运动底盘

以OriginBot智能小车为例,先启动小车底盘运动控制

shell
ros2 launch originbot_bringup originbot.launch.py

启动节点命令

shell
ros2 run pycodeapp index_direction_controller

该节点默认绑定可以直接通过平台节点管理菜单启动。

节点参数说明

参数名 描述 类型 默认值 说明
input_topic 订阅主题 String gesture_recognition_index_direction/message 食指方向识别节点发布的消息话题(JSON 文本,如 {"value":"UP"})。
cmd_topic 速度指令主题 String cmd_vel 发布 geometry_msgs/Twist 控制底盘。
v_forward 前进线速度 double 0.05 执行“上(UP)”手势时的线速度(m/s)。
v_backward 后退线速度(正值) double 0.05 执行“下(DOWN)”手势时取负发布为后退速度(m/s)。
w_turn 原地转向角速度 double 0.80 左转为正、右转为负(rad/s)。
cmd_rate_hz 指令频率 double 20.0 定时下发频率(Hz),持续重发最近一次指令用于保活。
lost_timeout_sec 丢失超时 double 0.35 超过该秒数未收到识别消息时视为未识别并急停。

参数使用方法

shell
# 自定义输入消息主题与控制参数(速度与转向) ros2 run pycodeapp index_direction_controller --ros-args \ -p input_topic:=gesture_recognition_index_direction/message \ -p cmd_topic:=cmd_vel \ -p v_forward:=0.08 \ -p v_backward:=0.06 \ -p w_turn:=1.20 # 提高指令频率并收紧丢失超时(更快急停) ros2 run pycodeapp index_direction_controller --ros-args \ -p cmd_rate_hz:=30.0 \ -p lost_timeout_sec:=0.3

实时运动数据

点击“手势控制”节点,进入该节点通信页面。

主题订阅示意

点击发布主题“/cmd_vel”中的“订阅”按钮,类型选择“文字”,可查看线速度/角速度;

或点击识别节点订阅主题“/gesture_recognition_index_direction/message”选择“图片”,查看识别到的方向(UP/DOWN/LEFT/RIGHT)。

主题订阅示意

实现效果