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

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

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

      @372365381 谢谢,我在setup.py里面加了meshes资源,加了后,rviz才能成功显示模型,但gazebo还是无效

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