Ubuntu 18.04+ROS Melodic环境下Gazebo9无法启动问题求助
问题根因定位
从报错日志的Can't open display: :0、Could not connect to any X display字段可确认,故障核心是Gazebo的图形渲染组件无法获取X11显示服务的访问权限,常见于root用户启动、远程SSH未开X转发、环境变量配置错误三类场景。
分步排查&修复方案
第一步:确认操作用户身份
日志中XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'字段说明你大概率是用root用户运行的gazebo命令,Ubuntu默认禁止root用户访问普通用户的X11显示服务,两种修复方式:- 切换回普通用户执行gazebo命令(优先推荐)
- 若必须用root运行,先在普通用户终端执行
xhost +local:root,再切换root账号启动gazebo
第二步:检查DISPLAY环境变量配置
执行echo $DISPLAY查看输出,如果为空或不是:0(多显示器场景可能为:1),执行以下命令临时配置:
需要永久生效可将上述命令写入export DISPLAY=:0~/.bashrc文件,执行source ~/.bashrc后生效第三步:远程SSH场景适配
如果你是通过SSH远程连接Ubuntu主机启动gazebo,需要在连接时开启X转发:- 远程主机先安装xauth工具:
sudo apt install xauth - 本地发起SSH连接时添加-X参数:
ssh -X 用户名@远程主机IP
- 远程主机先安装xauth工具:
第四步:无GUI场景降级方案
如果你不需要图形界面仅需要后台运行仿真,可直接启动gazebo服务端模式跳过GUI加载:gzserver --verbose
内容的提问来源于stack exchange,提问作者ChocoFudge
相关产品推荐
相关产品推荐

