예제를 통해 자신의 것으로 만들자.











'제어특론' 카테고리의 다른 글

예제  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control [이산시스템]  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05

연속시스템과 이산시스템 비교

'제어특론' 카테고리의 다른 글

예제  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control [이산시스템]  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05

선형 2차 시스템의 최적제어에 대해서 다룬다,

앞선 글의 Optimal Control을 먼저 학습해두기 바란다.


1.시작하기에 앞서


LQ Optimal Control은 선형시스템의 상태 피드백 제어의 게인을 구하기 위한 방법이다.

선형시스템을 대상으로 하기 때문에 비선형 시스템이 대상일 경우 선형화를 해야겠다.


Motivation

1. MIMO(Multi Input Multi Output)시스템의 pole placement(특성 방정식의 근을 찾는 것) 상태 피드백 제어는 상태입력의 크기를 고려하지 않기 때문에 상태의 갯수가 커질수록 계산이 간단하지 않다.


ex)


2차 시스템에서 Gain K의 미지수는 4개인데 비해 주어지는 방정식은 2개이다. 이를 풀기 위해서는 여러가지 제한사항이 필요하다.


2. 강인제어와는 달리 최적제어의 목표는 시스템이 목표값에 최소의 Cost(에너지)로 최대한 빠르게 수렴하는 것이다.



시스템의 목표값이 정해지면 이에 접근하기 위해 입력 u가 필요해 진다. 최적제어는 이 목표값에 도달하는 Cost와 시간을 최소화 하는데 목적을 두고있다.


2.LQ 시스템

아래와 같은 시스템에 있어서




평가함수(목적함수)는 다음과 같다.(이전 글의 3.최적제어 시스템의 설계 참조)


tf는 최종시간이다.

목적함수 J의 첫째항은 최종시간 tf에서 목표값 x와 상태값 간의 오차(error)에 대한 penalty 이며 적분항에서 첫째항은 순시적인 에러, 둘째항은 순시적인 제어입력의 규모와 관계되어 있다. 아직은 이해하기 어려우니 S, Q, R이 각각 그런의미라는 것만 기억해 두자.

최적제어문제는 상태(x와 관계된)에러와 제어(u와 관계)에러의 최적의 절충된 값을 찾는것이 요점이다. 따라서 Q와 R의 절대적인 값보다는 이 두 값의 비율이 더욱 중요시 된다.


여기서 S와 Q 는 nxn의 symmetric psd(positive semi-definite) 행렬이며, R은 mxm pd(positive definite)행렬이다.


3.LQ Problem의 Solution

평가함수 J를 최소화 하는 최적제어는 아래와 같다,


H는 Ricatti equation의 해 이며는 Gain이다.

tf는 최종시간이다.


실효 최저코스트는 아래의 식으로 주어진다.


눈여겨 볼것이 있는데 H(tf)가 S로 수렴한다는 사실과 위의 J의 optimal식이 J의 식의 제일 첫항과 관계있다는 것이다.


4. Stationary LQ(Infinite time Hprizon LQ)

 위의 최적제어는 선형상태 피드백제어이지만 피드백 Gain이 시간의 함수임을 알 수 있다. 이것은 시스템의 거동이이 유한한 시간으로 한정되어 있기 때문이다.(duration : tf-t0)

 이 시변 피드백 게인은 Ricatti Equation의 해인 H(t)에 의존하고 있다. 시스템의 H(t)가 유한시간의 Ricatti equation으로 주어지기 때문에 우리는 H(t)을 최종시간(tf)에 역방향을 향한 적분식으로 구할 수 있다.


Ricatti equation는 x와 u에 의존하지 않기 때문에 제어기에 적용되기 전에 off-line 으로 연산될 수 있다.


ex)





Stationary LQ(Infinite time Horizon LQ)

실용적인 관점에서 보아, 우리는 시변인 gain보다는 시불변인 constant한 gain이 더 필요하다.


아래의 세 조건을 보자.

1. 제어대상이 제어가능하다

2. 최종시간 tf가 무한이다. 즉, tf=infinite

3. A, Q를 이루는 L()이 관측가능하다.


위의 세 조건이 만족할 때 아래와 같은 목표함수를 최소화 하는 최적제어를 구할 수 있다.

앞선 예시의 H(t)를 보면 

tf가 infinite라고 하면 tf근처의 시간을 제외한 모든 시간에서 H(t)가 constant함을 알 수 있다.


그리고 constant한 영역에서의 Ricatti equation은 아래와 같다.


