在使用新版 Gazebo Sim (gz sim) 加载模型时,最常遇到的报错是 Could not resolve fileUnable to find or download file。这通常是因为下载的模型使用了相对路径,而 Gazebo 引擎无法正确解析。

以下是通过手动修改 URI 路径彻底解决该问题的标准流程:

1. 核心原因

Gazebo Sim 在加载模型时,会脱离当前终端的工作目录,去全局的资源路径(即环境变量 $GZ_SIM_RESOURCE_PATH)中寻找资源。因此,SDF 文件中直接使用 mesh/xxx.dae 这种相对路径极易失效。

2. 前置条件:检查环境变量

确保你的模型根目录已正确配置在环境变量中。在终端执行:

echo $GZ_SIM_RESOURCE_PATH

注:输出结果中必须包含你存放模型的父目录(例如 /home/xx/gazebo_models)。

3. 手动修复步骤

第一步:修复模型定义文件 (model.sdf)

打开报错模型文件夹下的 model.sdf,找到 <mesh> 标签,将相对路径修改为标准的 model:// 协议格式。

修改前:

<uri>mesh/foldable_chair.dae</uri>

修改后:

<uri>model://foldable_chair/mesh/foldable_chair.dae</uri>

路径解析逻辑:model:// + 模型文件夹名(foldable_chair) + 内部相对路径(mesh/foldable_chair.dae)

第二步:修复世界文件 (myworld.sdf)

如果你的世界文件中也直接引用了该模型,同样需要修改。在世界文件中,只需引用到模型文件夹即可,Gazebo 会自动读取其中的 model.sdf

修改前:

<uri>mesh/foldable_chair.dae</uri>

修改后:

<uri>model://foldable_chair</uri>

4. 验证与启动

修改完成后运行:

gz sim myworld.sdf

避坑指南

  1. 大小写敏感:Linux 系统对文件名严格区分大小写,请确保 SDF 中填写的 foldable_chair.dae 与实际文件名一字不差。
  2. 名称一致性model.config 文件中的 <name> 标签必须与模型文件夹名称、以及 SDF 中 model:// 后面的名称完全一致。
  3. 保存权限:如果在 Gazebo 界面中点击保存时报错,请检查是否试图将文件保存在系统根目录 / 下,请将其保存至用户主目录(如 ~/)。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