6. 连接状态查询与故障排查 
6.1 如何查询连接状态 
6.1.1 检查节点是否运行 
bash
# 列出所有运行的节点
ros2 node list
# 输出应包含:
# /psi_glove_node
# 查看节点详细信息
ros2 node info /psi_glove_node
# 输出:
# /psi_glove_node
#   Subscribers:
#     /parameter_events: rcl_interfaces/msg/ParameterEvent
#   Publishers:
#     /parameter_events: rcl_interfaces/msg/ParameterEvent
#     /rosout: rcl_interfaces/msg/Log
#     /ruiyan_hand/left/set_angles: sensor_msgs/msg/JointState
#   Service Servers:
#     ...
#   Service Clients:
#     ...6.1.2 检查话题是否发布 
bash
# 列出所有话题
ros2 topic list
# 输出应包含:
# /ruiyan_hand/left/set_angles
# /ruiyan_hand/right/set_angles
# 查看话题信息
ros2 topic info /ruiyan_hand/left/set_angles
# 输出:
# Type: sensor_msgs/msg/JointState
# Publisher count: 1
# Subscription count: 0
# 查看话题频率(实时)
ros2 topic hz /ruiyan_hand/left/set_angles
# 输出:
# average rate: 99.876
#     min: 0.009s max: 0.011s std dev: 0.00053s window: 1006.1.3 检查参数设置 
bash
# 列出节点所有参数
ros2 param list /psi_glove_node
# 获取特定参数
ros2 param get /psi_glove_node left_port
# 输出: String value is: /dev/ttyACM0
ros2 param get /psi_glove_node baudrate
# 输出: Integer value is: 115200
ros2 param get /psi_glove_node frequency
# 输出: Integer value is: 1006.2 如何确认程序正常运行 
6.2.1 连接成功的标志 
✅ 正常运行的特征:
节点正在运行
bashros2 node list | grep psi_glove_node # 输出: /psi_glove_node话题正在发布
bashros2 topic hz /ruiyan_hand/left/set_angles # 输出: average rate: 99.876日志显示正常
[INFO] [psi_glove_node]: 左手连接成功 [INFO] [psi_glove_node]: 开始发布数据数据可以接收
bashros2 topic echo /ruiyan_hand/left/set_angles --once # 应该显示 JointState 消息
6.2.2 性能检查脚本 
bash
#!/bin/bash
# 检查 PSI 手套系统健康状态
echo "=== PSI 手套系统诊断 ==="
echo
# 检查节点
echo "1. 检查节点是否运行..."
if ros2 node list | grep -q psi_glove_node; then
    echo "   ✅ 节点正在运行"
else
    echo "   ❌ 节点未运行"
    exit 1
fi
# 检查话题
echo "2. 检查话题是否发布..."
if ros2 topic list | grep -q "/ruiyan_hand/left/set_angles"; then
    echo "   ✅ 左手话题存在"
else
    echo "   ❌ 左手话题不存在"
fi
# 检查频率
echo "3. 检查发布频率..."
hz_output=$(timeout 5 ros2 topic hz /ruiyan_hand/left/set_angles 2>/dev/null | grep "average rate")
if [ -n "$hz_output" ]; then
    echo "   ✅ $hz_output"
else
    echo "   ❌ 无数据发布"
fi
# 检查串口
echo "4. 检查串口设备..."
port=$(ros2 param get /psi_glove_node left_port 2>/dev/null | grep "String value" | cut -d':' -f2 | tr -d ' ')
if [ -e "$port" ]; then
    echo "   ✅ 串口设备存在: $port"
else
    echo "   ❌ 串口设备不存在: $port"