목적함수의 식은 아래와 같았다.

이때, closed loop system의 는 점근적으로 안정하다.


x(tf)는 tf가 infinite가 됨에따라 0으로 수렴하게 된다. 결국 적분항만이 남게되어

가 된다.


Linear Quadratic Integral Control(LQI)


(위에서 e만 눈여겨 보면 됨, v->r)


r이 목표값이며 e는 출력값 y와 목표값 r간의 오차임을 숙지하며 r이 시간이 지남에 따라 y에 수렴함을 잊지말자.

[그래프는 나중에 삽입]


PSD, PD


'제어특론' 카테고리의 다른 글

예제  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control [이산시스템]  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05

들어가기 전에 다음 사이트를 참조할 수 있음을 알린다.

http://www.cyworld.com/jung40l/13661169


최적제어에 대해서 다룬다. 총 4파트로 나누어 설명하겠으며 이번 파트는 뒤의 세 파트와는 다른 자료(일본 도서)를 참고했으므로 사용하는 언어가 다를 수 있다.


1.정정행렬(正定行列)

nXn 대칭행렬이며 다음과 같은 특징을 가진다.


임의의 0이아닌 벡터 x∈R (x≠[0,...,0]T)에 대해, 2차형식함수 xTQx가 xTQx>0의 관계를 만족하는 대칭행렬 Q∈R(nXn)을 정정행렬이라 한다. 또한 정정행렬은 대칭행렬만으로 정의됨에 주의한다.


풀어서 설명하면

(1)Q는 대칭행렬이다.

(2)Q는 실수행렬이다.

(3)xTQx는 실수행렬이다.

(4)xTQx는 0보다 크다.


위 모든 조건을 만족하는 행렬 Q이다.

아래 예제를 다뤄보자. 문제를 풀기전에 앞으로 행렬을 다음과 같이 표기하기도 할것임을 밝혀둔다.

Q=[1 0; 0 1]

1행 : 1 0

2행 : 0 1


예제1)다음 행렬의 정정성(正定性)을 확인하시오.

Q=[1 0; 0 1]


 xTQx = x1^2+x2^2 > 0

x1과 x2가 동시에 0이 아닌 한 xTQx는 항상 0보다 크다. 따라서 정정행렬이다.


예제2)다음행렬의 정정성을 확인하시오.

Q=[1 1;1 1]


xTQx = x1^2 + 2x1x2 + x2^2 = (x1+x2)^2 >=0

위의 경우 예를들어 x1= -1, x2=1의 경우 0일 수 있기 때문에 정정행렬이 아니다.


예제3)다음행렬의 정정성을 확인하시오.

Q=[1 2; 2 1]


xTQx = x1^2 + 4x1x2+ x2^2 = (x1+2x2)^2 - 3x2^2

따라서 정정행렬이 아니다.

------------------------------------------

차수가 낮은 행렬은 그 정정성을 확인하기 쉽지만 차수가 높아질수록 이를 판별하기 어려워진다. 이를 위한 판별법이 실베스터 판별법이다. 이 방법은 대칭행렬의 주좌소행렬의 행렬식의 부호를 통해 정정성을 판별한다.


실베스터 판별법

3차 행렬의 경우 3개의 주좌소행렬은 아래와 같다.

위 주좌소행렬의 행렬식을 통해 대칭행렬의 정정성을 판별할 수 있다.


예제)다음 대칭행렬의 정정성을 알아보시오

Q = [2 -1 0;-1 1 0; 0 0 1]


1차 주좌소행렬 : Q(1) = [2]

2차 주좌소행렬 : Q(1,2) = [2, -1;-1 1]

3차 주좌소행렬 : Q(1,2,3) = Q


det(Q(1)) = 2

det(Q(1,2)) = 1

det(Q(1,2,3)) = det(Q) = 1


따라서 Q는 정정행렬이다.

------------------------------------------

2. Ricatti equation


우리가 제어기를 설계할 때, 대상 시스템 방정식은 아래와 같다.


위 시스템행렬 A와 입력벡터 B를 포함한 Ricatti 방정식은 아래와 같다.

증명은 후에 다루도록 하겠다.


행렬 Q는 설계자가 정하는 정정행렬이며 정수 R 역시 설계자가 정하는 양의 정수이다.

행렬 H는 Ricatti방정식을 만족하는 해 이다. Ricatti 방정식의 해 H는 다음과 같다.

