德雷克中基于网格的碰撞几何

Mesh based collision geometry in drake

我想基于物理引擎生成用于感知和抓取的数据集。我尝试将 google research 最近 ( https://app.ignitionrobotics.org/GoogleResearch ) 发布的以下 3D 模型导入 drake 并为各种鞋子创建分割数据集,即将网格放入 bin/让它静止并读取 rgb / 深度和分割图像。

然而,在 drake 中将对象网格(.obj 文件)指定为碰撞几何体似乎不起作用,因为鞋子只是穿过垃圾箱并不断掉入深渊(附加快照)。

我还注意到 YCB 对象具有使用简单框和点接触描述的碰撞几何。这是相同的可视化(您可能已经熟悉)。绿色是碰撞几何。

如果我必须模拟以上内容,我是否需要为 google 研究数据集中的所有对象描述简单的几何形状?如果是这样,它们是如何产生的?是否有一些工具可以用来生成这个或者它是手动完成的?或者当网格用于碰撞几何体时,我应该启用水弹性接触模拟吗?

如果它可以处理任何凸网格,另一种方法是将原始网格的凸包作为碰撞几何体。

作为替代方案,我尝试了与 pybullet 相同的方法。我没有使用垃圾桶,而是使用了飞机。 Pybullet 似乎正在处理将网格指定为正确通过的碰撞几何体。这是pybullet中数据的快照。

中间解决方案(尚未解决抓取部分):

在与 Sean & Russ 讨论后,我创建了三角形网格的凸包(使用 open3D),看起来使用这个凸包作为碰撞网格和网格标签的 <drake:declare_convex/> 注释,鞋子来了到稳定的姿势。我认为这个解决方案足以让我使用 drake 生成感知数据。这是使用以下解决方案后的快照:

你的观察很准确。

Drake 目前不支持用于接触的任意网格(也称为“接近”角色)(仅用于“插图”和“感知”)。事实上,如果您可以使用控制台,则可能会打印出警告信息来指示。在添加该功能之前,您有以下选择:

  • 正如您在 YCB 数据中观察到的那样,引入简单的基元来近似网格。目前,还没有用于生成简单表示的公开技术。这主要是一种临时的 by-hand 方法。
  • 加载代表真正凸多面体的 OBJ,并添加 <drake:declare_convex> 标记作为 <mesh> 几何体的子对象。这将通知 Drake 期望 支持接触的凸网格。因此,如果您可以轻松创建凸包,那可能是一个不错的方向。

很难推荐使用水弹性接触。它还没有准备好实际使用并且有一些限制(这些限制可能对您来说太成问题了)。如果您有兴趣进一步调查,我们可以探讨一下。但就目前而言,我建议您对对象进行一些凸表示。