Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

lqr

선형-2차 조절기(LQR) 설계

설명

예제

[K,S,P] = lqr(sys,Q,R,N)은 최적 이득 행렬 K, 관련된 대수 리카티 방정식의 해 S, 연속시간 또는 이산시간 상태공간 모델 sys의 폐루프 극점 P를 계산합니다. QR은 각각 상태와 입력에 대한 가중치 행렬입니다. 교차 항 행렬 N은 누락된 경우 0으로 설정됩니다.

예제

[K,S,P] = lqr(A,B,Q,R,N)은 연속시간 상태공간 행렬 AB를 사용하여, 최적 이득 행렬 K, 관련된 대수 리카티 방정식의 해 S, 폐루프 극점 P를 계산합니다. 이 구문은 연속시간 모델에만 유효합니다. 이산시간 모델의 경우 dlqr을 사용하십시오.

예제

모두 축소

출력이 카트 변위 x와 진자각 θ인 경우 pendulumModelCart.mat는 카트의 역진자에 대한 상태공간 모델을 포함합니다. 제어 입력 u는 카트에 작용하는 수평력입니다.

[x˙x¨θ˙θ¨]=[01000-0.13000010-0.5300][xx˙θθ˙]+[0205]uy=[10000010][xx˙θθ˙]+[00]u

먼저 상태공간 모델 sys를 작업 공간에 불러옵니다.

load('pendulumCartModel.mat','sys')

출력이 xθ이고 입력이 하나뿐이므로, Bryson의 규칙을 사용하여 QR을 확인합니다.

Q = [1,0,0,0;...
    0,0,0,0;...
    0,0,1,0;...
    0,0,0,0];
R = 1;

lqr을 사용하여 이득 행렬 K를 구합니다. N이 지정되지 않았으므로 lqrN을 0으로 설정합니다.

[K,S,P] = lqr(sys,Q,R)
K = 1×4

   -1.0000   -1.7559   16.9145    3.2274

S = 4×4

    1.5346    1.2127   -3.2274   -0.6851
    1.2127    1.5321   -4.5626   -0.9640
   -3.2274   -4.5626   26.5487    5.2079
   -0.6851   -0.9640    5.2079    1.0311

P = 4×1 complex

  -0.8684 + 0.8523i
  -0.8684 - 0.8523i
  -5.4941 + 0.4564i
  -5.4941 - 0.4564i

Bryson의 규칙은 대체로 만족스런 결과를 제공하지만, 설계 요구 사항에 따라 폐루프 시스템 응답을 조정하기 위한 시행착오 반복 설계 절차의 시작점에 불과한 경우가 많습니다.

aircraftPitchModel.mat는 비행기의 상태공간 행렬을 포함합니다. 여기서 입력은 승강타 편향각 δ이고 출력은 비행기 피치각 θ입니다.

[α˙q˙θ˙]=[-0.31356.70-0.0139-0.4260056.70][αqθ]+[0.2320.02030][δ]y=[001][αqθ]+[0][δ]

계단 기준이 0.2라디안인 경우 다음 설계 조건을 고려하십시오.

  • 상승 시간이 2초 미만임

  • 정착 시간이 10초 미만임

  • 정상 상태 오차가 2%보다 작음

모델 데이터를 작업 공간에 불러옵니다.

load('aircraftPitchModel.mat')

상태-비용 가중 행렬 Q와 제어 가중 행렬 R을 정의합니다. 일반적으로 초기 가중 행렬 QR은 Bryson의 규칙을 사용하여 정의할 수 있습니다. 이 예에서는 행렬 Q에 대해 스케일링 인자 2와 함께 출력 벡터 C가 사용된다고 가정하고, R을 1로 선택해 보겠습니다. 시스템에 입력이 하나뿐이므로 R은 스칼라입니다.

R = 1
R = 1
Q1 = 2*C'*C
Q1 = 3×3

     0     0     0
     0     0     0
     0     0     2

lqr을 사용하여 이득 행렬을 계산합니다.

[K1,S1,P1] = lqr(A,B,Q1,R);

생성된 이득 행렬 K1을 사용하여 폐루프 계단 응답을 확인합니다.

sys1 = ss(A-B*K1,B,C,D);
step(sys1)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys1.