:시스템식이 가제어인 경우, 임의의 정정행렬 Q와 힘의의 양의 정수 R에 대해, Ricatti 방정식은 실수로 이루어진 정정행렬의 해를 가진다. 일반적으로 Ricatti방정식은 복수의 해 H를 가지지만, 해가 실수로 이루어진 정정행렬은 단 하나이다.


다시 정리하자면

(1)시스템식이 가제어일 때

(2)H는 정정행렬이다. 따라서

(3)H는 P.D(Positive Definite: 위의 정정행렬의 조건을 만족)이다.


아래 예제를 다뤄보자.


예제)가제어인 아래의 시스템의 Ricatti 방정식의 해를 구하시오

풀이)


h는 실수해만을 가지기 때문에 h2=1이다.


정정성을 조사하면 h3=√3일 때 h가 정정성을 가짐을 알 수 있다.


Q와 R에 있어서 중요한것은 그 값이 아니라 Q와 R의 비라는 것을, 이해하고 있지 않더라고 기억해두기 바란다.

--------------------------------

3.최적제어 시스템의 설계

가제어인 시스템

에 있어서 평가함수(목적함수)는 다음과 같다.


 이 목적함수를 최소로 하는 제어기를 설계하면 목적하는 사항에 대한 Cost를 최소로 하는 제어기를 설계할 수 있다.

대강 설명하자면 위 함수에서 Q와 관계된 첫째항은 상태의 에너지를 가리키며 R와 관련된 둘째항은 입력의 에너지를 가리킨다. 이를 적분한것이 목적함수이다.


상태와 입력에 대한 가중치 Q,R은 설계자가 정할 수 있다. 이 두 가중치를 어떻게 설계하느냐에 따라 그 제어기의 성능이 정해진다 할 수 있겠다.


위 시스템에 대해 목적함수를 최소화하는 제어기는 Ricatti방정식의 실정정행렬의 해 를 사용해

위와같이 구할 수 있다. 이 제어기를 이용해 제어를 할 때, 목적함수식이 최소가 되며

가 된다. 이는 아래의 블록선도로 표현할 수 있다.


목적함수의 가중치 설정법


J의 수식 중 xTQx를 아래와 같이 풀 수 있다.


아래의 질량-댐퍼 시스템과 그 목적함수를 보자.

r은 입력에 대한 가중치이며 본래 목적함수

와 비교하여

를 구할 수 있다. 이에대한 Ricatti 방정식과 제어기는

이다.


여기서 문제는 목적함수 내의 q11, q22, R의 값에 따른 제어기에 의한 시스템의 응답이다.


나중에 그래프로 더 자세하게 다루겠지만 한가지 요소가 상승하면 그 요소에 대한 수렴속도가 빨라지고, 최대치가 낮아지며 나머지 요소에 대한 수렴속도가 낮아지고, 최대치가 높아진다. 따라서 이러한 값들의 비율이 중요하다.


즉, Q와 R의 값 그 자체보다 그 비율이 중요하다는 것이다. 이는 시행착오가 필요한 문제이기도 하다.

--------------------------------

실전, 최적제어를 이용한 가속도제어


아래의 댐퍼시스템의 가속도를 제어하고자 한다.

눈치가 빠르신 분이라면 알겠지만 평범하게 보면 J에 가속도 요소가 들어갈 수 없다. 왜냐하면 xTQx의 x에는 변위와 속도요소까지만 있기 때문이다. 가속도 제어를 위해서는


그러나 (2)식으로는 u(t)의 제곱항이 존재할 수 없기 때문에 목적함수로 나타낼 수 없다.

따라서 입력항 u(t)를 다음과 같이 적분기를 사용하여 생성하도록 한다.



이에 의해 확대된 시스템은 위와 같으며, 새로운 상태벡터 z(t)와 일련의 A,b,c는


가 된다. 목적함수 J는


이에 대한 정정행렬 Q는

정정성 판별을 통해 Q가 정정성을 가지기 위해서는 q11, q22, qa가 양수여야 함을 알 수 있다.


Ricatti 방정식을 통해 해 H와 제어기를 설계할 수 있다.

'제어특론' 카테고리의 다른 글

Linear Quadratic(LQ) Optimal Control [이산시스템]  (0) 2014.11.03
Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05
상태 피드백 제어와 옵저버  (0) 2014.10.05

이번에는 앞서 공부한 상태옵저버를 이산시스템에 적용시켜 보겠다.


실제 개발환경에서는 연속시스템이 아닌 이산시스템을 기반으로 하기 때문이다. 하지만 그렇게 큰 차이는 없다.



