在运行时向模拟添加项目

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

根据我对 Drake 工作的有限理解,我们需要将其世界中的所有参与者添加为系统中的植物/叶子,并将该图及其上下文传递给模拟器。 那么,如何在运行时创建项目呢?或者说目前还不可行? 上下文是连接到外部应用程序的机器人拾取,因此模拟器永远不知道哪些物品将在盒子中呈现给手臂。

非常感谢。

drake
1个回答
0
投票

确实,截至今天,不支持在最终确定后将新模型添加到

MultibodyPlant
中(尽管我们正在非常缓慢地朝着这个方向努力;PR#20771是朝这个方向的进展)。

当前的建议是:

  • 添加您首次构建植物时可能想要交互的所有物体
  • 将不需要的身体的位置设置在某个安全位置(例如远离机器人),并锁定身体/关节。锁定的主体/关节对模拟性能的影响应该最小。
  • 当需要“添加新对象”时,停止模拟,解锁关节并设置其新位置,然后通过调用
    simulator.AdvanceTo()
    重新启动模拟。

我还看到了更复杂的版本,实际上在模拟器停止时重建 MultibodyPlant(和图),然后将第一个图的上下文映射到第二个图的上下文,然后再次开始模拟。

© www.soinside.com 2019 - 2024. All rights reserved.