이 응답은 설계 목표에 부합하지 않으므로, 스케일링 인자를 25로 늘리고 이득 행렬 K2를 계산한 다음 이득 행렬 K2에 대한 폐루프 계단 응답을 확인합니다.

Q2 = 25*C'*C
Q2 = 3×3

     0     0     0
     0     0     0
     0     0    25

[K2,S2,P2] = lqr(A,B,Q2,R);
sys2 = ss(A-B*K2,B,C,D);
step(sys2)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys2.

폐루프 계단 응답 플롯에서 상승 시간, 정착 시간, 정상 상태 오차가 설계 목표에 부합합니다.

입력 인수

모두 축소

동적 시스템 모델로, ss 모델 객체로 지정됩니다.

상태 행렬로, n×n 행렬로 지정됩니다. 여기서 n은 상태 개수입니다.

입력-상태 행렬로, n×m의 입력-상태 행렬로 지정됩니다. 여기서 m은 입력 개수입니다.

상태-비용 가중 행렬로, n×n 행렬로 지정됩니다. 여기서 n은 상태 개수입니다. 다음과 같이 Bryson의 규칙을 사용하여 Q의 초기값을 설정할 수 있습니다.

Qi,i=1maximum acceptable value of (errorstates)2, i{1,2,...,n}Q=[Q1,1000Q2,200000Qn,n]

여기서 n은 상태 개수입니다.

입력-비용 가중 행렬로, D'D와 동일한 크기의 스칼라 또는 행렬로 지정됩니다. 여기서 D는 피드스루 상태공간 행렬입니다. 다음과 같이 Bryson의 규칙을 사용하여 R의 초기값을 설정할 수 있습니다.

Rj,j=1maximum acceptable value of (errorinputs)2, j{1,2,...,m}R=[R1,1000R2,200000Rm,m]

여기서 m은 입력 개수입니다.

교차 항 행렬(선택 사항)로, 행렬로 지정됩니다. N이 지정되지 않은 경우 기본적으로 lqrN을 0으로 설정합니다.

출력 인수

모두 축소

폐루프 시스템의 최적 이득으로, 크기가 n인 행 벡터로 반환됩니다. 여기서 n은 상태 개수입니다.

관련된 대수 리카티 방정식의 해로, n×n 행렬로 반환됩니다. 여기서 n은 상태 개수입니다. 즉, S는 상태공간 행렬 A와 차원이 동일합니다. 자세한 내용은 icare 항목과 idare 항목을 참조하십시오.

폐루프 시스템의 극점으로, 크기가 n인 열 벡터로 반환됩니다. 여기서 n은 상태 개수입니다.

제한 사항

입력 데이터는 다음 조건을 충족해야 합니다.

  • AB 쌍은 안정화 가능해야 합니다.

  • [Q,N;N',R]은 음이 아닌 정부호 행렬이어야 합니다.

  • R>0QNR1NT0이어야 합니다.

  • (QNR1NT,ABR1NT)의 허수축에(또는 이산시간에서는 단위원에) 관측 불가능한 모드가 없어야 합니다.

  • lqr는 정칙 E를 갖는 설명자 모델을 지원합니다. lqr의 출력 S는 상응하는 명시적 상태공간 모델에 대한 대수 리카티 방정식의 해입니다.

    dxdt=E1Ax+E1Bu

알고리즘

연속시간 시스템의 경우 lqr은 다음과 같은 2차 비용 함수를 최소화하는 상태-피드백 제어 u=Kx를 계산합니다.

J(u)=0(xTQx+uTRu+2xTNu)dt

여기에는 시스템 동특성 x˙=Ax+Bu가 적용됩니다.

lqr은 상태-피드백 이득 K 외에도 그와 관련된 다음 대수 리카티 방정식의 해 S

ATS+SA(SB+N)R1(BTS+NT)+Q=0

폐루프 극점 P = eig(ABK)를 반환합니다. 다음을 사용하여 S에서 이득 행렬 K가 도출됩니다.

K=R1(BTS+NT).

이산시간 시스템의 경우 lqr은 다음을 최소화하는 상태-피드백 제어 un=Kxn을 계산합니다.

J=n=0{xTQx+uTRu+2xTNu}

여기에는 시스템 동특성 xn+1=Axn+Bun이 적용됩니다.

어떤 경우이든 교차 항 행렬 N을 생략하면 lqrN을 0으로 설정합니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | | | | |