4. SDK接口调用说明
📋 目录
4.1 节点与话题
psi_glove_node 定时 Loop() 读取手套,发布两类 sensor_msgs/JointState:
| 话题 | 默认名 | 内容 |
|---|---|---|
| 校准后关节角 | left_topic / right_topic | 默认 /ruiyan_hand/left/set_angles、/ruiyan_hand/right/set_angles |
| 原始 ADC | psi_glove_left / psi_glove_right | 22 路 position(0–4095) |
关节命名(原始话题,与驱动一致):
- 拇指 6:
thumb_0…thumb_5 - 其余四指各 4:
{finger}_0…{finger}_3(index、middle、ring、pinky)
4.2 节点参数
| 参数 | 默认值 | 说明 |
|---|---|---|
left_port | /dev/ttyACM5 | 左手串口 |
right_port | /dev/ttyACM4 | 右手串口 |
baudrate | 115200 | 波特率 |
frequency | 100 | 采集频率 (Hz) |
left_topic | /ruiyan_hand/left/set_angles | 左手校准话题 |
right_topic | /ruiyan_hand/right/set_angles | 右手校准话题 |
config_file | default_config.yaml | 校准配置 |
auto_connect | true | 启动时连接 |
4.3 PlayLra 服务
类型:psi_glove_ros2/srv/PlayLra
string hand # "left" 或 "right"
uint8[5] modes # 每指 0-10
uint8[5] amplitudes # 每指 0-255
---
bool success
string messagebash
ros2 service call /play_lra psi_glove_ros2/srv/PlayLra \
"{hand: 'right', modes: [1,2,3,4,5], amplitudes: [40,40,40,40,40]}"4.4 自定义订阅节点(Python)
python
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import JointState
class MySubscriber(Node):
def __init__(self):
super().__init__('my_sub')
self.create_subscription(
JointState, '/psi_glove_left', self.cb, 10)
def cb(self, msg: JointState):
if len(msg.position) >= 22:
thumb0 = msg.position[0]
self.get_logger().info(f'thumb_0={thumb0}')4.5 与 Python/C++ SDK 差异
| 能力 | ROS2 |
|---|---|
| YAML 校准配置 | ✅ 节点 LoadConfig |
| 原始 22 路 ADC 话题 | ✅ |
| LRA | ✅ play_lra 服务 |
| 指尖 FK / MuJoCo 直连串口 | ❌(可用 psi_glove_visualizer 订阅话题) |
| 离线 wheel | ❌ |
