Skip to main content
以下示例的话题与服务路径均使用默认命名空间 /hand_0/。使用 wujihand_dual.launch.py 启动时,话题与服务在 /hand_left/ 和 /hand_right/ 下,请按需替换 /hand_0/。

接口清单

HandDiagnostics 消息

wujihand_msgs/msg/HandDiagnostics:硬件诊断信息,默认 10Hz 发布(可通过 diagnostics_rate 配置)。

JointState 消息

sensor_msgs/msg/JointState:关节状态,默认 1000Hz 发布(可通过 publish_rate 配置)。
Effort 字段说明Effort 是电流空间的执行器作用量,经过滤波处理后输出。它不是实际测量的电流值,应将其理解为相对驱动强度。典型应用场景:
  • 碰撞检测:effort 突增表示关节受阻
  • 负载监控:可通过 effort / effort_limit 计算当前输出百分比
默认 effort_limit 为 1.5A,最大 3.5A。

SetEnabled 服务

wujihand_msgs/srv/SetEnabled:启用或禁用关节。

ResetError 服务

wujihand_msgs/srv/ResetError:重置关节错误状态。

服务调用

启用/禁用关节

重置错误

话题控制

发送关节位置命令

关节位置通过 /{hand_name}/joint_commands 话题发送,使用 sensor_msgs/msg/JointState 消息类型。 方式一:位置数组(20 个关节)
方式二:指定关节名

平滑回零

home.launch.py 从当前位置平滑插值回零,避免猛然弹回:

读取关节状态

代码示例

以下示例演示如何使用 JointState 消息控制灵巧手:
  • 订阅 joint_states 话题,实时获取关节位置反馈
  • 发布 joint_commands 话题,控制灵巧手运动

Python

运行步骤
  1. 将以上代码保存为 wujihand_controller.py
  2. 在终端 1 启动驱动:
  1. 在终端 2 运行示例代码:
预期输出 运行后灵巧手执行归零动作,终端持续打印关节位置(约 10Hz),按 Ctrl+C 退出:

C++

运行步骤 C++ 示例需要创建 ROS2 包来编译。
  1. 创建测试包:
  1. 将以上代码保存为 ~/test/test_wujihand/src/wujihand_controller.cpp
  2. 在 ~/test/test_wujihand/CMakeLists.txt 末尾添加:
  1. 在终端 1 启动驱动:
  1. 在终端 2 编译并运行:
预期输出 运行后灵巧手执行归零动作,终端持续打印关节位置(约 10Hz),按 Ctrl+C 退出: