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

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

    已定时 已固定 已锁定 已移动
    动手学ROS2
    gazebo urdf stl meshes
    13
    16
    11.0k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 、
      、捶你胸口 @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
                  • 来
                    来自北方的狼 @2177527864
                    最后由 编辑

                    @2177527864 我这边也是,加载到gazebo里面的时候,控制台打印出:
                    robot_state_publisher-2] Error: No link elements found in urdf file
                    [robot_state_publisher-2] at line 206 in ./urdf_parser/src/model.cpp
                    [robot_state_publisher-2] Failed to parse robot description using: urdf_xml_parser/URDFXMLParser
                    但是能加载进来模型,这个对后面的操作有影响吗

                    5 1 条回复 最后回复 回复 引用 0
                    • 5
                      542865718 @来自北方的狼
                      最后由 编辑

                      @来自北方的狼 解决了嘛,我按照上述配置依然不可以

                      1 条回复 最后回复 回复 引用 0
                      • T
                        Tree
                        最后由 编辑

                        可能是解析路径的写法上的问题。
                        <mesh filename="file://$(find XBot)/meshes/base_link.STL" />这种是ros1的写法,
                        <mesh filename="package://XBot/meshes/base_link.STL"/>是ros2推荐的写法,但是gazebo11可能解析不了后一种写法,换成前一种应该就可以了。
                        我在使用moveit2配置助手的时候也遇到过这种问题。

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