Collision detection drake中基于网格的碰撞几何

Collision detection drake中基于网格的碰撞几何,collision-detection,drake,Collision Detection,Drake,我想基于物理引擎生成感知和抓取的数据集。我尝试将google research最近发布的以下3D模型()导入drake,并为各种鞋子创建分割数据集,即将网格放入箱子/让它静止,并读取rgb/深度和分割图像 但是,在drake中将对象网格(.obj文件)指定为碰撞几何体似乎不起作用,因为鞋子只是穿透箱子并不断掉进深渊(附加快照) 我还注意到,YCB对象具有使用简单长方体和点接触描述的碰撞几何体。这里是相同的可视化(您可能已经很熟悉)。绿色是碰撞几何体 如果我必须模拟上述情况,我是否需要描述go

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

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

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

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

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

另外,我也用pybullet做了同样的尝试。我用的不是垃圾箱,而是飞机。Pybullet似乎正在正确处理将网格指定为碰撞几何体的操作。这是Pybill中数据的快照

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

在与Sean&Russ讨论后,我创建了三角形网格的凸面外壳(使用open3D),似乎使用该凸面外壳作为碰撞网格和网格标记的注释,鞋子会进入稳定姿势。我认为这个解决方案对我来说足够好,可以使用drake生成感知数据。以下是使用以下解决方案后的快照:


你的观察是准确的

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

  • 正如您在YCB数据中所观察到的,引入简单的基本体来近似网格。目前,还没有发布用于生成简单表示的技术。这主要是一种临时的、手工的方法
  • 加载表示真正凸多面体的OBJ,并添加
    标记作为
    几何体的子对象。这将告诉德雷克,希望有一个接触支撑的凸面网格。因此,如果您可以轻松创建凸面外壳,这可能是一个很好的方向

很难推荐使用水弹性接触。它还没有准备好真正使用,并且有一些限制(这些限制可能对您来说太麻烦了)。如果你有兴趣进一步调查,我们可以研究一下。但现在,我推荐一些对象的凸面表示。

谢谢肖恩。您(和其他drake开发人员)是否可以在这里补充一下您的想法,为什么drake在其他模拟器出现时不处理通用网格?对于愿意为德雷克社区做出贡献的人,有什么建议可以帮助改善这种情况吗?(例如,提供一个脚本,调用诸如meshlab之类的工具来生成凸分解等)?或者我们甚至可以分享一部分我们在采用新模型时遵循的说明?谢谢Sean和Russ。Open3D似乎具有生成任意三角形网格的凸包的功能。按照你的建议,现在它似乎解决了稳定的姿势后下降。然而,这对抓取意味着什么?我无法用鞋帮抓住鞋子,因为碰撞几何不允许?仅供参考,我相信子弹也需要凸面碰撞形状(至少对于移动物体),但可能会自动为鞋子生成凸面外壳。一般网格存在多个挑战。一是它们是否为闭流形的问题;是否有一个适当的“内部”和“外部”?如果不这样做,最好是定义到曲面的距离(严格来说是正的),而不能得到负距离(内部)。在计算上,即使它是正确闭合的,也很难计算非凸形状的穿透深度(更倾向于凸分解)。有办法解决这些问题,德雷克只是还没有付出代价。至于使用凸面外壳:如果网格上的特征消失在外壳内,但它仍然是一个重要的交互特征,那么你需要进行凸面分解。分解网格并创建块的凸面外壳。为您提供所需功能的最小件数。