Skip to content

故障排除

常见问题

1. 连接失败

错误: RuntimeError: 连接机器人失败

诊断和解决方案

  • 检查网络连通性:ping 172.16.0.20
  • 验证 ROS_DOMAIN_ID:echo $ROS_DOMAIN_ID
  • 确保机器人系统正在运行
  • 确认主机 IP 在 172.16.0.x 子网中
bash
# 测试网络连通性
ping 172.16.0.20

# 检查 ROS2 通信
ros2 topic list
ros2 node list

2. 相机初始化失败

错误: 相机相关错误

解决方案

  • 测试相机连接:realsense-viewer
  • 使用测试模式:no_camera=True
  • 验证相机序列号
  • 确保 USB 3.0 连接
python
# 无相机测试
config = MOZ1RobotConfig(
    no_camera=True,
    structure="dualarm"
)

3. ROS2 环境问题

错误: ROS2 导入错误

解决方案

bash
# 重置 ROS2 环境
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=33

# 验证 ROS2 安装
ros2 --version

4. Python 依赖问题

错误: 模块导入错误

解决方案

bash
# 重新安装依赖
pip install -r requirements.txt

# 测试关键依赖
python3 -c "import torch, numpy, cv2, pyrealsense2, rclpy"

5. ROS2通讯不稳定

错误:由于网络原因造成ROS2通讯不稳定,导致机器人执行action时抖动。

问题判别

  1. ros2 topic hz /cart_states观测到ros2效率的频率不稳定,存在异常波动。

解决方案

注意:下文提供的配置文件假设你的IP地址为172.16.0.30,请根据你的实际情况修改。

新增fastdds配置文件 /path/to/fastdds_config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<dds xmlns="http://www.eprosima.com">
    <profiles>
        <transport_descriptors>
            <transport_descriptor>
                <transport_id>udp_transport</transport_id>
                <type>UDPv4</type>
                <interfaceWhiteList>
                    <address>172.16.0.20</address>
                    <address>172.16.0.30</address>
                    <address>127.0.0.1</address>
                </interfaceWhiteList>
            </transport_descriptor>
        </transport_descriptors>

        <participant profile_name="UDPParticipant" is_default_profile="true">
            <rtps>
                <userTransports>
                    <transport_id>udp_transport</transport_id>
                </userTransports>
                <useBuiltinTransports>false</useBuiltinTransports>
            </rtps>
        </participant>
    </profiles>
</dds>

每次执行程序前执行:

export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/fastdds_config.xml

6. Python解释器与ROS2兼容性问题

错误: Python模块导入错误、rclpy初始化失败或版本冲突

问题描述: ROS2与Python虚拟环境(如conda、venv)存在兼容性问题,主要原因包括:

  • ROS2二进制文件与系统默认Python版本绑定
  • conda环境修改了默认Python解释器路径
  • Python包路径冲突导致rclpy等ROS2模块无法正确导入

解决方案

方案1:使用系统Python(推荐)

bash
# 确认使用系统Python
which python3
# 输出应该是:/usr/bin/python3

# 安装Python依赖到系统环境
sudo apt install python3-pip
pip3 install --user [所需包名]

# 避免激活conda base环境
conda config --set auto_activate_base false

方案2:conda环境隔离配置

bash
# 在 ~/.bashrc 中正确配置环境变量顺序
# 先加载ROS2环境,再初始化conda
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=33
# conda initialize block should be at the end

# 创建专用conda环境(与系统Python版本匹配)
conda create -n ros2_mozrobot python=3.x  # 3.x为系统Python版本
conda activate ros2_mozrobot

最佳实践

  1. 优先使用系统Python环境进行ROS2开发,避免复杂的兼容性问题
  2. 如必须使用conda,确保Python版本与系统一致

参考资源