Продолжить моделирование, не устанавливая выходной порт конечной системы

#drake

#drake

Вопрос:

У меня есть конечная система (с использованием pydrake) с парой входов и выходом, который вычисляется по входам. Функция CalcOutput обратного вызова блокирует выполнение программы до тех пор, пока не будет установлен выходной сигнал. В некоторых случаях я предпочитаю не устанавливать выходные данные, даже если есть входные данные (например. из предельных значений).

Есть ли способ продолжить выполнение без установки выходных данных?

Ответ №1:

Фреймворк Drake System использует «вытягивающую» архитектуру. Все системные оценки выполняются в одном потоке и CalcOutput вызываются только тогда, когда вычисляется нисходящий метод, который запрашивает ввод (например, в нисходящем CalcOutput или CalcTimeDerivatives ). Поэтому вам нужно вернуть какое-то значение.

Я предполагаю, что вместо возврата некоторого null значения вы, вероятно, хотите, чтобы выходной порт продолжал иметь значение, которое он выводил в прошлый раз? В этом случае решение состоит в том, чтобы сохранить выходные данные в переменной состояния (что означает перенос работы CalcOutput в обновление состояния), а затем просто записать выходные данные в переменную состояния в порт.