Линейно-квадратичный-Гауссов (LQG) проект
reg = lqg(sys,QXU,QWV)
reg = lqg(sys,QXU,QWV,QI)
reg = lqg(sys,QXU,QWV,QI,'1dof')
reg = lqg(sys,QXU,QWV,QI,'2dof')
reg = lqg(___,'current')
[reg,info] = lqg(___)
reg = lqg(sys,QXU,QWV)
вычисляет оптимальный линейно-квадратичный-Гауссов (LQG) регулятор reg
заданную модель пространства состояний sys
объекта и весовых матриц QXU
и QWV
. Динамический регулятор reg
использует y измерений, чтобы сгенерировать u управляющего сигнала, который y регулирует вокруг нулевого значения. Используйте положительную обратную связь, чтобы подключить этот регулятор к выходному y объекта.
Регулятор LQG минимизирует функцию затрат
удовлетворяющее растительным уравнениям
где w шума процесса и v шума измерения являются Гауссовыми белыми шумами с ковариацией:
reg = lqg(sys,QXU,QWV,QI)
использует командную r уставки и y измерений, чтобы сгенерировать u сигнала управления. reg
имеет интегральное действие, чтобы убедиться, что y отслеживает команду r.
Сервоконтроллер LQG минимизирует функцию затрат
где xi является интегралом ошибки отслеживания r - y. Для систем MIMO r, y и xi должны иметь одинаковую длину.
reg = lqg(sys,QXU,QWV,QI,'1dof')
вычисляет сервопривод с одной степенью свободы контроллера который принимает e = r - y, а не [r; y] как вход.
reg = lqg(sys,QXU,QWV,QI,'2dof')
эквивалентно LQG(sys,QXU,QWV,QI)
и формирует сервоконтроллер с двумя степенями свободы, показанный ранее.
reg = lqg(___,'current')
использует «текущую » Оценку состояния фильтра Калмана, который использует x [n | n] в качестве оценки состояния при вычислении регулятора LQG для системы дискретного времени.
[reg,info] = lqg(___)
возвращает матрицы усиления контроллера и оценщика в структуре info
для любого из предыдущих синтаксисов. Можно использовать коэффициент усиления контроллера и оценщика, чтобы, например, реализовать контроллер в форме наблюдателя. Для получения дополнительной информации см. «Алгоритмы».
Линейно-квадратичный-Гауссов (LQG) регулятор и сервопривод Проектирования контроллера
Этот пример показывает, как спроектировать линейный регулятор квадратичного Гауссова (LQG), сервопривод LQG с одной степенью свободы и сервопривод LQG с двумя степенями свободы для следующей системы.
Объект имеет три состояния (x), два входа управления (u), три случайных входа (w), один выход (y), шум измерения для выхода (v) и следующее состояние и уравнения измерения.
где
Система имеет следующие данные о шуме ковариации:
Для регулятора используйте следующую функцию затрат, чтобы определить компромисс между эффективностью регулирования и усилиями по управлению:
Для контроллеров сервопривода используйте следующую функцию затрат, чтобы определить компромисс между эффективностью трекера и усилиями по управлению:
Для проектирования контроллеров LQG для этой системы:
Создайте систему в пространстве состояний путем ввода следующего текста в Командном окне MATLAB:
A = [0 1 0;0 0 1;1 0 0]; B = [0.3 1;0 1;-0.3 0.9]; C = [1.9 1.3 1]; D = [0.53 -0.61]; sys = ss(A,B,C,D);
Задайте данные ковариации шума и матрицы взвешивания путем ввода следующих команд:
nx = 3; %Number of states ny = 1; %Number of outputs Qn = [4 2 0; 2 1 0; 0 0 1]; Rn = 0.7; R = [1 0;0 2] QXU = blkdiag(0.1*eye(nx),R); QWV = blkdiag(Qn,Rn); QI = eye(ny);
Сформировать регулятор LQG можно путем ввода следующей команды:
KLQG = lqg(sys,QXU,QWV)
A = x1_e x2_e x3_e x1_e -6.212 -3.814 -4.136 x2_e -4.038 -3.196 -1.791 x3_e -1.418 -1.973 -1.766 B = y1 x1_e 2.365 x2_e 1.432 x3_e 0.7684 C = x1_e x2_e x3_e u1 -0.02904 0.0008272 0.0303 u2 -0.7147 -0.7115 -0.7132 D = y1 u1 0 u2 0 Input groups: Name Channels Measurement 1 Output groups: Name Channels Controls 1,2 Continuous-time model.
Сформируйте сервопривод LQG с одной степенью свободы контроллера путем ввода следующей команды:
KLQG1 = lqg(sys,QXU,QWV,QI,'1dof')
A = x1_e x2_e x3_e xi1 x1_e -7.626 -5.068 -4.891 0.9018 x2_e -5.108 -4.146 -2.362 0.6762 x3_e -2.121 -2.604 -2.141 0.4088 xi1 0 0 0 0 B = e1 x1_e -2.365 x2_e -1.432 x3_e -0.7684 xi1 1 C = x1_e x2_e x3_e xi1 u1 -0.5388 -0.4173 -0.2481 0.5578 u2 -1.492 -1.388 -1.131 0.5869 D = e1 u1 0 u2 0 Input groups: Name Channels Error 1 Output groups: Name Channels Controls 1,2 Continuous-time model.
Сформируйте сервопривод LQG с двух контроллеров свободы путем ввода следующей команды:
KLQG2 = lqg(sys,QXU,QWV,QI,'2dof')
A = x1_e x2_e x3_e xi1 x1_e -7.626 -5.068 -4.891 0.9018 x2_e -5.108 -4.146 -2.362 0.6762 x3_e -2.121 -2.604 -2.141 0.4088 xi1 0 0 0 0 B = r1 y1 x1_e 0 2.365 x2_e 0 1.432 x3_e 0 0.7684 xi1 1 -1 C = x1_e x2_e x3_e xi1 u1 -0.5388 -0.4173 -0.2481 0.5578 u2 -1.492 -1.388 -1.131 0.5869 D = r1 y1 u1 0 0 u2 0 0 Input groups: Name Channels Setpoint 1 Measurement 2 Output groups: Name Channels Controls 1,2 Continuous-time model.
lqg
может использоваться как для объектов непрерывного, так и дискретного времени. В дискретном времени, lqg
использует x [n | n-1] в качестве оценки состояния по умолчанию. Чтобы использовать x [n | n] в качестве оценки состояния и вычислить оптимальный контроллер LQG, используйте 'current'
входной параметр. Для получения дополнительной информации о оценщиках состояния смотрите kalman
.
Для вычисления регулятора LQG, lqg
использует команды lqr
и kalman
. Чтобы вычислить сервоконтроллер, lqg
использует команды lqi
и kalman
.
Когда вы хотите большей гибкости для разработки регуляторов, вы можете использовать lqr
, kalman
, и lqgreg
команды. Когда вы хотите большей гибкости для разработки контроллеров сервопривода, вы можете использовать lqi
, kalman
, и lqgtrack
команды. Для получения дополнительной информации об использовании этих команд и о том, как решить, когда их использовать, смотрите Linear-Quadratic-Gaussian (LQG) Design for Regulation and Linear-Quadratic-Gaussian (LQG) Design of Servo Controlller with Integral Action.
Уравнения контроллера:
Для непрерывного времени:
Для дискретного времени:
Задержка оценки:
Оценка тока:
Вот,
A, B, C и D являются матрицами пространства состояний регулятора LQG, reg
.
xi является интегралом ошибки отслеживания r - y.
Kx, Kw, Ki, L, Mx, и Mw являются контроллером, и матрицы выгоды оценщика возвратились в info
.