继续模拟而不设置 LeafSystem 的输出端口

问题描述

我有一个 LeafSystem(使用 pydrake),其中有几个输入和一个根据输入计算的输出CalcOutput 回调函数会阻止程序的执行,直到设置了输出。在某些情况下,即使有输入(例如超出限制值),我也不希望设置输出

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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...