小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
gazebo无法加载带有STL资源的urdf
-
环境:
虚拟机Ubuntu22.04,ros2 humble
问题描述:
参照《动手学ROS2》的“第三章建模仿真篇”搭建的小车模型可以顺利地在gazebo仿真。自己从solidworks上导出来的URDF(包含STL格式的meshes资源),rviz可以正常加载模型,但gazebo加载失败,软件直接卡死。
具体细节和上下文:
URDF含STL的对应脚本为:
<mesh filename="package://XBot/meshes/base_link.STL"/>
如果把以上屏蔽,将mesh改成其他geometry简单几何体,gazebo能正常加载。尝试过的解决方法:
- 参照https://robotics.stackexchange.com/questions/25224/gazebo-not-running-when-i-try-to-load-stl-files
将package改成file,也无效。
<mesh filename="file:///$(find XBot)/XBot/meshes/base_link.STL"/> - 参照https://ros-users.narkive.com/zdLA8RCV/error-loading-stl-mesh-into-gazebo-ogre
设置GAZEBO_RESOURCE_PATH环境变量,也不生效
- 参照https://robotics.stackexchange.com/questions/25224/gazebo-not-running-when-i-try-to-load-stl-files
-
@250893029 package://XBot/meshes/base_link.STL 是找在install/share下的文件,你可以去路径里看一下,colcon build & source install setup.bash 后在install/XBot/share/XBot/meshes里有没有对应文件。
没有的话,需要去 XBot/setup.py 里把meshes 什么的加进去
data_files=[..., (os.path.join('share', package_name, 'meshes'), glob(os.path.join('meshes, '*.*'))), ... ]
-
@372365381 谢谢,我在setup.py里面加了meshes资源,加了后,rviz才能成功显示模型,但gazebo还是无效
-
后来自己摸索着解决了。
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 -
@250893029 你好,我也遇到了相同的问题,复制您的代码时显示函数get_package_prefix报错,请问这个函数是那里引入的
-
@250893029 可以把完整的launch文件发出来吗?
-
@250893029 你好,可以把launch文件的具体内容分享一下吗,加了语句之后还是各种报错
-
@3164066018
要在package中加入这个,在YT上看一个俄罗斯大哥提到的