紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
关于自定义机器人的meshes文件夹加载问题
-
我的一个机器人模型有一串:
<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>
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
这怎么解决呢?
-
@3025832761 我用了moveit2的一个示例机器人模型ec66_description.udrf,里面也是有外接的meshes文件,按照我的launch.py运行,也是和wx250s.udrf一样的问题,这是哪出了问题?