fi
echo
echo "=== 诊断完成 ==="6.3 常见故障排查 
故障 1: 编译失败 
症状:
CMake Error: Could not find a package configuration file provided by "rclcpp"解决方法:
bash
# 确保已安装 ROS2
source /opt/ros/humble/setup.bash
# 检查 ROS2 是否正确安装
ros2 --version
# 安装缺失的依赖
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# 清理后重新编译
cd ~/ros2_ws
rm -rf build install log
colcon build --packages-select psi_glove_ros2故障 2: 节点启动失败 
症状:
[ERROR] [psi_glove_node]: 错误: 无法连接到设备排查步骤:
检查设备是否通电
检查串口是否存在
bashls -l /dev/ttyUSB* /dev/ttyACM*检查串口权限
bashgroups # 应包含 dialout ls -l /dev/ttyACM0 # 应显示 crw-rw----检查串口是否被占用
bashlsof /dev/ttyACM0尝试不同的串口
bashros2 launch psi_glove_ros2 psi_glove.launch.py left_port:=/dev/ttyUSB0
故障 3: 无数据发布 
症状:
bash
ros2 topic hz /ruiyan_hand/left/set_angles
# 输出: no messages排查步骤:
检查节点是否运行
bashros2 node list | grep psi_glove查看节点日志
bashros2 node info /psi_glove_node cat ~/.ros/log/latest/psi_glove_node/stdout.log检查参数设置
bashros2 param get /psi_glove_node left_port ros2 param get /psi_glove_node baudrate重启节点
bash# Ctrl+C 停止节点 ros2 launch psi_glove_ros2 psi_glove.launch.py left_port:=/dev/ttyACM0
故障 4: 话题频率过低 
症状:
bash
ros2 topic hz /ruiyan_hand/left/set_angles
# 输出: average rate: 45.123  # 远低于 100 Hz解决方法:
提高发布频率
bashros2 param set /psi_glove_node frequency 150提高波特率
bash# 重启节点时设置 ros2 launch psi_glove_ros2 psi_glove.launch.py \ left_port:=/dev/ttyACM0 \ baudrate:=500000减少日志输出
bashros2 launch psi_glove_ros2 psi_glove.launch.py \ --log-level warn # 只显示警告和错误
故障 5: 可视化器无法显示 
症状:
ModuleNotFoundError: No module named 'matplotlib'解决方法:
bash
# 安装 Python 依赖
pip3 install matplotlib numpy
# 验证安装
python3 -c "import matplotlib; import numpy; print('OK')"
# 重新启动可视化器
ros2 run psi_glove_visualizer glove_visualizer6.4 调试工具和技巧 
6.4.1 ROS2 调试工具 
bash
# 1. rqt_graph - 可视化节点和话题关系
sudo apt-get install ros-humble-rqt-graph
rqt_graph
# 2. rqt_topic - 监控话题
sudo apt-get install ros-humble-rqt-topic
rqt_topic
# 3. rqt_console - 查看日志
sudo apt-get install ros-humble-rqt-console
rqt_console
# 4. ros2 doctor - 系统健康检查
ros2 doctor --report6.4.2 记录和回放数据 
bash
# 记录数据到 bag 文件
ros2 bag record /ruiyan_hand/left/set_angles
# 记录所有话题
ros2 bag record -a
# 回放数据
ros2 bag play rosbag2_2025_01_15-10_30_45
# 查看 bag 文件信息
ros2 bag info rosbag2_2025_01_15-10_30_456.4.3 性能分析 
bash
# 使用 ros2 topic bw 查看带宽
ros2 topic bw /ruiyan_hand/left/set_angles
# 使用 ros2 topic delay 查看延迟
ros2 topic delay /ruiyan_hand/left/set_angles
# 使用 top 查看 CPU 使用率
top -p $(pgrep -f psi_glove_node)6.5 获取技术支持 
如果以上方法无法解决问题,请:
收集诊断信息
bash# ROS2 环境信息 ros2 doctor --report > ros2_diagnostic.txt # 节点信息 ros2 node info /psi_glove_node > node_info.txt # 参数信息 ros2 param dump /psi_glove_node > params.yaml # 日志文件 cat ~/.ros/log/latest/psi_glove_node/stdout.log > node_log.txt # 系统信息 uname -a > system_info.txt查看详细文档
- ROS2 SDK README: 
ros2_sdk/README_CN.md - psi_glove_ros2 README: 
ros2_sdk/psi_glove_ros2/README.md - psi_glove_visualizer README: 
ros2_sdk/psi_glove_visualizer/README.md 
- ROS2 SDK README: 
 联系技术支持
- 提供诊断信息和日志文件
 - 描述复现步骤
 
📊 附录:快速参考 
常用命令 
bash
# 编译
colcon build --packages-select psi_glove_ros2 psi_glove_visualizer
# 加载环境
source ~/ros2_ws/install/setup.bash
# 启动驱动
ros2 launch psi_glove_ros2 psi_glove.launch.py left_port:=/dev/ttyACM0
# 查看话题
ros2 topic list
ros2 topic echo /ruiyan_hand/left/set_angles
ros2 topic hz /ruiyan_hand/left/set_angles
# 查看节点
ros2 node list
ros2 node info /psi_glove_node
# 查看参数
ros2 param list /psi_glove_node
ros2 param get /psi_glove_node left_port
# 启动可视化
ros2 launch psi_glove_visualizer visualizer.launch.py
# 记录数据
ros2 bag record /ruiyan_hand/left/set_angles性能参数参考 
| 场景 | 波特率 | 频率 | 预期帧率 | 
|---|---|---|---|
| 标准配置 | 115200 | 100 | 95-100 Hz | 
| 高速配置 | 500000 | 150 | 140-150 Hz | 
| 稳定配置 | 115200 | 50 | 48-50 Hz | 
数据范围 
- ADC 值: 0-4095 (12-bit)
 - 关节数量: 21 个
 - 拇指: 5 个关节(索引 0-4)
 - 其他手指: 各 4 个关节
 
版本: 1.0.0
更新日期: 2025-01-15
版权所有: © 2025 PSI 机器人团队
