matlab lqg,Linear-Quadratic-Gaussian (LQG) design

lqg

Linear-Quadratic-Gaussian (LQG) design

Syntax

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(___)

Description

reg = lqg(sys,QXU,QWV) computes an optimal

linear-quadratic-Gaussian (LQG) regulator reg given

a state-space model sys of the plant and weighting

matrices QXU and QWV. The dynamic

regulator reg uses the measurements y to

generate a control signal u that regulates y around

the zero value. Use positive feedback to connect this regulator to

the plant output y.

matlab lqg,Linear-Quadratic-Gaussian (LQG) design_第1张图片

The LQG regulator minimizes the cost function

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

subject to the plant equations

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

where the process noise w and measurement

noise v are Gaussian white noises with covariance:

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

reg = lqg(sys,QXU,QWV,QI) uses the setpoint

command r and measurements y to

generate the control signal u. reg has

integral action to ensure that y tracks the command r.

matlab lqg,Linear-Quadratic-Gaussian (LQG) design_第2张图片

The LQG servo-controller minimizes

the cost function

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

where xi is

the integral of the tracking error r - y.

For MIMO systems, r, y, and xi must

have the same length.

reg = lqg(sys,QXU,QWV,QI,'1dof') computes

a one-degree-of-freedom servo controller that takes e = r - y rather

than [r ; y] as input.

reg = lqg(sys,QXU,QWV,QI,'2dof') is equivalent

to LQG(sys,QXU,QWV,QI) and produces the two-degree-of-freedom

servo-controller shown previously.

reg = lqg(___,'current') uses the "current" Kalman estimator, which

uses x[n|n] as the state estimate

when computing an LQG regulator for a discrete-time system.

[reg,info] = lqg(___) returns the controller and estimator gain

matrices in the structure info for any of the previous syntaxes. You can

use the controller and estimator gains to, for example, implement the controller in observer

form. For more information, see Algorithms.

Examples

Linear-Quadratic-Gaussian (LQG) Regulator

and Servo Controller Design

This example shows how to design an linear-quadratic-Gaussian

(LQG) regulator, a one-degree-of-freedom LQG servo controller, and

a two-degree-of-freedom LQG servo controller for the following system.

matlab lqg,Linear-Quadratic-Gaussian (LQG) design_第3张图片

The plant has three states

(x), two control inputs (u),

three random inputs (w), one output (y),

measurement noise for the output (v), and the following

state and measurement equations.

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

where

A=[010001100]B=[0.3101−0.30.9]C=[1.91.31]D=[0.53−0.61]

The system has the following noise covariance data:

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

For the regulator, use the following cost function to define

the tradeoff between regulation performance and control effort:

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

For the servo controllers, use the following cost function to

define the tradeoff between tracker performance and control effort:

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

To design the LQG controllers for this system:

Create the state-space system by typing the following in the MATLAB Command

Window:

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

Define the noise covariance data and the weighting matrices by typing the following

commands:

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

Form the LQG regulator by typing the following

command:

KLQG = lqg(sys,QXU,QWV)This

command returns the following LQG

regulator:

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.

Form the one-degree-of-freedom LQG servo controller by typing the following

command:

KLQG1 = lqg(sys,QXU,QWV,QI,'1dof')This

command returns the following LQG servo

controller:

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.

Form the two-degree-of-freedom LQG servo controller by typing the following

command:

KLQG2 = lqg(sys,QXU,QWV,QI,'2dof')This

command returns the following LQG servo

controller:

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.

Tips

lqg can be used for both continuous- and discrete-time plants. In

discrete time, lqg uses

x[n|n-1] as its state estimate

by default. To use x[n|n] as the

state estimate and compute the optimal LQG controller, use the

'current' input argument. For details on the state estimators, see

kalman.

To compute the LQG regulator, lqg uses the commands lqr and kalman. To compute the servo-controller,

lqg uses the commands lqi and kalman.

When you want more flexibility for designing regulators, you can use the lqr, kalman, and lqgreg commands. When you want more flexibility for designing servo

controllers, you can use the lqi, kalman, and lqgtrack commands. For more information on

using these commands and how to decide when to use them, see Linear-Quadratic-Gaussian (LQG) Design for Regulation and Linear-Quadratic-Gaussian (LQG) Design of Servo Controller with Integral Action.

Algorithms

The controller equations are:

For continuous time:

dxe=Axe+Bu+L(y−Cxe−Du)u=−Kxxe−Kixi

For discrete time:

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

Delayed estimator:

u[n]=−Kxx[n|n−1]−Kixi[n]

Current estimator:

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

yinn[n]=y[n]−Cx[n|n−1]−Du[n]

Here,

A, B, C, and

D are the state-space matrices of the LQG regulator,

reg.

xi is the integral of the tracking error

r - y.

Kx,

Kw,

Ki, L,

Mx, and

Mw are the controller and estimator gain

matrices returned in info.

Introduced before R2006a

你可能感兴趣的:(matlab,lqg)