Объединение LGR и фильтра Калмана в один элемент управления

Что я пытаюсь сделать

  • Я пытаюсь создать контроллер LQG для управления данной системой, комбинируя линейно-квадратический регулятор (LQR) и фильтр Калмана.

Где я застрял

Я нашел оба по отдельности, но не знаю, как их объединить в MATLAB. Это система и решение LQR:

Система и решение LQR

Я могу создать как фильтр Калмана, так и LQR отдельно, но я не могу понять, как объединить LQR, чтобы использовать оценку состояния фильтра Калмана в качестве входных данных.

Akal = Afull;
Bkal = [B1, B2];
Ckal = Cfull;
Dkal = [0 0];
sys_kal = ss(Akal,Bkal,Ckal,Dkal);

[KEST,L,P] = kalman(sys_kal,E_d, E_n, 0)

[K,S,e] = lqr(Afull,B1,Q,r);

Когда я использую функцию Калмана, вот что мне дает size(KEST):

State-space model with 11 outputs, 2 inputs, and 10 states.

Я хочу, чтобы мой U использовал оценку, данную новой системой SS KEST. KEST предоставляет оценку выходных данных (y, размерность 1) и оценку для всех 10 состояний (X, размерность 10). Я могу написать/начертить путь управления с обратной связью, который я хочу создать с помощью функций LQR и Kalman, но я застрял на этом этапе, потому что не знаю, как реализовать его с помощью MATLAB. Я также не уверен в синтаксисе.

Я искал примеры MATLAB, но не нашел ни одного, который показал бы мне, как объединить то, что я нашел. Я знаю, что KEST — это модель пространства состояний, но я не знаю, как ее использовать или выбрать один выход.

С чем я надеюсь получить помощь

  • Если я использую bode(KEST), это дает мне график BODE для всех 11 выходов. Я не уверен, как выбрать только один выход KEST.

  • Я хотел бы иметь U = -K*X_est, но сейчас я знаю только значение K. Я не знаю, как получить X_est из моей системы пространства состояний KEST.


person Cled1990    schedule 25.03.2018    source источник


Ответы (1)


То, что вы ищете, это команда под названием lqgreg:

rlqg = lqgreg(kest,k)

Также убедитесь, что выходные данные kest — это 10 состояний, а y (выходные данные) не включены в оценку.

Чтобы понять это лучше: LQR — это обратная связь по состоянию, поэтому элемент управления возвращает все ваши состояния с оптимальным усилением k. Размер k равен состояниям вашей модели системы.

Обычная проблема с LQR заключается в том, что вы редко измеряете все состояния. Здесь появляется фильтр Калмана, который помогает оценить все состояния по измеренным выходным данным и известным входным данным. Обратите внимание, что фильтр Калмана можно использовать для многих других целей, но здесь единственная роль фильтра Калмана заключается в создании оценок состояния для обратной связи о состоянии, поэтому он не должен оценивать ничего, кроме состояний системы.

Если вам нужно знать выходные данные вашей системы (для построения графиков или чего-то еще), это очень легко рассчитать на основе оценок состояния и входных данных (Cx + Du), но вы можете создать еще один фильтр Калмана только для оценки выходных данных. Это более позднее решение неприемлемо при работе в микроконтроллере или другой среде с малой емкостью, поскольку вы дублируете в основном один и тот же алгоритм.

person gaborp    schedule 26.03.2018