#drake
#drake
Вопрос:
У меня есть конечная система (с использованием pydrake) с парой входов и выходом, который вычисляется по входам. Функция CalcOutput
обратного вызова блокирует выполнение программы до тех пор, пока не будет установлен выходной сигнал. В некоторых случаях я предпочитаю не устанавливать выходные данные, даже если есть входные данные (например. из предельных значений).
Есть ли способ продолжить выполнение без установки выходных данных?
Ответ №1:
Фреймворк Drake System использует «вытягивающую» архитектуру. Все системные оценки выполняются в одном потоке и CalcOutput
вызываются только тогда, когда вычисляется нисходящий метод, который запрашивает ввод (например, в нисходящем CalcOutput
или CalcTimeDerivatives
). Поэтому вам нужно вернуть какое-то значение.
Я предполагаю, что вместо возврата некоторого null
значения вы, вероятно, хотите, чтобы выходной порт продолжал иметь значение, которое он выводил в прошлый раз? В этом случае решение состоит в том, чтобы сохранить выходные данные в переменной состояния (что означает перенос работы CalcOutput
в обновление состояния), а затем просто записать выходные данные в переменную состояния в порт.