继续仿真而不设置 LeafSystem 的输出端口

Continue simulation without setting the output port of a LeafSystem

我有一个 LeafSystem(使用 pydrake),它有几个输入和一个根据输入计算的输出。 CalcOutput 回调函数会阻止程序的执行,直到设置了输出。在某些情况下,即使有输入(限制值的eg.out),我也宁愿不设置输出。

有没有办法在不设置输出的情况下继续执行?

Drake System 的框架采用“拉”架构。所有系统评估都发生在单个线程中,并且 CalcOutput 仅在评估请求输入的下游方法时调用(例如,在下游 CalcOutputCalcTimeDerivatives 中)。所以你需要 return 一些值。

我想您可能不想 return 一些 null 值,而是希望输出端口继续具有上次输出的值?在这种情况下,解决方案是将输出存储在状态变量中(这意味着将 CalcOutput 中的工作移动到状态更新中),然后让您的输出仅将状态变量写入端口。