После того, как вы используете Extended Kalman Filter, Unscented Kalman Filter или Particle Filter блоки для онлайн-оценки состояния нелинейной системы, проверьте оценку перед развертыванием кода в вашем приложении. Если валидация указывает на низкое доверие оценки, смотрите Поиск и устранение проблем с оценкой состояния в Интернете для следующих шагов. После того, как вы подтвердили результаты онлайн-оценки, можно сгенерировать код C/C + + для блоков с помощью Simulink® Coder™ программное обеспечение.
Чтобы подтвердить эффективность вашего фильтра, выполните оценку состояния с помощью измеренных или моделируемых выходных данных из этих сценариев.
Получение выходных данных от вашей системы при различных рабочих условиях и исходных значениях - для обеспечения того, чтобы оценка работала хорошо при всех рабочих условиях, представляющих интерес. Например, предположим, что вы хотите отследить положение и скорость транспортного средства с помощью шумных измерений положения. Измерьте данные на разных скоростях транспортного средства и медленных и резких маневрах.
Для каждого интересующего условия работы получайте несколько наборов экспериментальных или моделируемых данных с различными реализациями шума - Чтобы гарантировать, что различные значения шума не ухудшают эффективность оценки.
Для каждого из этих сценариев проверяйте эффективность фильтра путем исследования невязок и ошибки расчета состояния.
Остаточная, или выходная ошибка расчета, является различием между измеренным выходным сигналом системы yMeasured[k]
, и предполагаемый выходной параметр системы yPredicted[k|k-1]
в временной шаг k
. Здесь, yPredicted[k|k-1]
- предполагаемый выход на временном шаге k
, который прогнозируется с помощью выходных измерений до временного шага k-1
.
Блоки не выводят явным образом yPredicted[k|k-1]
однако можно вычислить выход с помощью оценочных значений состояния и функций перехода и измерения вашего состояния. Для получения примера смотрите Вычисление Невязок и Ошибок расчета состояния.
Невязки должны иметь следующие характеристики:
Малая величина - малые ошибки относительно размера выходов повышают доверие в оцененных значениях.
Нулевое среднее
Низкая автокорреляция, кроме нулевой задержки времени - для вычисления автокорреляции можно использовать блок Autocorrelation (DSP System Toolbox) из ПО DSP System Toolbox™.
Когда вы моделируете выходные данные вашей нелинейной системы и используете эти данные для оценки состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между оцененными и истинными значениями состояния и проанализировать ошибки. Оцененное значение состояния в любой временной шаг выводится на xhat порт блоков. Ошибки расчета состояния должны удовлетворять следующим характеристикам:
Малая величина
Нулевое среднее
Низкая автокорреляция, кроме нулевой временной задержки
Можно также вычислить ковариацию ошибки расчета состояния и сравнить ее с ковариацией ошибки расчета состояния, которая выводится блоками в P порту блоков. Аналогичные значения повышают доверие в эффективности фильтра.
Этот пример показывает, как оценить состояния осциллятора Ван дер Поля в дискретном времени и вычислить ошибки расчета состояния и невязки для проверки оценки. Невязки являются ошибками расчета результата, то есть это различие между измеренным и оцененным выходами.
В модели Simulink™ vdpStateEstimModel
Блок осциллятор Ван дер Поля реализует генератор с параметром нелинейности mu, равным 1. Генератор имеет два состояния. Шумное измерение первого состояния x1
доступно.
Модель использует Сигма-точечный фильтр Калмана блока, чтобы оценить состояния генератора. Поскольку блок требует входов в дискретном времени, блок Rate Transition выборок x1
чтобы дать дискретизированное выходное измерение yMeasured[k]
в временной шаг k
. Блок Сигма-точечный Фильтр Калмана выводит оцененные значения состояния xhat[k|k]
в временной шаг k
, использование yMeasured
до k времени
. Блок фильтра использует ранее записанные и сохраненные функции перехода и измерения состояния, vdpStateFcn.m
и vdpMeasurementFcn.m
. Для получения информации об этих функциях см. «Нелинейная оценка состояния с использованием сигма-точечного фильтра Калмана и фильтра частиц».
Чтобы подтвердить оценку состояния, модель вычисляет невязки в блоке Generate Lestual. В сложение, поскольку значения истинного состояния известны, модель также вычисляет ошибки расчета состояния.
Чтобы вычислить невязки, блок Generate Leastual сначала вычисляет предполагаемый выход yPredicted[k|k-1]
использование расчетных состояний и функций перехода и измерения состояния. Здесь, yPredicted[k|k-1]
- предполагаемый выход на временном шаге k
, прогнозируется с использованием выходных измерений до временного шага k-1
. Затем блок вычисляет невязку на временном шаге k
как yMeasured[k]
- yPredicted[k|k-1]
.
Исследуйте невязки и ошибки расчета состояния и убедитесь, что они имеют небольшую величину, нулевое среднее и низкую автокорреляцию.
В этом примере сигма-точечный фильтр Калмана выводит xhat[k|k]
потому что выбран параметр Использовать текущие измерения для улучшения оценки состояния блока. Если удалить этот параметр, блок вместо этого выводит xhat[k|k-1]
, предсказанное значение состояния на временном шаге k
, использование yMeasured
до k-1 времени
. В этом случае вычислите yPredicted[k|k-1] = MeasurementFcn(xhat[k|k-1])
, где MeasurementFcn
- функция измерения для вашей системы.
Extended Kalman Filter | Kalman Filter | Particle Filter | Unscented Kalman Filter