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. Для получения дополнительной информации об использовании этих команд и как решить, когда использовать их, см. Проект "линейного квадратичного гауссова" (LQG) для Регулирования и Проект "линейного квадратичного гауссова" (LQG) Контроллера Сервомотора с Интегральным Действием.

Алгоритмы

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

  • В течение непрерывного времени:

    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