小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
vscode无法打开rviz和gazebo
-
在学习ros2仿真篇时,如果在vscode的集成终端中运行rviz会报错
QSocketNotifier: Can only be used with threads started with QThread [INFO] [1727583161.653582083] [rviz2]: Stereo is NOT SUPPORTED [INFO] [1727583161.653659093] [rviz2]: OpenGl version: 4.6 (GLSL 4.6) [ERROR] [1727583161.661932639] [rviz2]: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662023691] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662090051] [rviz2]: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662104777] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662127567] [rviz2]: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662140611] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662161418] [rviz2]: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662173849] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662195143] [rviz2]: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 257) [ERROR] [1727583161.662208085] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in ... terminate called after throwing an instance of 'std::runtime_error' what(): Unable to create the rendering window after 100 tries 已中止 (核心已转储)
运行gazebo时报错
terminate called after throwing an instance of 'gazebo::common::Exception'
但是如果我直接打开终端运行则不会出现问题
-
您遇到的问题主要是因为在 Visual Studio Code (VSCode) 的集成终端中启动图形界面应用(如 rviz 和 Gazebo)时,环境变量或窗口系统配置与直接在图形终端中启动时有所不同。这种情况经常发生在基于 Wayland 的桌面环境(如 GNOME 3.28 及以上版本,默认使用 Wayland)中,因为 Wayland 对窗口管理的处理与 Xorg 有所不同。
解决方案
1. 使用 Xorg 而不是 Wayland
如果您使用的是 GNOME 或其他默认使用 Wayland 的桌面环境,尝试切换到 Xorg 会话。这通常可以在登录屏幕中选择。
2. 修改 VSCode 集成终端的设置
虽然直接修改 VSCode 集成终端以使用 Xorg 可能不可行,但您可以尝试以下几种方法:
-
使用外部终端:在 VSCode 中设置使用外部终端(如 GNOME Terminal 或 Konsole),这些终端通常能更好地处理图形应用。
- 打开 VSCode 设置(
File > Preferences > Settings
或使用快捷键Ctrl+,
)。 - 搜索
terminal.integrated.shell.linux
并更改为您喜欢的终端的路径。
- 打开 VSCode 设置(
-
尝试使用其他集成终端模拟器:如果您喜欢 VSCode 的集成终端但遇到问题,可以考虑使用像
TerminalView
这样的扩展,它提供了更多配置选项。
3. 检查环境变量
确保在 VSCode 终端中启动 rviz 和 Gazebo 时,所有必要的环境变量都已正确设置。特别是与 OpenGL 和窗口管理相关的环境变量。
4. 使用 Xvfb(X 虚拟帧缓冲)
如果您在服务器上或没有图形界面的环境中工作,可以使用 Xvfb 来模拟一个 X 服务器。但这对您的用例(在桌面环境中)可能不是必需的。
5. 调试和日志
- 查看 rviz 和 Gazebo 的日志文件,以获取更多关于错误的详细信息。
- 使用
strace
或其他系统跟踪工具来观察在 VSCode 终端中启动这些应用时发生了什么。
6. 升级或重新安装依赖
确保您的 rviz、Gazebo 和 ROS 2 依赖都是最新的,并且正确安装。
7. 权限问题
确保您的用户账户有足够的权限来创建窗口和访问图形硬件。
结论
由于问题可能与 Wayland 或 VSCode 集成终端的环境配置有关,建议首先尝试切换到 Xorg 会话或使用外部图形终端。如果这些方法都不奏效,可能需要更深入地检查环境变量或系统配置。
以上为生成回答,仅供参考~
-