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

    ros2-jazzy和gazebo-harmonic新版本运行gazebo_sim.launch.py显示找不到gazebo_ros包

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

      问题描述:
      gazebo_sim.launch.py```
      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,
      ])
      
      报错信息:
      ![26cc035c-8f3a-428e-a14c-3733c3c36109-图片.png](/forum/assets/uploads/files/1730107482618-26cc035c-8f3a-428e-a14c-3733c3c36109-图片-resized.png) 
      具体日志如下:```
      wang@wang-System-Product-Name:~/Desktop/ros2bookcode/chapt6/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-28-17-23-11-619610-wang-System-Product-Name-24342
      [INFO] [launch]: Default logging verbosity is set to INFO
      [ERROR] [launch]: Caught exception in launch (see debug for traceback): Caught multiple exceptions when trying to load file of format [py]:
       - PackageNotFoundError: "package 'gazebo_ros' not found, searching: ['/home/wang/Desktop/ros2bookcode/chapt6/chapt6_ws/install/fishbot_description', '/opt/ros/jazzy']"
       - InvalidFrontendLaunchFileError: The launch file may have a syntax error, or its format is unknown
      

      ros2-jazzy新版本好像没有了gazebo-ros2了,对应的类似的安装命令现在是什么啊

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

        在 ROS 2 的新版本中,尤其是 ROS 2 Jazzy 和更高版本,gazebo_ros 包已经被重构和重命名为 gazebo_ros2,并且它的安装和配置方式也发生了变化。gazebo_ros 曾是 ROS 1 与 Gazebo 集成的包名,而 ROS 2 使用 gazebo_ros2。

        针对你遇到的问题,你需要确保安装了正确的 Gazebo 和 ROS 2 的集成包。以下是如何在 ROS 2 Jazzy 中安装和配置 Gazebo 的步骤:

        1. 安装 Gazebo:
          首先,你需要确保系统上安装了 Gazebo。对于 Ubuntu,你可以使用以下命令安装 Gazebo(例如,Gazebo 11):

          sudo apt-get update
          sudo apt-get install gazebo11
          

          注意:确保安装的 Gazebo 版本与 ROS 2 版本兼容。

        2. 安装 ROS 2 与 Gazebo 的集成包:
          使用 ROS 2 的包管理工具 rosdep 来安装 gazebo_ros2 相关的包。首先,确保你的 rosdep 初始化并更新到最新:

          sudo rosdep init
          rosdep update
          

          然后,安装 gazebo_ros2 包:

          rosdep install --from-paths src --ignore-src --rosdistro jazzy -y
          

          注意:这里的 src 是你的 ROS 2 工作空间的源代码目录,其中应该包含 gazebo_ros2 的仓库(如果你从源代码构建的话)。如果你使用的是二进制安装,可能需要查找适合你的 ROS 2 版本的 Gazebo 集成包。

        3. 构建你的工作空间:
          如果你从源代码安装了 gazebo_ros2,确保你的工作空间包含了 gazebo_ros2 的仓库,并构建你的工作空间:

          cd ~/your_ros2_workspace  # 替换为你的 ROS 2 工作空间目录
          colcon build
          
        4. 修改你的 launch 文件:
          在你的 gazebo_sim.launch.py 文件中,确保引用的是正确的包名和路径。由于你提到 gazebo_ros 找不到,你应该将 gazebo_ros 替换为 gazebo_ros2:

          launch_gazebo = launch.actions.IncludeLaunchDescription(
              PythonLaunchDescriptionSource([get_package_share_directory(
                  'gazebo_ros2'), '/launch', '/gazebo.launch.py']),
              launch_arguments=[('world', default_world_path),('verbose','true')]
          )
          
        5. 运行你的 launch 文件:
          确保所有设置正确后,尝试再次运行你的 launch 文件:

          ros2 launch fishbot_description gazebo_sim.launch.py
          

        如果以上步骤正确无误,你应该能够成功运行 Gazebo 和你的 ROS 2 节点。如果仍然遇到问题,检查你的 ROS 2 环境变量设置、Gazebo 版本兼容性以及任何可能的依赖问题。


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

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

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @2352947187
          最后由 编辑

          @2352947187 这个包是针对 gazebo classic 写的,书和视频都有讲

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

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

            @小鱼 那24.04可以安装classic吗

            李 1 条回复 最后回复 回复 引用 0
            • 李
              李大仁 @1524428534
              最后由 编辑

              @1524428534 求问能安装classic吗
              不想重装22,还有其他解决办法吗

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