Подтвердите онлайновую оценку состояния в командной строке

После того, как вы используете extendedKalmanFilter, unscentedKalmanFilter или particleFilter команды для онлайновой оценки состояния нелинейной системы, подтвердите оценку прежде, чем развернуть код в вашем приложении. Если валидация указывает на низкое доверие к оценке, то смотрите Поиск и устранение неисправностей Онлайновая Оценка состояния для следующих шагов. После того, как вы подтвердили онлайновые результаты оценки, можно сгенерировать код C/C++ или автономное приложение с помощью программного обеспечения MATLAB Compiler™ или MATLAB® Coder™.

Чтобы подтвердить эффективность вашего фильтра, выполните использование оценки состояния измеренные или симулированные выходные данные из различных сценариев.

  • Получите выходные данные из своей системы в различных условиях работы и входных значениях — Чтобы гарантировать, что оценка работает хорошо под всеми условиями работы интереса. Например, предположите, что вы хотите отследить положение и скорость транспортного средства с помощью шумных измерений положения. Измерьте данные на различных скоростях транспортного средства и медленных и резких маневрах.

  • Для каждых условий работы интереса получите несколько наборов экспериментальных или симулированных данных с различной шумовой реализацией — Чтобы гарантировать, что различные шумовые значения не ухудшают эффективность оценки.

Для каждого из этих сценариев проверьте производительность фильтра путем исследования выходной ошибки расчета и ошибки оценки состояния. Для примера о выполнении и проверке онлайновой оценки состояния, смотрите, что Нелинейная Оценка состояния Использует Сигма-точечный фильтр Калмана и Фильтр частиц.

Исследуйте Выходную ошибку расчета

Выходная ошибка расчета является различием между измеренным выходом, y, и предполагаемый выход, yEstimated. Можно получить предполагаемый выход на каждом временном шаге при помощи функции измерения системы. Например, если vdpMeasurementFcn.m функция измерения для вашей нелинейной системы, и вы выполняете оценку состояния с помощью расширенного объекта Фильтра Калмана, obj, можно вычислить предполагаемый выход с помощью оценок текущего состояния как:

yEstimated = vdpMeasurementFcn(obj.State);
estimationError = y-yEstimated;

Здесь obj.State значение состояния x^[k|k1] после того, как вы оцениваете состояния с помощью predict команда. x^[k|k1] предсказанная оценка состояния за время k, предполагаемое использование измеряло выход до предыдущего раза k-1.

Если вы используете extendedKalmanFilter или unscentedKalmanFilter, можно также использовать residual получить ошибку расчета:

[residual,residualCovariance] = residual(obj,y);

Ошибки расчета (остаточные значения) должны иметь следующие характеристики:

  • Маленькая величина — Небольшие ошибки относительно размера выходных параметров увеличивают доверие к ориентировочным стоимостям.

  • Нулевое среднее значение

  • Низкая автокорреляция, кроме в нулевой задержке — Чтобы вычислить автокорреляцию, можно использовать MATLAB xcorr команда.

Исследуйте ошибку оценки состояния на симулированные данные

Когда вы симулируете выходные данные своей нелинейной системы и используете те данные для оценки состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между предполагаемыми и истинными значениями состояния и анализировать ошибки. Предполагаемое значение состояния в любое время шаг является значением, сохраненным в obj.State после того, как вы оцениваете состояния с помощью predict или correct команда. Ошибки оценки состояния должны удовлетворить следующим характеристикам:

  • Маленькая величина

  • Нулевое среднее значение

  • Низкая автокорреляция, кроме в нулевой задержке

Можно также вычислить ковариацию ошибки оценки состояния и сравнить его с ошибочной ковариацией оценки состояния, сохраненной в StateCovariance свойство фильтра. Подобные значения увеличивают доверие к эффективности фильтра.

Смотрите также

| | |

Похожие темы