Windows11下Docker部署ERC仿真遇xhost错误及可视化问题求助
解决Windows11下Docker部署ERC远程维护仿真的可视化问题
1. 安装X11服务器工具
Windows无原生xhost命令,需先部署X11转发工具实现容器图形界面输出,推荐使用VcXsrv:
- 从微软商店或官方渠道下载安装VcXsrv
- 启动VcXsrv时,选择
Multiple windows模式,后续步骤务必勾选Disable access control(否则容器无法连接X服务器),完成启动
2. 配置Docker容器的X11转发参数
步骤1:获取Windows主机IP
在Git Bash或PowerShell中执行:
ipconfig
找到当前网络(WLAN/以太网)的IPv4地址,例如192.168.3.12
步骤2:修改run_ur3_docker.bash脚本
- 删除脚本第一行的
xhost +命令(Windows环境不支持) - 在
docker run启动命令中添加X11转发相关参数:
示例完整启动片段:-e DISPLAY=<你的Windows主机IP>:0.0 \ -v /tmp/.X11-unix:/tmp/.X11-unix \docker run -it \ --name erc_ur3_sim \ --net=host \ -e DISPLAY=192.168.3.12:0.0 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ erc_ur3_image \ /bin/bash
步骤3:临时设置环境变量(可选)
若容器仍无法连接X服务器,在Git Bash中执行(替换为你的主机IP):
export DISPLAY=192.168.3.12:0.0
3. 重新启动容器验证
- 清理旧容器(若已启动):
docker stop erc_ur3_sim docker rm erc_ur3_sim
- 执行
bash run_ur3_docker.bash启动新容器 - 进入容器后运行
roslaunch ur3_Sim simulation.launch,此时rviz、gazebo等可视化界面应正常显示
排查要点
- 确认VcXsrv处于运行状态,且
Disable access control已勾选 - 检查Windows防火墙未阻止VcXsrv的网络请求
- 若使用动态IP,每次重启网络后需重新获取并设置主机IP到
DISPLAY变量
内容的提问来源于stack exchange,提问作者Speedtail
相关产品推荐
相关产品推荐

