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

    关于自定义机器人的meshes文件夹加载问题

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

      我的一个机器人模型有一串:

          <visual>
            <origin rpy="0 0 1.5707963267948966" xyz="0 0 0"/>
            <geometry>
              <mesh filename="package://wx250s/meshes/wx250s_1_base.stl" scale="0.001 0.001 0.001"/>
            </geometry>
            <material name="interbotix_black"/>
          </visual>
      

      launch.py:

          ld = LaunchDescription()
          pkg_share = FindPackageShare(package=package_name).find(package_name)
          urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')
          # Start Gazebo server
          start_gazebo_cmd =  ExecuteProcess(
              cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so'],
              output='screen')
          # Launch the robot in Gazebo
          spawn_entity_cmd = Node(
              package='gazebo_ros', 
              executable='spawn_entity.py',
              arguments=['-entity', robot_name_in_model, '-file', urdf_model_path],
              output='screen')
      

      这个在spawn传递时会导致gazebo无响应;只运行start_gazebo_cmd时,gazebo可以运行,使用rqt的spawn的cll会报错:

      [gazebo-1] [Wrn] [FuelModelDatabase.cc:313] URI not supported by Fuel [model://wx250s/meshes/wx250s_1_base.stl]
      [gazebo-1] [Wrn] [SystemPaths.cc:459] File or path does not exist [""] [model://wx250s/meshes/wx250s_1_base.stl]
      [gazebo-1] [Err] [Visual.cc:2956] No mesh specified
      

      如果在udrf中使用绝对地址:

          <visual>
            <origin rpy="0 0 1.5707963267948966" xyz="0 0 0"/>
            <geometry>
              <mesh filename="/home/fan/vla/src/wx250s/meshes/wx250s_1_base.stl" scale="0.001 0.001 0.001"/>
            </geometry>
            <material name="interbotix_black"/>
          </visual>
      

      这样gazebo可以看到模型,但是rviz2不能加载了。
      以下的方法为尝试了均没有作用:

      需要在package.xml文件的<export>标签中加入一行代码
      <gazebo_ros gazebo_model_path="${prefix}/.."/>
      作用为:通过该行语句可以修改ROS2的markerfile从而使得urdf文件中的package://能够正确解析到install/packagename/share中
      
      <mesh filename="file://$(find test_robot)/src/description/meshes/test_robot.stl"/>
      

      这是我的文件结构:

      src
          └── wx250s
              ├── launch
              │   └── display_wx250s.launch.py
              ├── meshes
              │   ├── interbotix_black.png
              │   ├── wx250s_10_gripper_finger.stl
              │   ├── wx250s_11_ar_tag.stl
              │   ├── wx250s_1_base.stl
              │   ├── wx250s_2_shoulder.stl
              │   ├── wx250s_3_upper_arm.stl
              │   ├── wx250s_4_upper_forearm.stl
              │   ├── wx250s_5_lower_forearm.stl
              │   ├── wx250s_6_wrist.stl
              │   ├── wx250s_7_gripper.stl
              │   ├── wx250s_8_gripper_prop.stl
              │   └── wx250s_9_gripper_bar.stl
              ├── package.xml
              ├── resource
              │   └── wx250s
              ├── setup.cfg
              ├── setup.py
              ├── test
              │   ├── test_copyright.py
              │   ├── test_flake8.py
              │   └── test_pep257.py
              ├── urdf
              │   └── wx250s.urdf
              └── wx250s
                  └── __init__.py
      

      还有

      install
      │   ├── COLCON_IGNORE
      │   ├── local_setup.bash
      │   ├── local_setup.ps1
      │   ├── local_setup.sh
      │   ├── _local_setup_util_ps1.py
      │   ├── _local_setup_util_sh.py
      │   ├── local_setup.zsh
      │   ├── setup.bash
      │   ├── setup.ps1
      │   ├── setup.sh
      │   ├── setup.zsh
      │   └── wx250s
      │       ├── lib
      │       │   └── python3.10
      │       │       └── site-packages
      │       │           ├── wx250s
      │       │           │   ├── __init__.py
      │       │           │   └── __pycache__
      │       │           │       └── __init__.cpython-310.pyc
      │       │           └── wx250s-0.0.0-py3.10.egg-info
      │       │               ├── dependency_links.txt
      │       │               ├── entry_points.txt
      │       │               ├── PKG-INFO
      │       │               ├── requires.txt
      │       │               ├── SOURCES.txt
      │       │               ├── top_level.txt
      │       │               └── zip-safe
      │       └── share
      │           ├── ament_index
      │           │   └── resource_index
      │           │       └── packages
      │           │           └── wx250s
      │           ├── colcon-core
      │           │   └── packages
      │           │       └── wx250s
      │           └── wx250s
      │               ├── hook
      │               │   ├── ament_prefix_path.dsv
      │               │   ├── ament_prefix_path.ps1
      │               │   ├── ament_prefix_path.sh
      │               │   ├── pythonpath.dsv
      │               │   ├── pythonpath.ps1
      │               │   └── pythonpath.sh
      │               ├── launch
      │               │   ├── display_wx250s.launch.py
      │               │   └── __pycache__
      │               │       └── display_wx250s.launch.cpython-310.pyc
      │               ├── meshes
      │               │   ├── interbotix_black.png
      │               │   ├── wx250s_10_gripper_finger.stl
      │               │   ├── wx250s_11_ar_tag.stl
      │               │   ├── wx250s_1_base.stl
      │               │   ├── wx250s_2_shoulder.stl
      │               │   ├── wx250s_3_upper_arm.stl
      │               │   ├── wx250s_4_upper_forearm.stl
      │               │   ├── wx250s_5_lower_forearm.stl
      │               │   ├── wx250s_6_wrist.stl
      │               │   ├── wx250s_7_gripper.stl
      │               │   ├── wx250s_8_gripper_prop.stl
      │               │   └── wx250s_9_gripper_bar.stl
      │               ├── package.bash
      │               ├── package.dsv
      │               ├── package.ps1
      │               ├── package.sh
      │               ├── package.xml
      │               ├── package.zsh
      │               └── urdf
      │                   └── wx250s.urdf
      

      这怎么解决呢?

      3 1 条回复 最后回复 回复 引用 0
      • 3
        3025832761 @3025832761
        最后由 编辑

        @3025832761 我用了moveit2的一个示例机器人模型ec66_description.udrf,里面也是有外接的meshes文件,按照我的launch.py运行,也是和wx250s.udrf一样的问题,这是哪出了问题?

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