연속시스템과 다른부분은 x(k+1)일 것이다. x의 k+1에서의 상태는 k일 때의 x와 u에 의해 정해진다. 따라서 A와 B역시 이를 고려하여 설계해야겠다.




위 세식은 연속시스템과 같은 방식으로 도출할 수 있다.

아래 식을 보자



즉, 에러 e의 안정적인 수렴을 위해서는 (A-LC)의 pole이 단위원 내에 존재해야 한다.

-----------------------------------------------------------------------------------------

위 실선까지가 앞선 연속시스템을 이산시스템으로 옮긴것이다. 지금까지는 센서를 통한 측정값과 추정값간의 오차를 줄여나가는 제어를 다루었다. 이에 더 나아가 예측값까지 다루고자한다.


우선, 예측과 추정은 어떻게 다를까?

예측은 '다음'을 내다보는 것이고, 추정은 측정된 정보에 대하여 판단하는 것이다. 아래 식을 보자.

  : k타임에서 예측한, k+1타임에서의 예측값

 예측값을 토대로한 k+1타임에서의 추정값


k타임의 추정 x와 입력 u를 기반으로 다음 타임인 k+1에서의 상태x를 '예측'하였다. 이는 실제 k+1타임이 오기전, k타임에서 내다본 예측이다.

k+1타임이 되면서 측정출력 y(k+1)와 예측출력 y(k+1|k)간의 오차와 예측상태 x(k+1|x)를 기반으로 추정상태 x(k+1|k+1)을 구하였다.


측정한 상태 x(k+1)과 출력 y(k+1)에는 실제값과는 다른, 노이즈가 있을 수 있다. 추정값과 측정값사이의 오차 e가 0으로 수렴한다면, 그리고 시스템의 제어를 이 추정값을 기반으로 한다면 측정값 x에 노이지가 발생하더라도 이의 영향을 최소화 할 수 있다.


위의 모든 식을 통해 아래와 같은 결론이 나온다. 증명은 스스로 해보자


'제어특론' 카테고리의 다른 글

Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05
상태 피드백 제어와 옵저버  (0) 2014.10.05
시작하기에 앞서  (0) 2014.10.05

지난번 다룬것

1. 상태 피드백과 옵저버

2. 가제어와 가관측


※추정과 예측의 필요성을 약간 다루었다.


------------------------------------------------------

상태 피드백 제어는 모든 state에 대한 정보를 필요로 한다.(x1, x2, x3등등 모든 값을 알아야 이들을 제어할 수 있다.)

만약 일부 state를 구할 수 없다면 어떻게 해야할까? 우리는 예측, 추정(Estimate)이라도 해야 할 것이다. 이를 도와주는 것 또한 Observer이다.




위 블록선도를 보자. 제일 위의 블록은 실제 시스템이며 그 아래는 예측, 추정을 한것이다. 좀더 상세하게 설명하자면 1번 블록은 입력 u에 따른 실제 시스템의 거동이고 2번 블록은 실제 입력에 따라 추정된 시스템의 거동이다. 위 블록선도는 이 추정된 시스템의 거동을 피드백하고 있다.


자, 그냥 설명을 들으면 저 시스템에 무슨 문제가 있겠는가 생각 할 수 있으나 과연 저 추정된 시스템의 거동이 실제거동과 일치한다고 할 수 있을까?


우리가 센서를 통해서 얻는 시스템의 거동에는 Noise가 있을수 있으며 이를 완벽히 배제할 수 없다. 센서는 분명 정확하겠지만 절대적이 아닐 수 있다. 약간의 오차가 있을 수 있을 수 있다.


지난번에 다른 상태피드백에 이어서 PID제어를 할 것이며 이 PID제어를 잘 다루면 위에서 언급하는 약간의 오차를 커버할 수 있을 것이다. PID제어는 추정과 예측을 다루지 않는다.


하지만 우리가 앞으로 다루고자 하는 제어에는 이 추정과 예측이 매우 중요하다. 우리는 추정과 예측을 통해서 이 약간의 오차까지 통제하에 두고자 한다.


자, 다시 문제로 돌아가자, 우리가 피드백 받아야 하는것은 그저 추정된 시스템의 거동이 아니다. 왜냐하면 실제 시스템의 거동과 추정된 시스템의 거동사이에 오차가 있기 때문이다. 여기서 피드백 받아야 하는것은 이 실제 시스템과 추정 시스템 사이의 오차이다.


