Kalman Filter

Оценка состояний линейной системы в дискретном времени или в непрерывном времени

Библиотека

Оценщики

  • Kalman Filter block

Описание

Используйте блок Kalman Filter для оценки состояний пространства состояний модели объекта управления данных о ковариации шума процесса и измерения. Модель пространства состояний может быть изменяющейся во времени. Реализация установившегося фильтра Калмана используется, если модель пространства состояний и шумовые ковариационные матрицы все являются инвариантными по времени. Изменяющийся во времени фильтр Калмана используется в противном случае.

Фильтр Калмана обеспечивает оптимальное решение следующих задач непрерывной или дискретной оценки:

 Оценка в непрерывном времени

 Оценка в дискретном времени

Блок Kalman Filter отличается от блока kalman (Control System Toolbox) следующими способами:

  • При вызове kalman(sys,...), sys включает в себя G и H матрицы. В частности, sys.B имеет [B G] и sys.D имеет [D H]. Когда вы предоставляете переменную LTI блоку Kalman Filter, это не принимает, что предоставленная переменная LTI содержит G и H. Они являются необязательными и отдельными.

  • The kalman выходы команды [yhat;xhat] по умолчанию. Блок выводит только xhat по умолчанию.

Параметры

В следующей таблице приведены параметры блоков Фильтр Калмана, доступные через диалоговое окно Параметры Блоков.

ЗадачаПараметры
Задайте настройки фильтра
Задайте системную модель

Model source на Model Parameters вкладке

Задайте начальные оценки состояния

Source на Model Parameters вкладке

Задайте шумовые характеристики

На Model Parameters вкладке:

Задайте дополнительные входные порты

На Options вкладке:

Укажите дополнительные выходные порты

На Options вкладке:

Временной интервал

Задайте, оценивать ли состояния в непрерывном времени или дискретном времени:

  • Discrete-Time (По умолчанию) - Блок оценивает состояния в дискретном времени

  • Continuous-Time - Блок оценивает состояния в непрерывном времени

    Когда блок Kalman Filter находится в модели с синхронным управлением состояниями (см. блок State Control (HDL Coder)), вы не можете выбрать Continuous-time.

Используйте измерение тока y [n], чтобы улучшить xhat [

n]

Используйте вариант оценки тока фильтра Калмана в дискретном времени. Когда не выбран, используется отложенная оценка (вариант).

Эта опция доступна только, когда Time Domain Discrete-Time.

Источник модели

Задайте, как матрицы A, B, C, D предоставляются блоку. Должно быть одно из следующих:

  • Dialog: LTI State-Space Variable - Используйте значения, заданные в переменной пространства состояний LTI. Вы также должны задать имя переменной в Variable. Шаг расчета модели должно совпадать с настройкой в опции Time domain, то есть модель должна быть дискретной, если Time domain дискретное время.

  • Dialog: Individual A, B, C, D matrices - Задайте значения в следующих параметрах блоков:

    • A - Задайте матрицу A. Оно должно быть реальным и квадратным.

    • B - Задайте матрицу B. Он должен быть реальным и иметь столько строк, сколько матрица A. Эта опция доступна только, когда Add input port u выбран на вкладке Options.

    • C - Задайте матрицу C. Он должен быть реальным и иметь столько столбцов, сколько матрица A.

    • D - Задайте матрицу D. Должно быть, это реально. Оно должно иметь столько строк, сколько матрица C, и столько столбцов, сколько матрица B. Эта опция доступна только, когда Add input port u выбран на вкладке Options.

  • External - Задайте матрицы A, B, C, D в качестве входных сигналов к блоку Фильтр Калмана. Если вы выбираете эту опцию, блок включает дополнительные входные порты А, B, C и D. Вы также должны задать следующее в параметрах блоков:

    • Number of states - Количество состояний, которые будут оценены, заданное как положительное целое число. Значение по умолчанию является 2.

    • Number of inputs - Количество известных входов в модели, заданное в виде положительного целого числа. Значение по умолчанию является 2. Эта опция доступна только при выборе Add input port u.

    • Number of outputs - Количество измеренных выходов в модели, заданное в виде положительного целого числа. Значение по умолчанию является 2.

Шаг расчета

Блок шаг расчета, заданный как -1 или положительная скалярная величина.

Эта опция доступна только, когда Time Domain Discrete Time а Model Source есть Dialog: Individual A, B, C, D matrices или External. Это шаг расчета получается из переменной пространства состояний LTI, если Источник Модели Dialog: LTI State-Space Variable.

Значение по умолчанию является -1, что подразумевает, что блок наследует свой шаг расчета на основе контекста блока в модели. Все входные порты блоков должны иметь одинаковый шаг расчета.

Источник

