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

    运行launch fishbot_description gazebo_sim.launch.py时报错,无法打开gazebo

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    launch 失败 gazebo不显示
    5
    12
    850
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      2352947187
      最后由 编辑

      问题描述:
      这是我的gazebo_sim.launch.py文件:

      import launch
      import launch_ros
      from ament_index_python.packages import get_package_share_directory
      from launch.launch_description_sources import PythonLaunchDescriptionSource
      
      def generate_launch_description():
          # 获取默认路径
          # robot_name_in_model = "fishbot"
          urdf_tutorial_path = get_package_share_directory('fishbot_description')
          default_model_path = urdf_tutorial_path + '/urdf/fishbot/fishbot.urdf.xacro'
          default_world_path = urdf_tutorial_path + '/world/custom_room.world'
          # 为 Launch 声明参数
          action_declare_arg_mode_path = launch.actions.DeclareLaunchArgument(
              name='model', default_value=str(default_model_path),
              description='URDF 的绝对路径')
          # 获取文件内容生成新的参数
          robot_description = launch_ros.parameter_descriptions.ParameterValue(
              launch.substitutions.Command(
                  ['xacro ', launch.substitutions.LaunchConfiguration('model')]),
              value_type=str)
        	
          robot_state_publisher_node = launch_ros.actions.Node(
              package='robot_state_publisher',
              executable='robot_state_publisher',
              parameters=[{'robot_description': robot_description}]
          )
      
          # 通过 IncludeLaunchDescription 包含另外一个 launch 文件
          launch_gazebo = launch.actions.IncludeLaunchDescription(
              PythonLaunchDescriptionSource([get_package_share_directory(
                  'gazebo_ros'), '/launch', '/gazebo.launch.py']),
            	# 传递参数
              launch_arguments=[('world', default_world_path),('verbose','true')]
          )
          
          return launch.LaunchDescription([
              action_declare_arg_mode_path,
              robot_state_publisher_node,
              launch_gazebo,
          ])
      
      

      这是报错信息
      a5d46949-7ed0-4cd9-88ae-d6380ff72dd5-image.png
      代码如下:

      wang@wang-virtual-machine:~/desktop/item/chapter6/chapt6_ws$ ros2 launch fishbot_description  gazebo_sim.launch.py
      [INFO] [launch]: All log files can be found below /home/wang/.ros/log/2024-10-24-01-09-43-443510-wang-virtual-machine-7204
      [INFO] [launch]: Default logging verbosity is set to INFO
      [INFO] [robot_state_publisher-1]: process started with pid [7223]
      [INFO] [gzserver-2]: process started with pid [7225]
      [INFO] [gzclient-3]: process started with pid [7227]
      [robot_state_publisher-1] [INFO] [1729703386.123420942] [robot_state_publisher]: got segment base_footprint
      [robot_state_publisher-1] [INFO] [1729703386.128151413] [robot_state_publisher]: got segment base_link
      [robot_state_publisher-1] [INFO] [1729703386.128184433] [robot_state_publisher]: got segment bottom_caster_link
      [robot_state_publisher-1] [INFO] [1729703386.128202032] [robot_state_publisher]: got segment camera_link
      [robot_state_publisher-1] [INFO] [1729703386.128217177] [robot_state_publisher]: got segment front_caster_link
      [robot_state_publisher-1] [INFO] [1729703386.128232110] [robot_state_publisher]: got segment imu_link
      [robot_state_publisher-1] [INFO] [1729703386.128246533] [robot_state_publisher]: got segment laser_cylinder_link
      [robot_state_publisher-1] [INFO] [1729703386.128261343] [robot_state_publisher]: got segment laser_link
      [robot_state_publisher-1] [INFO] [1729703386.128276329] [robot_state_publisher]: got segment left_wheel_link
      [robot_state_publisher-1] [INFO] [1729703386.128290837] [robot_state_publisher]: got segment right_wheel_link
      [gzclient-3] Gazebo multi-robot simulator, version 11.10.2
      [gzclient-3] Copyright (C) 2012 Open Source Robotics Foundation.
      [gzclient-3] Released under the Apache 2 License.
      [gzclient-3] http://gazebosim.org
      [gzclient-3] 
      [gzserver-2] Gazebo multi-robot simulator, version 11.10.2
      [gzserver-2] Copyright (C) 2012 Open Source Robotics Foundation.
      [gzserver-2] Released under the Apache 2 License.
      [gzserver-2] http://gazebosim.org
      [gzserver-2] 
      [gzserver-2] [Msg] Waiting for master.
      [gzserver-2] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
      [gzserver-2] [Msg] Publicized address: 192.168.28.131
      [gzserver-2] [Err] [RTShaderSystem.cc:480] Unable to find shader lib. Shader generating will fail. Your GAZEBO_RESOURCE_PATH is probably improperly set. Have you sourced <prefix>/share/gazebo/setup.bash?
      [gzclient-3] [Msg] Waiting for master.
      [gzclient-3] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
      [gzclient-3] [Msg] Publicized address: 192.168.28.131
      [gzclient-3] [Err] [RTShaderSystem.cc:480] Unable to find shader lib. Shader generating will fail. Your GAZEBO_RESOURCE_PATH is probably improperly set. Have you sourced <prefix>/share/gazebo/setup.bash?
      [gzclient-3] [Wrn] [GuiIface.cc:120] QSocketNotifier: Can only be used with threads started with QThread
      [gzclient-3] [Err] [RenderEngine.cc:197] Failed to initialize scene
      [gzclient-3] [Err] [GLWidget.cc:177] GLWidget could not create a scene. This will likely result in a blank screen.
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
      [gzclient-3] [Err] [WindowManager.cc:139] EXCEPTION: Unable to create the rendering window
      [gzclient-3] 
      [gzclient-3] 
      [gzclient-3] terminate called after throwing an instance of 'gazebo::common::Exception'
      [ERROR] [gzclient-3]: process has died [pid 7227, exit code -6, cmd 'gzclient --verbose'].
      [gzclient-3] 
      
      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        从您提供的错误信息和代码来看,问题主要出现在Gazebo无法正确初始化渲染引擎,这通常与Gazebo的环境变量配置有关,特别是GAZEBO_RESOURCE_PATH。此外,还有一些其他的潜在问题可能导致Gazebo无法正确运行。以下是一些解决步骤和建议:

        1. 确保环境变量设置正确:
          Gazebo需要正确设置环境变量,特别是GAZEBO_RESOURCE_PATH,它包含了Gazebo的资源和插件的路径。通常,在启动Gazebo之前,您应该确保已经执行了类似source /opt/ros/<ros2-distro>/setup.bash和source /opt/ros/<ros2-distro>/share/gazebo/setup.bash(将<ros2-distro>替换为您的ROS 2发行版,如foxy、galactic等)的命令。

          确保这些脚本文件包含正确的路径设置,您可以通过打印环境变量来检查:

          echo $GAZEBO_RESOURCE_PATH
          

          如果路径不正确或为空,您可能需要检查ROS 2和Gazebo的安装是否正确,或者是否需要重新安装或重新配置它们。

        2. 检查Gazebo和ROS 2的版本兼容性:
          确保您安装的Gazebo版本与ROS 2版本兼容。在某些情况下,旧版本的Gazebo可能不完全支持最新的ROS 2特性,反之亦然。

        3. 查看Gazebo的日志文件:
          虽然您已经提供了部分输出,但查看更详细的Gazebo日志文件可能会提供更多线索。通常,这些日志文件位于~/.ros/log/目录下。

        4. 尝试运行简单的Gazebo示例:
          尝试运行Gazebo自带的一些简单示例,如gazebo命令直接启动Gazebo(不带任何模型或世界),看看是否能成功启动。这有助于确定问题是否与您的特定模型或配置相关。

        5. 检查网络配置:
          从日志中看到Gazebo尝试连接到http://127.0.0.1:11345,这通常是正确的。但是,如果您的系统有特殊的网络配置(如VPN、代理或防火墙),可能会影响到Gazebo的通信。

        6. 更新和重新安装:
          如果可能,尝试更新ROS 2和Gazebo到最新版本,或者重新安装它们。有时候,软件包的损坏或安装过程中的错误可能会导致问题。

        7. 查看社区和文档:
          如果上述步骤都不能解决问题,建议查看ROS 2和Gazebo的官方文档,或在ROS 2的社区论坛和GitHub仓库中搜索类似的问题和解决方案。

        通过上述步骤,您应该能够更接近问题的根源,并找到解决方法。如果问题依然存在,可能需要更详细的系统信息和配置来进一步分析。


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

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

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

          @小伊 source /opt/ros/humble/share/gazebo/setup.bash显示bash: /opt/ros/humble/share/gazebo/setup.bash: 没有那个文件或目录

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

            当你遇到错误 bash: /opt/ros/humble/share/gazebo/setup.bash: 没有那个文件或目录 时,这通常意味着在你的 ROS 环境中没有正确地安装或配置 Gazebo。这里有几个步骤可以帮助你解决这个问题:

            1. 确认 Gazebo 是否已安装:
              首先,确保你已经安装了 Gazebo。对于 ROS Humble(即 ROS 2 Noetic 的后续版本),Gazebo 的安装可能会通过不同的包管理器或ROS 2的组件进行。你可以尝试使用以下命令来安装 Gazebo(这取决于你的具体发行版和系统):

              sudo apt update
              sudo apt install ros-humble-gazebo-*
              

              注意:这里的 ros-humble-gazebo-* 只是一个通配符,用于表示安装所有与 Gazebo 相关的 ROS 2 Humble 包。你可能需要具体选择你需要的包,如 ros-humble-gazebo-ros-pkgs。

            2. 检查 Gazebo 的安装位置:
              如果 Gazebo 已安装,但 setup.bash 文件不在预期的位置,可能是因为安装路径与你的环境配置不同。你可以通过查找 Gazebo 的安装位置来确认这一点:

              dpkg -L ros-humble-gazebo-ros-pkgs | grep setup.bash
              

              这个命令会列出所有与 ros-humble-gazebo-ros-pkgs 相关的文件,并过滤出包含 setup.bash 的行。这将帮助你找到正确的 setup.bash 文件的路径。

            3. 修改你的 Bash 脚本或环境配置:
              一旦你找到了正确的 setup.bash 文件路径,你可以修改你的 Bash 脚本或 .bashrc 文件来源这个新的路径。例如:

              source /正确的/路径/到/gazebo/setup.bash
              

              确保替换 /正确的/路径/到/gazebo/setup.bash 为你实际找到的路径。

            4. 重新加载环境配置:
              修改 .bashrc 或其他配置文件后,运行以下命令来重新加载配置:

              source ~/.bashrc
              
            5. 检查 ROS 2 和 Gazebo 的兼容性:
              如果你正在使用 ROS 2 的一个新版本(如 Humble),确保你安装的 Gazebo 版本与 ROS 2 版本兼容。有时候,新版本的 ROS 2 可能需要特定版本的 Gazebo。

            6. 查看文档和社区:
              如果以上步骤都不能解决问题,查看 ROS 2 和 Gazebo 的官方文档或社区论坛可能会提供一些帮助。

            通过以上步骤,你应该能够解决找不到 setup.bash 文件的问题,并成功配置你的 ROS 2 和 Gazebo 环境。


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

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

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

              @小伊 运行dpkg -L ros-humble-gazebo-ros-pkgs | grep setup.bash显示只有
              /opt/ros/humble/share/gazebo_ros_pkgs/local_setup.bash,这是不是表示我的humble中没有setup.bash,要怎么重新安装

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

                在您运行 dpkg -L ros-humble-gazebo-ros-pkgs | grep setup.bash 命令后,结果只显示了 /opt/ros/humble/share/gazebo_ros_pkgs/local_setup.bash,这通常意味着在 ros-humble-gazebo-ros-pkgs 包中,setup.bash 文件不存在于预期的位置,而是存在一个特定的 local_setup.bash 文件。

                对于 ROS(Robot Operating System)的安装和配置,每个包(package)通常会提供一个或多个设置脚本(如 setup.bash、setup.zsh 等),用于在用户的 shell 环境中设置相应的路径和变量。然而,在某些情况下,特别是在一些复杂的软件包或特定的发行版中,这些设置脚本可能会有所不同或位于不同的位置。

                解决方案

                1. 使用 local_setup.bash 文件:
                  既然已经找到了 local_setup.bash 文件,您可以尝试在您的 shell 环境中加载它。这通常是通过在您的 shell 配置文件(如 .bashrc 或 .zshrc)中添加以下行来完成的:

                  source /opt/ros/humble/share/gazebo_ros_pkgs/local_setup.bash
                  

                  然后,您需要重新加载配置文件(例如,通过运行 source ~/.bashrc)或重新启动您的终端会话。

                2. 检查 ROS 环境的整体配置:
                  如果您希望确保 ROS 的整个环境都被正确设置,您可以查看 /opt/ros/humble/ 目录下的其他包是否也包含类似的 setup.bash 或 local_setup.bash 文件。ROS 通常会在其安装目录下的 setup.bash 文件中汇总所有必要的设置,因此您也可以尝试直接 source 这个文件(如果存在):

                  source /opt/ros/humble/setup.bash
                  

                  但是,根据您提供的信息,这似乎不是您的情况。

                3. 重新安装 ROS 包:
                  如果您认为某些文件在安装过程中可能丢失或损坏,您可以尝试重新安装 ROS 包。然而,在大多数情况下,简单地重新安装可能不会恢复丢失的 setup.bash 文件,除非该文件在包的当前版本中已更改位置或名称。不过,这仍然是一个值得尝试的步骤,特别是如果您怀疑安装过程中出现了问题。您可以使用 apt-get 或 apt 命令来重新安装 ROS 包,例如:

                  sudo apt-get install --reinstall ros-humble-gazebo-ros-pkgs
                  
                4. 查看 ROS 官方文档和社区资源:
                  如果上述步骤都不能解决问题,您可能需要查看 ROS 的官方文档或搜索相关的社区论坛和问答网站(如 ROS Answers)。在这些资源中,您可能会找到与您遇到的具体问题相关的解决方案或工作区。

                综上所述,虽然 setup.bash 文件在您的环境中不存在,但您可以通过使用 local_setup.bash 文件来配置您的 ROS 环境。如果这仍然不能满足您的需求,您可以考虑重新安装 ROS 包或查看官方文档和社区资源以获取更多帮助。


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

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

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

                  其他问题都解决了,但是运行的时候还有这个问题没解决,代码如下:

                  wang@wang-virtual-machine:~/desktop/item/chapter6/chapt6_ws$ ros2 launch fishbot_description  gazebo_sim.launch.py
                  [INFO] [launch]: All log files can be found below /home/wang/.ros/log/2024-10-24-02-15-39-514185-wang-virtual-machine-12923
                  [INFO] [launch]: Default logging verbosity is set to INFO
                  [INFO] [robot_state_publisher-1]: process started with pid [12943]
                  [INFO] [gzserver-2]: process started with pid [12945]
                  [INFO] [gzclient-3]: process started with pid [12947]
                  [robot_state_publisher-1] [INFO] [1729707342.338022187] [robot_state_publisher]: got segment base_footprint
                  [robot_state_publisher-1] [INFO] [1729707342.338363753] [robot_state_publisher]: got segment base_link
                  [robot_state_publisher-1] [INFO] [1729707342.338404150] [robot_state_publisher]: got segment bottom_caster_link
                  [robot_state_publisher-1] [INFO] [1729707342.338423257] [robot_state_publisher]: got segment camera_link
                  [robot_state_publisher-1] [INFO] [1729707342.338439390] [robot_state_publisher]: got segment front_caster_link
                  [robot_state_publisher-1] [INFO] [1729707342.338454486] [robot_state_publisher]: got segment imu_link
                  [robot_state_publisher-1] [INFO] [1729707342.338469576] [robot_state_publisher]: got segment laser_cylinder_link
                  [robot_state_publisher-1] [INFO] [1729707342.338484475] [robot_state_publisher]: got segment laser_link
                  [robot_state_publisher-1] [INFO] [1729707342.338499017] [robot_state_publisher]: got segment left_wheel_link
                  [robot_state_publisher-1] [INFO] [1729707342.338513847] [robot_state_publisher]: got segment right_wheel_link
                  [gzclient-3] Gazebo multi-robot simulator, version 11.10.2
                  [gzclient-3] Copyright (C) 2012 Open Source Robotics Foundation.
                  [gzclient-3] Released under the Apache 2 License.
                  [gzclient-3] http://gazebosim.org
                  [gzclient-3] 
                  [gzserver-2] Gazebo multi-robot simulator, version 11.10.2
                  [gzserver-2] Copyright (C) 2012 Open Source Robotics Foundation.
                  [gzserver-2] Released under the Apache 2 License.
                  [gzserver-2] http://gazebosim.org
                  [gzserver-2] 
                  [gzclient-3] [Msg] Waiting for master.
                  [gzclient-3] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
                  [gzclient-3] [Msg] Publicized address: 192.168.28.131
                  [gzclient-3] [Wrn] [GuiIface.cc:120] QSocketNotifier: Can only be used with threads started with QThread
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:132]  Unable to create the rendering window
                  [gzclient-3] [Err] [WindowManager.cc:139] EXCEPTION: Unable to create the rendering window
                  [gzclient-3] 
                  [gzclient-3] 
                  [gzclient-3] terminate called after throwing an instance of 'gazebo::common::Exception'
                  [ERROR] [gzclient-3]: process has died [pid 12947, exit code -6, cmd 'gzclient --verbose'].
                  [gzclient-3] 
                  
                  
                  小鱼小 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @2352947187
                    最后由 编辑

                    @2352947187 什么系统平台

                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                    2 1 条回复 最后回复 回复 引用 0
                    • 2
                      2352947187 @小鱼
                      最后由 编辑

                      @小鱼已经解决了,是多安装了一个包的问题,谢谢啦

                      俄 P 2 条回复 最后回复 回复 引用 0
                      • 俄
                        俄格啊 @2352947187
                        最后由 编辑

                        @2352947187 请问是多安装了一个什么包呀,我也遇见了一样的问题,有点不知道怎么解决

                        俄 1 条回复 最后回复 回复 引用 0
                        • 俄
                          俄格啊 @俄格啊
                          最后由 编辑

                          @俄格啊 我把wayland换成了X11好像就不报错了

                          1 条回复 最后回复 回复 引用 0
                          • P
                            Pluto_Lag @2352947187
                            最后由 编辑

                            @2352947187 在 运行launch fishbot_description gazebo_sim.launch.py时报错,无法打开gazebo 中说:

                            @小鱼已经解决了,是多安装了一个包的问题,谢谢啦

                            我也遇到了同样的问题。我是先按小鱼教程中sudo apt install ros-$ROS_DISTRO-gazebo-ros-pkgs,后面又sudo apt install ros-humble-gazebo-*可能装了其他包发生了冲突,只要sudo apt remove ros-humble-gazebo-*后再重新下载就可以了

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