실제 출력 Y와 추정출력 Y 사이의 오차를 피드백 L을 받고 이를 기반으로 예측, 추정 후 피드백 K를 입력에 반영한다.

  : x의 추정값.


 : x의 실제값과 추정값 사이의 오차



위 블록선도와 함께 기본적으로 숙지해두어야할 수식이다.

expononential e와 오차의 e를 함께 쓰고있어서 헷갈릴 수 있으니 주의하자.









위 블록선도를 풀어서 위와 같은 식이 나온다. 참고로 Y와 Y추정값 사이의 차가 위 블록선도의 ε이다.


상태에 대한 오차가 0에 수렴한다면 추정값이 실제값과 같다고 할 수 있다.



예시를 통해 연습해 보자.


1)가제어, 가관측성



2)closed loop


3)pole placement


위 식에서 우리가 고유치(eigenvalue)를 -1,-1로 설정하고자 한다면 l1=3, l4=4로 정해주면 된다.


여기서 한가지 짚고갈것이 있다. eigenvalue의 설정과 그 의의이다. 제어를 배우신 분이라면 알것이라 생각된다.


좌측 사진은 eigenvalue를 -1,-1로 잡은것이다.

eigenvalue가 좌측으로 간다면, 즉 더 작아진다면 어떻게 될까?


역라플라스변환에 의한 x,y의 지수함수표현은 eignenvalue에 의해 정해지며 -방향으로 커질수록 exponential의 수렴속도는 커질것이다.


그런데 위 식에서 LCe를 눈여겨보자.

LCe = LC(x-x^) = LC(y-y^)이다.

우리가 실제값이라고 생각하는 x에는 센서를 통해 측정하는 만큼 사실 잡음(Noise)가 있을 수 있다.  우리가 eigenvalue를 설정하기 위해 잡아주는 l1과 l2에 의해 이 잡음들이 증폭될 가능성이 있다.


우리는 이를 고려하여 eigenvalue및 L값을 설정해줘야 할것이다.

또, 앞으로는 x에 대하여 실제값이라 하지 않고, 측정값이라 하도록 하겠다.

'제어특론' 카테고리의 다른 글

Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05
상태 피드백 제어와 옵저버  (0) 2014.10.05
시작하기에 앞서  (0) 2014.10.05

우리나라 대학 학부과정에서 배우는 사항이나 본격적으로 들어가기 전에 한번 다루도록 합니다.


아래는 기본적인 제어시스템중 하나입니다. 입력 u가 들어가서 출력 y가 나오며 아무런 피드백도, 순환도 없습니다.

Open-loop 시스템 입니다.


아래로 그어진 선은 신경쓰지 마시고, 위 블록선도에 대해 아래와 같은 식을 전개할 수 있습니다.


이 시스템에 대해서 우리가 입력 u에 따른 출력 y를 정의내릴 수 있고 입력 u를 직접 제어하여 출력 y를 조절해 줄 수 있다고 해도 이 연속적인 시간시스템에 대해서 인간의 힘으로는 연속적인 제어가 불가능 합니다. 그렇다면 그 시스템 스스로 출력을 대해 설계자가 원하는 방식으로 입력u를 '알아서 제어'하도록 해주어야 하겠습니다.



위의 Open-loop시스템을 아래와 같은 Closed-loop 시스템으로 바꿔줄 수 있습니다.



시스템에 들어가는 입력 u는 게인K가 곱해진 KX와 r간의 관계식에 의해 정해진다.

r(t)와 KX에 대해서 어떻게 설명해야 할지 모르겠다...



'제어특론' 카테고리의 다른 글

Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05
상태 피드백 제어와 옵저버  (0) 2014.10.05
시작하기에 앞서  (0) 2014.10.05

본 제어특론은 제어시스템과 관련하여 초보자를 대상으로 하는것이 아님을 미리 밝혀둡니다.(본인은 초보자이지만..)


본 과목을 이해하기 위해서, 본인의 경우 가제어, 가관측, 옵저버 까지는 학습한 상태임을 미리 밝힙니다. 하지만 PID나 근궤적 등은 학습하지 않았습니다.


'제어특론' 카테고리의 다른 글

Linear Quadratic(LQ) Optimal Control  (0) 2014.11.02
Optimal Control(1)  (0) 2014.10.05
Design of state observers(2)  (0) 2014.10.05
Design of state observers(1)  (0) 2014.10.05
상태 피드백 제어와 옵저버  (0) 2014.10.05
시작하기에 앞서  (0) 2014.10.05

+ Recent posts