鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    vscode无法打开rviz和gazebo

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    rviz2 gazebo vscode
    4
    4
    605
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 32535196423
      3253519642
      最后由 编辑

      在学习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'
      

      但是如果我直接打开终端运行则不会出现问题

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        您遇到的问题主要是因为在 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 的集成终端但遇到问题,可以考虑使用像 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 会话或使用外部图形终端。如果这些方法都不奏效,可能需要更深入地检查环境变量或系统配置。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 1 条回复 最后回复 回复 引用 0
        • 1
          17337355139 @小伊
          最后由 编辑

          @小伊 怎么样啊兄弟,能解决吗?我也遇见了

          R 1 条回复 最后回复 回复 引用 0
          • R
            ros2_fresh @17337355139
            最后由 编辑

            @17337355139 尝试切换到 Xorg 会话(具体方法找百度)

            1 条回复 最后回复 回复 引用 0
            • 第一个帖子
              最后一个帖子
            皖ICP备16016415号-7
            Powered by NodeBB | 鱼香ROS