问题描述
我有一个 LeafSystem(使用 pydrake),其中有几个输入和一个根据输入计算的输出。 CalcOutput
回调函数会阻止程序的执行,直到设置了输出。在某些情况下,即使有输入(例如超出限制值),我也不希望设置输出。
有没有办法在不设置输出的情况下继续执行?
解决方法
Drake System 的框架使用“拉”式架构。所有系统评估都发生在单个线程中,并且 CalcOutput
仅在评估请求输入的下游方法时调用(例如在下游 CalcOutput
或 CalcTimeDerivatives
中)。所以你需要返回一些值。
我想不是返回一些 null
值,您可能只想让输出端口继续具有上次输出的值?在这种情况下,解决方案是将输出存储在状态变量中(这意味着将 CalcOutput
中的工作移动到状态更新中),然后让您的输出只是将状态变量写入端口。>