lqg
선형-2차-가우스(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)
는 플랜트의 상태공간 모델 sys
와 가중 행렬 QXU
및 QWV
가 주어진 경우, 최적의 선형-2차-가우스(LQG) 조절기 reg
를 계산합니다. 동적 조절기 reg
는 측정값 y를 사용하여 0 값 부근에서 y를 조절하는 제어 신호 u를 생성합니다. 양의 피드백을 사용하여 이 조절기를 플랜트 출력 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')
는 입력으로 [r ; y]가 아니라 e = r - y를 받는 1자유도 서보 제어기를 계산합니다.
reg = lqg(sys,QXU,QWV,QI,'2dof')
는 LQG(sys,QXU,QWV,QI)
와 동일하며, 위에서 표시된 2자유도 서보 제어기를 생성합니다.
reg = lqg(___,'current')
는 이산시간 시스템에 대해 LQG 조절기를 계산할 때 x[n|n]을 상태 추정값으로 사용하는 "현재" 칼만 추정기를 사용합니다.
[reg,info] = lqg(___)
는 위에 열거된 모든 구문에서 제어기 이득 행렬과 추정기 이득 행렬을 구조체 info
로 반환합니다. 예를 들어, 제어기 이득과 추정기 이득을 사용하여 제어기를 관측기 형식으로 구현할 수 있습니다. 자세한 내용은 알고리즘 항목을 참조하십시오.
예제
선형-2차-가우스(LQG) 조절기와 서보 제어기 설계
이 예제에서는 다음의 시스템에 대해 선형-2차-가우스(LQG) 조절기, 1자유도 LQG 서보 제어기, 2자유도 LQG 서보 제어기를 설계하는 방법을 보여줍니다.
플랜트에는 3개의 상태(x), 2개의 제어 입력(u), 3개의 임의의 입력(w), 1개의 출력(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 조절기를 형성합니다.
이 명령은 다음 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.
다음 명령을 입력하여 1자유도 LQG 서보 제어기를 생성합니다.
이 명령은 다음 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.
다음 명령을 입력하여 2자유도 LQG 서보 제어기를 생성합니다.
이 명령은 다음 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
명령을 사용할 수 있습니다. 이러한 명령을 사용하는 방법과 언제 사용하는지에 대한 자세한 내용은 조절을 위한 선형-2차-가우스(LQG) 설계 항목과 적분 동작을 갖는 서보 제어기의 선형-2차-가우스(LQG) 설계 항목을 참조하십시오.
알고리즘
제어기 방정식은 다음과 같습니다.
연속시간의 경우:
이산시간의 경우:
지연 추정기:
현재 추정기:
여기서 각각은 다음을 나타냅니다.
A, B, C, D는 LQG 조절기
reg
의 상태공간 행렬입니다.xi는 추종 오차 r - y의 적분입니다.
Kx, Kw, Ki, L, Mx, Mw는
info
로 반환되는 제어기 이득 행렬과 추정기 이득 행렬입니다.
버전 내역
R2006a 이전에 개발됨