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

    gazebo无法加载带有STL资源的urdf

    已定时 已固定 已锁定 已移动
    动手学ROS2
    gazebo urdf stl meshes
    10
    13
    4.3k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      Benny
      最后由 编辑

      后来自己摸索着解决了。
      URDF里面依然采用 <mesh filename="package://.... />
      但在launch文件里要配置GAZEBO_MODEL_PATH环境变量
      pkg_share = os.pathsep + os.path.join(get_package_prefix(package_name), 'share')

      if 'GAZEBO_MODEL_PATH' in os.environ:
      os.environ['GAZEBO_MODEL_PATH'] += pkg_share
      else:
      os.environ['GAZEBO_MODEL_PATH'] = pkg_share

      3 Z 、 2 4 条回复 最后回复 回复 引用 1
      • 3
        等待修复 @250893029
        最后由 编辑

        @250893029 你好,我也遇到了相同的问题,复制您的代码时显示函数get_package_prefix报错,请问这个函数是那里引入的

        G 1 条回复 最后回复 回复 引用 0
        • Z
          Free Loop @250893029
          最后由 编辑

          @250893029 可以把完整的launch文件发出来吗?

          wty-yyW 1 条回复 最后回复 回复 引用 0
          • 、
            、捶你胸口 @250893029
            最后由 编辑

            @250893029 你好,可以把launch文件的具体内容分享一下吗,加了语句之后还是各种报错

            L 1 条回复 最后回复 回复 引用 0
            • G
              GHFG-98 @3164066018
              最后由 GHFG-98 编辑

              @3164066018 4129f7d1-f9f7-42ee-9c7d-ff1fdd4b873b-图片.png
              要在package中加入这个,在YT上看一个俄罗斯大哥提到的🤗

              凄凉的泪水凄 1 条回复 最后回复 回复 引用 0
              • 凄凉的泪水凄
                凄凉的泪水 @GHFG-98
                最后由 编辑

                @GHFG-98 你好 我也是遇到了这样的问题,ros2 humble加载gazebo11,但无法识别urdf或者xacro文件中mesh的模型资源
                f94658c2-2a76-4485-8a47-f036d6f548fd-image.png
                我在package.xml中加入了
                563c8a7d-3dc8-4bba-8497-89666f61557b-image.png
                但是依然无法加载
                9500482f-0537-4d70-933e-fc9565d5ee63-image.png
                我在launch.py中有如下配置,但也无效。
                45f05143-1351-42fa-a254-67fa3434ca38-image.png
                git@github.com:QILIANGDELEISHUI/ROS2-sw_urdf_GAZEBO.git这是源文件的仓库地址。如果您能回复,万分感激。

                1 条回复 最后回复 回复 引用 0
                • wty-yyW
                  wty-yy @zzpcp3
                  最后由 编辑

                  @zzpcp3 @3164066018 @捶你胸口 @凄凉的泪水
                  我在gazebo.launch.py中加入的代码是这样的

                  from ament_index_python.packages import get_package_prefix
                  
                  package_name = 'cubot_v2_sw2urdf'
                  pkg_share = os.pathsep + os.path.join(get_package_prefix(package_name), 'share')
                  if 'GAZEBO_MODEL_PATH' in os.environ:  # 如果你修改了~/.bashrc, 就会执行这个
                      os.environ['GAZEBO_MODEL_PATH'] += pkg_share
                  else:  # 注意此处gazebo-11修改为你的gazebo版本
                      os.environ['GAZEBO_MODEL_PATH'] = "/usr/share/gazebo-11/models" + pkg_share
                  

                  注意把gazebo-11替换为你的gazebo版本,可以先去找找对应的路径是否存在

                  全部的sw转urdf流程可以在我的blog里面看看

                  完整launch文件如下

                  import launch
                  import launch_ros
                  from ament_index_python.packages import get_package_share_directory, get_package_prefix
                  from launch.launch_description_sources import PythonLaunchDescriptionSource
                  import os
                  
                  
                  def generate_launch_description():
                      # Get default path
                      robot_name_in_model = "cubot_v2_sw2urdf"
                      urdf_tutorial_path = get_package_share_directory('cubot_v2_sw2urdf')
                      default_model_path = os.path.join(
                          urdf_tutorial_path, 'urdf', 'cubot_v2_sw2urdf.urdf')
                  
                      # Read URDF file content
                      with open(default_model_path, 'r') as urdf_file:
                          robot_description = urdf_file.read()
                  
                      robot_state_publisher_node = launch_ros.actions.Node(
                          package='robot_state_publisher',
                          executable='robot_state_publisher',
                          parameters=[{'robot_description': robot_description}]
                      )
                  
                      # Include another launch file for Gazebo
                      launch_gazebo = launch.actions.IncludeLaunchDescription(
                          PythonLaunchDescriptionSource([get_package_share_directory(
                              'gazebo_ros'), '/launch', '/gazebo.launch.py']),
                      )
                  
                      # Request Gazebo to spawn the robot
                      spawn_entity_node = launch_ros.actions.Node(
                          package='gazebo_ros',
                          executable='spawn_entity.py',
                          arguments=['-topic', '/robot_description',
                                     '-entity', robot_name_in_model])
                  
                      package_name = 'cubot_v2_sw2urdf'
                      pkg_share = os.pathsep + os.path.join(get_package_prefix(package_name), 'share')
                      if 'GAZEBO_MODEL_PATH' in os.environ:
                          os.environ['GAZEBO_MODEL_PATH'] += pkg_share
                      else:
                          os.environ['GAZEBO_MODEL_PATH'] = "/usr/share/gazebo-11/models" + pkg_share
                  
                      return launch.LaunchDescription([
                          robot_state_publisher_node,
                          launch_gazebo,
                          spawn_entity_node
                      ])
                  
                  、 1 条回复 最后回复 回复 引用 0
                  • 、
                    、捶你胸口 @wty-yy
                    最后由 编辑

                    @wty-yy 感谢!~

                    1 条回复 最后回复 回复 引用 0
                    • L
                      lenxixi @、捶你胸口
                      最后由 编辑

                      2025-04-13 14-06-18屏幕截图.png
                      这是我加入上述代码后的launch文件,可以正常运行

                      1 条回复 最后回复 回复 引用 0
                      • 2
                        2177527864 @250893029
                        最后由 编辑

                        @250893029 这个有点奇怪,会报一个找不到model的报错但是可以运行,我修复这个报错后就会卡死

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