drake多体植物类有许多用于计算在模拟过程中我感兴趣记录的量的函数(例如动量、质量中心等)。这样记录数据的最好方法是什么?我没有广泛地使用drake,但我有一些想法:
simulator.AdvanceTo(current_time + dt))的循环中运行仿真,并使用多体装置直接计算数量。AdvanceTo()的一个调用来运行模拟),并且可能需要很小的时间步骤才能获得我想要的分辨率。VectorLogSink块,并通过从数值中重构一个Context并调用多体工厂计算函数来求解仿真结束后感兴趣的数量。VectorLogSink块来记录数据。有人能提供一些关于如何记录这样的多体量的指导吗?
将这个问题从这个问题移植到继续讨论
发布于 2022-05-16 22:28:35
来自@jwnimmer tri的初始响应
你对选项(1)的评估是正确的。如果您已经知道适合您需要的日志记录的合理dt步长,那么它可以很好地工作。如果“有趣”的时间并不总是在一个固定的时间表上,这种方式可能会很困难。 与此相关的是,你还没有找到一个选择。Simulator::set_monitor()可用于设置模拟回调。您可以使用它来记录每个模拟步骤,不管这个步骤有多大或多小。 备选案文(2)也应有效。假设模拟中的唯一状态是多体工厂的位置和速度,则可以在模拟期间记录这些状态,然后可以在以后脱机地将上下文状态设置为这些值,并对所需的工厂进行任何查询。如果您有额外的状态(例如,控制器状态),这种方法将变得更加困难。 备选案文(3)也是可能的,但解释起来更为复杂。
https://stackoverflow.com/questions/72266235
复制相似问题