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

WSL下ROS Melodic启动rviz报qt.qpa.screen无法连接X display错误

问题排查与解决步骤

你Gazebo输出的ALSA音频报错、Ignition Fuel证书报错均不影响X Server功能,无需针对这两个报错调整。本次rviz启动失败核心是运行时环境变量缺失、X Server访问权限不足两个原因,按以下步骤排查即可:

1. 补全XDG_RUNTIME_DIR环境变量

对应报错中XDG_RUNTIME_DIR not set的提示,执行以下命令:

export XDG_RUNTIME_DIR=/tmp/runtime-root
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR

如需永久生效,可将上述命令追加到~/.bashrc文件中,每次启动终端自动加载。

2. 确认运行rviz的终端DISPLAY变量生效

很多用户会在不同终端分别启动Gazebo和rviz,新终端不会继承之前设置的环境变量,先在运行rviz的终端执行:

echo $DISPLAY

输出格式应为x.x.x.x:0,与启动Gazebo时的输出一致,如果为空或值错误,重新执行DISPLAY设置命令:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

补充:如果是WSL1环境,可以直接固定DISPLAY为export DISPLAY=127.0.0.1:0,不需要每次动态读取宿主机IP。

3. 调整Xlaunch配置

rviz依赖的Qt框架对X Server权限要求更高,之前能启动Gazebo不代表Xlaunch配置适配rviz:

  • 关闭当前运行的Xlaunch,重新打开配置
  • 前三步保持默认设置,到最后一页配置项时,勾选「Disable access control」
  • 在「Additional parameters for VcXsrv」输入框中填入-ac -nowgl,再启动X服务

4. 适配OpenGL渲染配置

执行以下命令调整Qt和OpenGL渲染参数,规避WSL兼容性问题:

export LIBGL_ALWAYS_INDIRECT=1
export QT_X11_NO_MITSHM=1

5. 开放root用户X Server访问权限

由于你使用root账户登录WSL,需要额外开放访问权限:

xhost +local:root

所有配置完成后再执行rosrun rviz rviz即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:42:02