Задайте, как ввести начальные оценки состояния и начальное состояние ошибки расчета ковариации:

  • Dialog - Задайте значения непосредственно в диалоговом окне. Необходимо также задать следующие параметры:

    • Initial states x[0] - Задайте начальную оценку состояния как действительный скаляр или вектор. Если вы задаете скаляр, все начальные оценки состояния устанавливаются на этот скаляр. Если вы задаете вектор, длина вектора должна совпадать с количеством состояний в модели.

    • State estimation error covariance P[0] (только при использовании изменяющегося во времени фильтра Калмана) - Задайте начальное состояние ошибки расчета ковариационном P [0] для дискретного фильтра Калмана или P (0) для непрерывного фильтра Калмана. Необходимо указать как одно из следующих:

      • Настоящий неотрицательный скаляр. P является диагональной матрицей Ns-на-Ns со скаляром на диагоналях. Ns - количество состояний в модели.

      • Вектор действительных неотрицательных скаляров. P является диагональной матрицей Ns-на-Ns с элементами вектора на диагоналях P.

      • Ns-на-Ns положительная полуопределенная матрица.

  • External - Наследование значений от входных портов. Блок включает дополнительный входной порт X0. Второй дополнительный входной порт P0 добавляется, когда используется изменяющийся во времени фильтр Калмана. X0 и P0 должны удовлетворять тем же условиям, описанным ранее, когда вы задаете их в диалоговом окне.

Используйте коэффициент усиления Калмана K из переменной модели

Укажите, следует ли использовать предварительно идентифицированный коэффициент усиления Калмана, содержащийся в модели объекта управления в пространстве состояний. Эта опция доступна только в следующих случаях:

  • Model Source Dialog: LTI State-Space Variable и Variable является идентифицированной моделью пространства состояний (idss) с ненулевой матрицей K.

  • Time Invariant Q опции Time Invariant R и Time Invariant N.

Если выбрана опция Use G and H matrices (default G=I and H=0) , необходимо также выбрать опции Time Invariant G и Time Invariant H.

Используйте матрицы G и H (по умолчанию G = I и H

= 0)

Задайте, использовать ли значения, отличные от значений по умолчанию, для матриц G и H. Если вы выбираете эту опцию, необходимо задать:

  • G - Задайте матрицу G. Это должна быть действительная матрица с таким количеством строк, как матрица A. Значение по умолчанию является 1.

  • Time-invariant G - Задайте, является ли матрица G инвариантной по времени. Если вы отменяете выбор этой опции, блок включает дополнительный входной порт G.

  • H - Задайте матрицу H. Это должна быть действительная матрица с таким количеством строк, как матрица C и столько столбцов, сколько матрица G. Значение по умолчанию 0.

  • Time-invariant H - Задайте, является ли матрица H инвариантной по времени. Если вы отменяете выбор этой опции, блок включает дополнительный входной порт G.

  • Number of process noise inputs - Задайте количество входов технологического шума в модели. Значение по умолчанию является 1.

    Эта опция доступна только при удалении Time-invariant G и Time-invariant H. В противном случае эта информация выводится из матрицы G или H.

Q

Матрица ковариации шума процесса, заданная как одно из следующего:

  • Настоящий неотрицательный скаляр. Q является диагональной матрицей Nw-на-Nw со скаляром на диагоналях. Nw - количество входов технологического шума в модели.

  • Вектор действительных неотрицательных скаляров. Q является диагональной матрицей Nw-на-Nw с элементами вектора на диагоналях Q.

  • Nw-на-Nw положительная полуопределенная матрица.

Инвариант времени Q

Задайте, является ли Q- матрицы инвариантным по времени. Если вы отменяете выбор этой опции, блок включает дополнительный входной порт Q.

R

Матрица ковариации шума измерения, заданная как одно из следующего:

  • Настоящая положительная скалярная величина. R является диагональной матрицей Ny на Ny со скаляром на диагоналях. Ny - количество измеренных выходов в модели.

  • Вектор реальных положительных скалярных величин. R является Ny-на-Ny диагональной матрицей с элементами вектора на диагоналях R.

  • Ny-на-Ny положительно-определенная матрица.

Инвариант времени R

Задайте, является ли матрица R инвариантной по времени. Если отменить выбор этой опции, блок включает дополнительный входной порт R.

N

Перекрестная ковариационная матрица шума процесса и измерения. Задайте его как матрицу Nw-by-Ny. Матрица [Q N; NT R] должен быть положительно определен.

Инвариант времени N

Задайте, является ли N матрицы инвариантом времени. Если вы отменяете выбор этой опции, блок включает дополнительный входной порт N.

Добавьте входной порт u

Выберите эту опцию, если ваша модель содержит известные входы u(t) или u[k]. Опция выбрана по умолчанию. Отмена выбора этой опции удаляет вход порт u и удаляет параметры B, D и Number of inputs из диалогового окна блока.

Добавить входной порт Разрешить управлять обновлениями измерений

Выберите эту опцию, если вы хотите управлять обновлениями измерений. Блок включает дополнительный входной порт Enable. The Enable входной порт принимает скалярный сигнал. Эта опция по умолчанию отменена.

По умолчанию блок обновляет измерения в каждом временном шаге, чтобы улучшить состояние и выходные оценки x^ и y^ на основе измеренных выходов. Обновление измерения пропускается для текущего шага расчета, когда сигнал в порте Enable равен 0. Конкретно, уравнение для оценок состояний становится x^˙(t)=A(t)x^(t)+B(t)u(t) для непрерывного фильтра Калмана и x^[n+1|n]=A[n]x^[n|n1]+B[n]u[n] для дискретного времени.

