首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在德雷克模拟中如何记录计算的多体量

在德雷克模拟中如何记录计算的多体量
EN

Stack Overflow用户
提问于 2022-05-16 22:22:30
回答 1查看 51关注 0票数 0

drake多体植物类有许多用于计算在模拟过程中我感兴趣记录的量的函数(例如动量、质量中心等)。这样记录数据的最好方法是什么?我没有广泛地使用drake,但我有一些想法:

  1. 在一个有定义的时间步长(即simulator.AdvanceTo(current_time + dt))的循环中运行仿真,并使用多体装置直接计算数量。
    • 看起来有点有限(即不能使用对AdvanceTo()的一个调用来运行模拟),并且可能需要很小的时间步骤才能获得我想要的分辨率。

  2. 记录多体植物输出端口的可用数量(例如身体空间速度、体态等)使用VectorLogSink块,并通过从数值中重构一个Context并调用多体工厂计算函数来求解仿真结束后感兴趣的数量。
    • 不确定这是否可能;似乎有点迂回的方法;在模拟过程中没有兴趣的数量。

  3. 创建一个可以连接到多体工厂的系统块,以便在每个内部模拟时间步骤中执行这些计算。然后,该块可以连接到VectorLogSink块来记录数据。
    • 不确定这是否可能或从何处开始

有人能提供一些关于如何记录这样的多体量的指导吗?

将这个问题从这个问题移植到继续讨论

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 22:28:35

来自@jwnimmer tri的初始响应

你对选项(1)的评估是正确的。如果您已经知道适合您需要的日志记录的合理dt步长,那么它可以很好地工作。如果“有趣”的时间并不总是在一个固定的时间表上,这种方式可能会很困难。 与此相关的是,你还没有找到一个选择。Simulator::set_monitor()可用于设置模拟回调。您可以使用它来记录每个模拟步骤,不管这个步骤有多大或多小。 备选案文(2)也应有效。假设模拟中的唯一状态是多体工厂的位置和速度,则可以在模拟期间记录这些状态,然后可以在以后脱机地将上下文状态设置为这些值,并对所需的工厂进行任何查询。如果您有额外的状态(例如,控制器状态),这种方法将变得更加困难。 备选案文(3)也是可能的,但解释起来更为复杂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72266235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档