lqg

Линейно-квадратичный-Гауссов (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 минимизирует функцию затрат

J=E{limτ1τ0τ[xT,uT]Qxu[xu]dt}

удовлетворяющее растительным уравнениям

dx/dt=Ax+Bu+wy=Cx+Du+v

где w шума процесса и v шума измерения являются Гауссовыми белыми шумами с ковариацией:

E([wv][w'v'])=QWV

reg = lqg(sys,QXU,QWV,QI) использует командную r уставки и y измерений, чтобы сгенерировать u сигнала управления. reg имеет интегральное действие, чтобы убедиться, что y отслеживает команду r.

Сервоконтроллер LQG минимизирует функцию затрат

J=E{limτ1τ0τ([xT,uT]Qxu[xu]+xiTQixi)dt}

где 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) и следующее состояние и уравнения измерения.

dxdt=Ax+Bu+wy=Cx+Du+v

где

A=[010001100]B=[0.31010.30.9]C=[1.91.31]D=[0.530.61]

Система имеет следующие данные о шуме ковариации:

Qn=E(wwT)=[420210001]Rn=E(vvT)=0.7

Для регулятора используйте следующую функцию затрат, чтобы определить компромисс между эффективностью регулирования и усилиями по управлению:

J(u)=0(0.1xTx+uT[1002]u)dt

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

J(u)=0(0.1xTx+xi2+uT[1002]u)dt

Для проектирования контроллеров LQG для этой системы:

  1. Создайте систему в пространстве состояний путем ввода следующего текста в Командном окне 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);

  2. Задайте данные ковариации шума и матрицы взвешивания путем ввода следующих команд:

    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);

  3. Сформировать регулятор LQG можно путем ввода следующей команды:

    KLQG = lqg(sys,QXU,QWV)
    Эта команда возвращает следующий регулятор LQG:
    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.

  4. Сформируйте сервопривод LQG с одной степенью свободы контроллера путем ввода следующей команды:

    KLQG1 = lqg(sys,QXU,QWV,QI,'1dof')
    Эта команда возвращает следующие сервоприводы LQG контроллера:
    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.

  5. Сформируйте сервопривод LQG с двух контроллеров свободы путем ввода следующей команды:

    KLQG2 = lqg(sys,QXU,QWV,QI,'2dof')
    Эта команда возвращает следующие сервоприводы LQG контроллера:
    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.

Алгоритмы

Уравнения контроллера:

  • Для непрерывного времени:

    dxe=Axe+Bu+L(yCxeDu)u=KxxeKixi

  • Для дискретного времени:

    x[n+1|n]=Ax[n|n1]+Bu[n]+L(y[n]Cx[n|n1]Du[n])

    • Задержка оценки:

      u[n]=Kxx[n|n1]Kixi[n]

    • Оценка тока:

      u[n]=Kxx[n|n]Kixi[n]Kww[n|n]=Kxx[n|n1]Kixi[n](KxMx+KwMw)yinn[n]

      yinn[n]=y[n]Cx[n|n1]Du[n]

Вот,

  • A, B, C и D являются матрицами пространства состояний регулятора LQG, reg.

  • xi является интегралом ошибки отслеживания r - y.

  • Kx, Kw, Ki, L, Mx, и Mw являются контроллером, и матрицы выгоды оценщика возвратились в info.

См. также

| | | | | |

Представлено до R2006a