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

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

    已定时 已固定 已锁定 已移动
    动手学ROS2
    gazebo urdf stl meshes
    11
    14
    4.6k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 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
                      • 来
                        来自北方的狼 @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
                        但是能加载进来模型,这个对后面的操作有影响吗

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