gpt4 book ai didi

drake - Drake 中的接触机制

转载 作者:行者123 更新时间:2023-12-01 23:29:04 27 4
gpt4 key购买 nike

我有一个关于 Drake 接触机制准确性的一般性问题。到目前为止,我已经尝试了一些不同的开源机器人仿真工具。它们在模拟两个网格物体之间的接触时似乎都存在相同的问题,即物体不稳定并相互脱落。例如。在 Gazebo 中,我尝试堆叠两个网格物体(参见 https://youtu.be/_4qQh3pvAZ8)但没有成功。

我正在尝试使用强化学习来学习装配任务。 RL 在收敛到有效策略之前需要大量迭代(模拟)。由于 RL 需要在合理的时间内学习一些东西,因此不可能提高准确性(通过减小步长),因为这也会过多地增加计算时间。最后,唯一的解决方案是使用 Adams,这是一个(昂贵的)多体力学软件工具箱,可以更自由地优化两个特定对象之间的接触。我还尝试了模拟器 Klampt,其中接触更准确,但它还在每个对象周围添加了一层。

今天我遇到了 Drake,并在视频中看到接触机制非常准确。但是大多数对象似乎是非网格对象( block 和圆柱体),其行为更容易近似。所以我想知道德雷克是否也表现出不准确的行为,就像视频一样,网格对象相互堆叠?另外,模拟的速度是否与现实世界的速度大致相同?

最佳答案

我无法具体评论可能导致您在其他应用程序(例如 Gazebo)中不稳定的原因,但我可以阐明 Drake 中的接触稳定性。

Drake 的默认接触模型是一种非常常用的“点接触”模型(已讨论 here)。给定两个接触的物体,检测到代表性碰撞几何形状之间的交点,并通过代表最大穿透量的一对点报告穿透的(并在该接触点施加力) .

对于平面上的球体,这就足够了,因为刚性球体和平面之间的接触一个点。对于堆叠箱子,这是一个很差的近似值;两个堆叠的盒子之间的接触界面不是一个点,而是一个多边形,力将在整个接触界面上施加。将其表示为一个点会引入人工扭矩。

Drake 有一个额外的联系人模型——一个目前正在开发中且不完整的模型。它被称为“水弹性”接触,它不是通过单点测量来表示接触,而是计算整个接触表面,将接触力分布在整个表面上。正如您想象的那样,这会导致更稳定的接触。但是,由于该模型不完整,因此对您如何使用它以及何时真正提供值(value)存在限制。但是,该功能在 Drake 的公共(public) API 中可用,您可以自由研究它。可以找到表征的基本解释 here .

根据以上细节进一步思考:

  1. 一般的非凸网格。

    • 对于点接触模型,不直接支持非凸网格。相反,它使用该网格的隐式凸包(这会对性能产生负面影响)。如果您知道网格是凸面的,则可以将其声明为凸面,Drake 可以使用可以提高效率的技术。
    • 水弹性接触模型确实支持非凸网格,但它们必须用于严格的“刚性”对象。该模型仅计算软体和刚性物体之间的接触。因此,如果您希望计算两个非凸面网格之间的接触,您将无法使用此模型。在当前状态下,您需要将事物建模为刚性网格和软基元之间的接触。 (例如,您可以创建一个“软”盒子作为 table ,并在其上稳定地放置任意数量的刚性非凸面网格,但这些刚性物体之间的接触将不稳定) .
  2. 稳定联系的技巧

    • 在与点接触模型接触时获得更好稳定性的一个“技巧”是更改碰撞几何体的表示。在物体表面放置小球体。目标是确保当它与其他物体接触时,您将在多个 点接触。这里的挑战是如何放置球体,以便有意义的接触通常会给您带来至少三个结果。

关于drake - Drake 中的接触机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66657125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com