3. 例程编译和调用方法 
3.1 例程列表 
ROS2 SDK 提供以下例程和工具:
| 例程/工具 | 类型 | 功能说明 | 
|---|---|---|
psi_glove_node | C++ 节点 | 主驱动节点,发布 JointState 消息 | 
subscriber_example.py | Python 示例 | 订阅手套数据的示例程序 | 
glove_visualizer | Python 节点 | 实时可视化工具(matplotlib 柱状图) | 
3.2 运行驱动节点 
3.2.1 使用 Launch 文件启动(推荐) 
bash
# 确保已加载环境
source ~/ros2_ws/install/setup.bash
# 启动左手手套
ros2 launch psi_glove_ros2 psi_glove.launch.py left_port:=/dev/ttyACM0
# 启动双手手套
ros2 launch psi_glove_ros2 psi_glove.launch.py \
    left_port:=/dev/ttyACM0 \
    right_port:=/dev/ttyACM1
# 带自定义参数
ros2 launch psi_glove_ros2 psi_glove.launch.py \
    left_port:=/dev/ttyACM0 \
    baudrate:=500000 \
    frequency:=150输出示例:
[INFO] [launch]: All log files can be found below /home/user/.ros/log/2025-01-15-10-30-45-123456
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [psi_glove_node-1]: process started with pid [12345]
[psi_glove_node-1] [INFO] [1705310445.123456789] [psi_glove_node]: PSI 手套节点已启动
[psi_glove_node-1] [INFO] [1705310445.234567890] [psi_glove_node]: 正在连接到左手: /dev/ttyACM0
[psi_glove_node-1] [INFO] [1705310445.345678901] [psi_glove_node]: 左手连接成功
[psi_glove_node-1] [INFO] [1705310445.456789012] [psi_glove_node]: 开始发布数据,频率: 100 Hz3.2.2 直接运行节点(不推荐) 
bash
# 直接运行节点可执行文件
ros2 run psi_glove_ros2 psi_glove_node \
    --ros-args \
    -p left_port:=/dev/ttyACM0 \
    -p baudrate:=115200 \
    -p frequency:=1003.3 运行 Python 订阅示例 
bash
# 确保驱动节点正在运行
# 在新终端中运行订阅示例
cd ~/ros2_ws/src/psi_glove_ros2/examples
python3 subscriber_example.py
# 或使用 ros2 run
ros2 run psi_glove_ros2 subscriber_example输出示例:
[INFO] [1705310450.123456789] [psi_glove_subscriber]: PSI手套订阅器已启动
[INFO] [1705310450.234567890] [psi_glove_subscriber]: 订阅话题: /psi_glove/joint_states
[INFO] [1705310451.123456789] [psi_glove_subscriber]: 
--- 帧 #10 ---
[INFO] [1705310451.234567890] [psi_glove_subscriber]: 时间戳: 1705310451.234567890
[INFO] [1705310451.345678901] [psi_glove_subscriber]: 坐标系: left_hand
[INFO] [1705310451.456789012] [psi_glove_subscriber]: 关节数量: 21
[INFO] [1705310451.567890123] [psi_glove_subscriber]: 拇指关节位置:
[INFO] [1705310451.678901234] [psi_glove_subscriber]:   left_joint_0: 2048.000
[INFO] [1705310451.789012345] [psi_glove_subscriber]:   left_joint_1: 1856.000
[INFO] [1705310451.890123456] [psi_glove_subscriber]:   left_joint_2: 2304.000
[INFO] [1705310451.901234567] [psi_glove_subscriber]:   left_joint_3: 1792.000
[INFO] [1705310452.012345678] [psi_glove_subscriber]:   left_joint_4: 2176.0003.4 运行可视化器 
bash
# 在新终端中启动可视化器(确保驱动节点正在运行)
source ~/ros2_ws/install/setup.bash
# 使用 Launch 文件
ros2 launch psi_glove_visualizer visualizer.launch.py
# 或直接运行
ros2 run psi_glove_visualizer glove_visualizer
# 自定义参数
ros2 run psi_glove_visualizer glove_visualizer \
    --ros-args \
    -p update_rate:=50 \
    -p y_min:=0.0 \
    -p y_max:=4095.0可视化窗口:
┌──────────────────────────────────────────────────────────┐
│  PSI 手套数据可视化 (ROS2 + Matplotlib)                 │
├──────────────────────────────────────────────────────────┤
│  左手关节位置                                            │
│  ┌────────────────────────────────────────────────┐     │
│  │ 拇指_0 ████████████████████████████ 2048       │     │
│  │ 拇指_1 ██████████████████ 1856                 │     │
│  │ 拇指_2 ████████████████████████████████ 2304   │     │
│  │ 拇指_3 ███████████████████ 1792                │     │
│  │ 拇指_4 ██████████████████████████ 2176         │     │
│  │ 食指_0 █████████████████████ 1920              │     │
│  │ ...                                             │     │
│  └────────────────────────────────────────────────┘     │
│                                                          │
│  右手关节位置                                            │
│  ┌────────────────────────────────────────────────┐     │
│  │ ...                                             │     │
│  └────────────────────────────────────────────────┘     │
│                                                          │
│  更新频率: 50 Hz  |  数据延迟: 20 ms                    │
└──────────────────────────────────────────────────────────┘3.5 查看话题数据 
bash
# 列出所有话题
ros2 topic list
# 查看手套话题详细信息
ros2 topic info /ruiyan_hand/left/set_angles
ros2 topic info /ruiyan_hand/right/set_angles
# 实时查看数据
ros2 topic echo /ruiyan_hand/left/set_angles
# 查看话题频率
ros2 topic hz /ruiyan_hand/left/set_angles
# 查看话题带宽
ros2 topic bw /ruiyan_hand/left/set_angles
# 发布测试消息(用于测试)
ros2 topic pub /ruiyan_hand/left/set_angles sensor_msgs/JointState \
    "header:
      stamp:
        sec: 0
        nanosec: 0
      frame_id: 'left_hand'
    name: ['joint_0', 'joint_1', 'joint_2']
    position: [2048.0, 1856.0, 2304.0]"