You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS项目远程显示报错:qt.qpa.xcb无法连接显示,求解决

解决ROS远程显示报错与无屏幕流数据访问方案

一、解决turtlesim的X11转发报错

报错根源

你遇到的qt.qpa.xcb类错误,本质是树莓派无权限访问Windows虚拟机的X服务器,或X服务器配置未开放监听。

分步修复

  1. 虚拟机端配置X权限
    在Ubuntu虚拟机中执行,开放树莓派的X访问权限:

    xhost +树莓派IP地址
    

    临时测试可直接用xhost +开放所有权限(不建议长期使用),然后查看当前DISPLAY变量:

    echo $DISPLAY
    

    记住输出值(通常是:0或localhost:10.0)。

  2. 树莓派端开启X11转发并设置DISPLAY
    必须通过带X11转发的SSH连接树莓派:

    ssh -X 树莓派用户名@树莓派IP
    

    在SSH会话中设置DISPLAY变量为虚拟机的IP+刚才记下的DISPLAY值:

    export DISPLAY=虚拟机IP:0.0
    

    最后测试turtlesim:

    rosrun turtlesim turtlesim_node
    
  3. 补全依赖与防火墙检查
    若仍报错,安装树莓派缺失的X11依赖:

    sudo apt install libxcb-xinerama0 libxcb-randr0 libxcb-util1
    

    同时开放虚拟机的X11默认端口(6000):

    sudo ufw allow 6000/tcp
    

二、无屏幕流的ROS远程数据访问方案

如果不想用X11转发GUI,最简便的方式是分离节点运行:树莓派跑硬件驱动节点,虚拟机跑可视化节点,通过ROS网络直接传输数据。

配置步骤

  1. 统一ROS网络环境变量

    • 树莓派和虚拟机都设置ROS主节点地址为树莓派IP:
      export ROS_MASTER_URI=http://树莓派IP:11311
      
    • 各自设置自身的ROS主机名:
      树莓派端:
      export ROS_HOSTNAME=树莓派IP
      
      虚拟机端:
      export ROS_HOSTNAME=虚拟机IP
      

    可将上述命令添加到~/.bashrc,避免每次手动输入。

  2. 验证网络连通性
    树莓派启动roscore:

    roscore
    

    虚拟机中执行:

    rostopic list
    

    能看到/rosout等话题则说明网络正常。

  3. 运行雷达与可视化节点
    树莓派启动RPLidar驱动:

    roslaunch rplidar_ros rplidar.launch
    

    虚拟机启动rviz,添加LaserScan话题即可直接查看雷达数据,无需任何桌面流传输。

内容的提问来源于stack exchange,提问作者Cooler Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:46:07