Внешний сброс

Опция для сброса предполагаемых состояний и ковариационной матрицы параметра с использованием заданных начальных значений.

Предположим, что вы сбрасываете блок за временной шаг, t. Если блок включен в tпрограммное обеспечение использует начальные значения параметров, заданные или в диалоге блоков или входных портах P0 и X0, чтобы оценить состояния. Другими словами, в tблок выполняет обновление времени и, если он включен, обновление измерения после сброса. Блок выводит эти обновленные оценки.

Задайте одно из следующих значений:

  • None (По умолчанию) - Предполагаемые состояния x^ и ошибки расчета ковариации матрицы P значения не сбрасываются.

  • Rising - Запускает сброс, когда сигнал управления повышается с отрицательного или нулевого значения до положительного. Если начальное значение отрицательное, повышение до нуля запускает сброс.

  • Falling - Запускает сброс, когда сигнал управления падает с положительного или нулевого значения на отрицательное значение. Если начальное значение положительное, падение до нуля запускает сброс.

  • Either - Запускает сброс, когда сигнал управления поднимается или падает.

  • Level - Запускает сброс в любом из следующих случаев:

    • Управляющий сигнал ненулевый на текущем временном шаге.

    • Управляющий сигнал изменяется с ненулевого на предыдущем временном шаге до нуля на текущем временном шаге.

  • Level hold - Триггеры сбрасываются, когда сигнал управления ненулевый на текущем временном шаге.

Когда вы выбираете опцию кроме None, а Reset входной порт добавляется к блоку, чтобы обеспечить входной сигнал сброса управления.

Вывод расчетной модели выход y

Добавить y^ выходной порт в блок для вывода предполагаемых выходов модели. Опция по умолчанию отменена.

Ошибка расчета выходного состояния P или Z

Добавьте к блоку выходной порт P или выходной порт Z. Матрица Z предоставляется только тогда, когда Time Domain Discrete Time и выбирается Use the current measurement y[n] to improve xhat[n]. В противном случае предоставляется матрица P, как описано в разделе «Описание».

Опция по умолчанию отменена.

Порты

Имя порта

Тип порта

(Вход/Выход)

Описание
u (необязательно)ВИзвестные входы, заданные как действительный скаляр или вектор.
yВИзмеренные выходы, заданные как действительный скаляр или вектор.
xhatИзПредполагаемые состояния, возвращенные как действительный скаляр или вектор.
yhat (необязательно)ИзПредполагаемые выходы, возвращенные как действительный скаляр или вектор.
P или Z (опционально)ИзОшибка расчета состояния, возвращенная как матрица.
A (необязательно)ВМатрица, заданная как действительная матрица.
B (необязательно)ВМатрица B, заданная как действительная матрица.
C (необязательно)ВМатрица C, заданная как действительная матрица.
D (необязательно)ВD-матрица, заданная как действительная матрица.
G (необязательно)ВМатрица G, заданная как действительная матрица.
H (необязательно)ВМатрица H, заданная как действительная матрица.
Q (необязательно)ВQ-матрица, заданная как действительный скаляр, вектор или матрица.
R (необязательно)ВМатрица R, заданная как действительный скаляр, вектор или матрица.
N (необязательно)ВN матрица, заданная как действительная матрица.
P0 (необязательно)ВМатрица P в начальный момент времени, заданная как действительный скаляр, вектор или матрица.
X0 (необязательно)ВНачальные оценки состояния, заданные как действительный скаляр или вектор.
Включить (необязательно)ВУправляющий сигнал для включения обновлений измерения, заданный как действительный скаляр.
Сброс (необязательно)ВСигнал управления для сброса оценок состояния, заданный как действительный скаляр.

Поддерживаемые типы данных

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью (только для фильтра Калмана в дискретном времени)

Примечание

  • Все входные порты, кроме Enable и Reset, должны иметь совпадающий тип данных (одинарный или двойной).

  • Enable и Reset порты поддерживают single, double, int8, uint8, int16, uint16, int32, uint32, и логические типы данных.

Ограничения

  • Объект и данные о шуме должны удовлетворять:

    • (C, A) обнаруживаемый

    • R¯>0 и Q¯N¯R¯1N¯T0

    • (AN¯R¯1C,Q¯N¯R¯1N¯T) не имеет неконтролируемого режима на мнимой оси (или единичного круга в дискретном времени) с обозначением

      Q¯=GQGTR¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

  • Фильтр Калмана в непрерывном времени не может использоваться в Подсистемы вызова функций или Триггируемые подсистемы.

Вопросы совместимости

расширить все

Поведение изменено в R2021a

Ссылки

[1] Франклин, G.F., J.D. Powell, and M.L. Workman, Digital Control of Динамические Системы, Second Edition, Addison-Wesley, 1990.

[2] Lewis, F., Optimal Estimation, John Wiley & Sons, Inc, 1986.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ Simulink ®

.

Генерация кода ПЛК
Сгенерируйте структурированный текстовый код с помощью Coder™ Simulink ® PLC

.
Введенный в R2014b