有没有办法将本地 SDF 文件包含在 pydrake 的场景 YAML 文件中?

问题描述 投票:0回答:1

在开发我们的机器人项目时,我们希望混合使用我们自己编写的本地 SDF 文件以及 pydrake/manipulation 包中的文件。我们在操作课程中找到的所有 yaml 文件示例都是以下形式之一:

- add model:
    ...
    file: file://absolute/path/to/file.sdf
    ...

或者以下形式(魔方示例甚至将SDF文件写入操作包库来使用它)。

- add model:
    ...
    file: package://package_name/path/to/file.sdf
    ...

因为我们正在使用自己的 SDF 文件进行开发,所以前者似乎是一个更好的选择,但最终我们得到的 yaml 文件如下所示,在 git 中合并版本时很难维护。

- add model:
    ...
    file: file://absolute/path/to/project/on/my/computer/filename.sdf
    ...

我们当前的技巧是添加一个“gen_scenario_yaml.py”文件,该文件在导入时生成具有相关绝对基本路径的 yaml。另一种选择是写入操作/pydrake 包目录(尽管 git 不会拾取该目录)。 有更优雅的解决方案吗?

我们尝试设置

file://./relative/path/to/file.sdf
形式的路径,但这会引发错误。 我们还有一个临时生成 yaml 文件的 hacky 解决方案,它可以工作,但并不优雅。

python robotics drake
1个回答
0
投票

是的!您可以通过为文件创建本地包来完成此操作。首先,在所有 SDF 文件所在的同一文件夹中创建一个

package.xml
文件以加载它们。
package.xml
文件应如下所示...

<?xml version="1.0"?>
<package>
  <name>PACKAGE_NAME_HERE</name>
</package>

然后您应该能够将该文件夹中的任何 SDF 引用到您的 .yaml 文件中,如下所示...

file: package://PACKAGE_NAME_HERE/SDF_NAME_HERE.sdf
© www.soinside.com 2019 - 2024. All rights reserved.