최근 수정 시각 : 2024-09-12 23:44:22

제어


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
언어학에서의 제어에 대한 내용은 분류:제어 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
1. 개요2. 시스템 모델링
2.1. 전달 함수2.2. 상태방정식
3. 제어 이론
3.1. Open-loop 제어3.2. On-Off 제어3.3. PID 계열
3.3.1. P 제어3.3.2. PI 제어3.3.3. PD 제어3.3.4. PID 제어3.3.5. 한계 감도법3.3.6. 진상보상기와 지상보상기
3.4. 2자유도 제어3.5. 기타 제어
4. 현대 제어
4.1. 최적 제어
4.1.1. LQR 제어
4.2. 모델 예측 제어4.3. 강건 제어
4.3.1. 불확실성
4.3.1.1. 모델 불확실성4.3.1.2. 외란4.3.1.3. 잡음
4.3.2. 슬라이딩 모드 제어4.3.3. H-2 제어4.3.4. H-infinity 제어
4.4. 적응 제어
4.4.1. 강건 제어와의 정성적 비교
4.5. 외란 관측 기반 제어
5. 현실의 제어

1. 개요

/ Control

시스템[1]을 원하는 방향으로 작동하게 만드는 학문의 총칭이다. 이를 수행하는 공학 분야를 제어공학이라고 한다. 인간 능력 이상의 정밀한 작업이나, 인간의 힘으로 할 수 없는 작업 등을 기계가 할 수 있게 하는 핵심적인 역할을 하는 학문으로, 원자력 발전, 항공우주, 로봇, 병기, 공장 자동화, 교통 시스템등 언제나 함께 하는 현대 과학 문명의 기둥과도 같은 존재. 컴퓨터를 사람의 뇌로 비유하자면 제어는 의식이라고 보면 된다.

앞서 말했듯이 어떤 특정 기계나 전자 시스템을 원하는 상태로 유지시키거나 가게 만드는 것이 제어 이론의 목적이다 (예를 들면 A 상태에 있는 시스템을 B 상태로 가게 만든다거나, 여러 외부 요인을 무시하고 A인 상태를 유지하게 만들거나 등등). 에어컨의 온도조절기라던지 자동차의 크루즈 컨트롤이 제어의 예시. 백문이불여일견 닥치고 봐보자

이 과목에서 모델링의 중요성을 깨달을 수 있다. 진동해석에서 63빌딩을 빔으로 볼 수 있는가, 서스펜션을 스프링댐퍼 시스템으로 볼 수 있는가와 같은 문제를 많이 다루며, 그 시스템의 반응과 PID, SMC를 통한 제어방법에 대하여 배운다. 개념의 물리적 이해가 받쳐주면 그닥 어렵지는 않다. 온갖 현대 수학 개념이 필요하다는 건 함정

학부 수준에서는 MATLAB을 이용한 전달함수(Transfer function) 구하기, 상태공간 방정식(state-space model) 세우기 같은 것도 배운다. 말이 좋아 배우기지 사실 MATLAB Demo 따라하기

오래전부터 움직이는 모터, 로봇, 드론, 자율이동체 등 이 원하는 성능을 갖도록 고전적인 제어공학이 발전되어 왔다. 점차 시스템이 복잡해지고, 원하는 성능도 높아지면서, 고전적인 제어공학으로 해결하기 힘든 현실적인 제어 문제가 많이 등장하였다. 최근 기존 제어와 비슷한 피드백 형식으로 시스템을 학습하고 원하는 성능을 얻어내는 강화학습은 이런 도전적인 제어 문제 해결에 큰 역할을 하고 있다.

2. 시스템 모델링

제어를 하기 위해서는 먼저 시스템의 특성을 파악해야 한다.

이를 위해서 시스템에 대해 해석할 수 있는 능력과 기본적으로 물리적 현상을 수학적으로 표현하는 능력, 그리고 제어 대상에 대한 학문의 이해가 필수적이다. 활용되는 이론들은 회로이론, 전자기학, 동역학, 열역학, 재료역학, 유체역학, 화학공학 등이 주로 시스템을 해석하는데 사용되고 이를 통해 물리적 현상을 수학적 모델을 기반으로 제어이론에 접목하게 된다.
물론 저걸 다하는 건 아니고 필요한 것만 사용하게 된다. 저걸 다 배우려면 전자공학, 기계공학, 화학공학 세 가지의 학위가 필요하다. [2]

결과적으로 시스템을 모델링 한다는 것은 미분방정식에 대한 이해와 함께 전기, 유공압, 기계와 같은 모델을 수학적으로 해석할 수 있는 시스템에 대한 선행 학습을 필요로 한다. 또한 이러한 미분방정식에 대한 해석을 보다 쉽게 하기 위해서는 라플라스 변환과 푸리에 변환을 이해하고 있어야 한다.

2.1. 전달 함수

Transfer Function
라플라스 변환의 s-domain을 이용하여 미분방정식을 대수방정식으로 바꾼 식. 이때 대개 다른 응답 및 초기조건은 0으로 두고 구한 것을 뜻한다.

시스템의 입력 R(s)에 따른 출력 Y(s)에 대해, 전달함수는 G(s) = Y(s) / R(s) 로 정의되며, 이는 통상적으로 다항식 / 다항식 꼴로 표현된다. 이는 t-domain 상에서 미분방정식에 의해 g(t)와 r(t)의 convolution으로 표현되던 y(t)가 s-domain 상에서는 G(s)와 R(s)의 곱셈이라는 대수적 관계로 Y(s)가 기술된다는 라플라스 변환의 성질로부터 영감을 얻어 고안된 개념이다.

또한, 다항식 p(s), q(s)로 표현된 전달함수 G(s) = p(s) / q(s)에 대하여, 분모의 다항식 q(s) = 0 이 되는 점을 극점(pole)이라 하며, 이 식을 특성 방정식(Characteristic Equation)이라 한다.
분자의 다항식 p(s) = 0 이 되는 점을 영점(zero)이라 한다.

특성방정식은 시스템의 특성을 나타내는데, 대표적으로 극점은 복소평면(Complex Plane) 상 좌반면(Left-Half Plane)에 있어야 해당 시스템은 안정(stable)하다.[3]

일반인을 위한 설명을 달자면, 예를 들어, 볼링공과 탁구공이 있다고 가정해 보자. 이 둘을 바닥에 던지면 볼링공은 바닥에 붙어버리듯이 떨어지는 반응을 보이지만, 탁구공은 몇번이고 튀어오르는 것을 반복하는 반응을 보여줄 것이고, 이러한 반응 특성을 수학적으로 풀어놓으면 이것이 전달함수가 된다.

이렇듯 세상의 모든 물체들은 힘을 가했을때 그 물체의 특성에 따라 고유한 반응을 보이며 이는 물체가 저마다 고유한 전달 함수를 가지고 있다는 것을 의미한다. 만약에, 전달 함수가 비슷한 두 물체에 같은 힘을 가한다면 두 물체는 비슷한 반응을 보여줄 것이고, 전달 함수가 상이한 물체의 경우 같은 힘을 가하면 전혀 다른 반응을 보여줄 것이다.

2.2. 상태방정식

시스템의 상태를 나타내는 방정식. 여기서 시스템의 상태란 시스템의 dynamic 특성을 나타내는 변수를 의미한다.

dot x = Ax+Bu / y=Cx+Du 의 형태로 나타낼 수 있다.
라플라스 변환을 통해
SX=AX+BU / Y=CX+DU 가 되며
(SI-A)X=BU , 단 I는 단위 행렬
X= inv(SI-A)*BU 의 형태로 표현할 수 있다.

D term 이 0 행렬이라면 즉, SISO sys (Single input single output) 이라면,

Y=C*inv(SI-A)*BU 가 되며 TF(전달함수) = 출력/ 입력 = Y(s)/R(s) = C*inv(SI-A)*B 가 된다.
여기서 inv(SI-A) =0 시스템의 특성방정식이 된다.

3. 제어 이론

제어는 크게 고전제어와 현대제어로 나뉘는데 칼만의 상태 방정식 도입 전후가 그 기준이다. 고전제어는 시스템의 미분방정식라플라스 변환하여 구해지는 전달함수에 기초하여 주파수 영역에서 컨트롤러를 설계하는 이론이다. 현대제어는 상태방정식으로 시스템을 표현하여, 시간영역에서 컨트롤러를 설계한다. 이름만 고전제어라 낡은 제어이론이라고 오해할 수 있으나, 고전제어는 강인(Robust)제어와 같은 시스템의 불확실성을 다루는 제어 분야에서 현대에도 이용된다. 고전제어는 입출력만 표현한다는 한계를 지니는 반면 현대제어는 상태방정식으로 시스템의 상태(State)까지 고려할 수 있어, 보다 복잡한 시스템의 제어를 가능케 한다. 그리고 시간영역이라 직관적인 장점이 있다. 현대에 들어서 연구된 수많은 제어 이론이 이 상태방정식에 기초하고 있다. 칼만 필터, 최적제어론, 적응제어 등이 대표적이다. 하지만 시스템의 표현이 상태의 도입형태에 따라서 달라지는 용장성(글이나 말 따위가 쓸데없이 길다)을 지니기 때문에 실제 산업에서 이용되기에는 너무 복잡하다. 그렇기 때문에 이론만 번지르르하지 실제론 아무런 도움이 안 된다는 평도 있다.

3.1. Open-loop 제어

우리가 일상에서 접하는 대부분의 제어가 이 방법이다. 밸브만 달려있는 수도꼭지, On/Off를 조절하는 전깃불, 가스불이나 선풍기의 Off/약/중/강 같은 것이 대표적인 예다. "이게 무슨 제어야? 그냥 입력을 넣는 거지"라고 생각할 수 있지만 가장 기본적인 제어이다.

매우 쉽다는 장점이 있다. 최종 결과는 튜닝으로 적절히 조절하면 된다. 정확히 시스템을 알고있는 경우에는 무엇보다 훌륭한 결과를 낼 수 있다[4]

단점은 상황판단을 못 하기 때문에 시스템에서 예상하지 못한 돌발사태에 약하다. 가스불 위에 있는 곰국이 숯덩이가 되는지 수도꼭지 아래 있는 물통이 넘치든지 상관없이 입력을 준다. 그래서 보통은 사람이나 외부에서 피드백을 하는 것을 볼 수 있다. 샤워기의 물을 적정온도로 맞추기 위한 끊임없는 노력은 훌륭한 인간피드백의 예라고 할 수 있다.

3.2. On-Off 제어

그냥 켰다 끄는 제어이다. 가장 간단한 피드백제어로 너무나 단순하고 간단한 이 제어까지가 우리가 일상적으로 볼 수 있는 제어 방식이다. 예를 들면 현관 등에서 사람이 지나가면(입력) 불을 켜고(출력) 입력변화가 없으면(입력) 불을 끈다(출력). 기본적인 온도제어도 다 이런 방식이다. 히터의 경우 기준보다 추우면(입력) 켜고(출력) 더우면(입력) 끈다(출력). Bang-bang control 이라 불리기도 한다.

이보다 좀 더 나아간 것이 히스테리시스 제어인데 이는 측정의 noise로 인한 오류를 방지하고자 발전된 것이다. 만약 20도가 적정온도인 냉장고에서 정확히 20도에 해당하는 온도가 되었을 때 무슨일이 벌어질까? 모든 세상의 온도 측정에는 노이즈가 있다. 20도라 해도 지금 측정하면 20.1도인데 0.1초 후에 측정해보면 19.9도일 수도 있다. 이를 고려하지 못한다면 0.1초마다 입력을 받는 시스템에서는 0.1초 또는 그에 상응하는 시간 간격으로 냉각기를 켰다 껐다 하게 될 수도 있다. 어린이가 집 전등으로 싸이키 조명을 키는 것처럼 엉망진창이 된다.(전기세 + 형광등 수명단축 +어머니의 등짝 스매시) 그래서 켜질 때는 20도 보다 낮게, 꺼질 때는 21도 정도로 유지하는 시스템을 구현한다[5] 물론 0.1도를 다투는 정밀 화학공정에서는 그런 것 없다.

3.3. PID 계열

PID제어는 시스템의 정보가 필요없는 컨트롤러 기반 제어기법이다. 별도의 시스템에 대한 해석 없이도 경험적으로 제어기를 조절하여 적당한 작동을 하면 바로 사용할 수 있을 만큼 간편하기 때문에 실제 공학분야에서 가장 많이 쓰이는 제어 방법이며, 로봇이 있는 자동화된 공장이 대표적 사용 사례지만, 드론 조종이나 엘리베이터의 고저차 조절 등 실생활에서 의외로 흔히 접할 수 있는편. 사실 PID만 해도 상당히 고급제어이고 이 이상 가는 이론의 경우는 실제 산업이나 공정 제어분야에서도 잘 사용하지 않기 때문에 접할 기회는 많지 않다. 다만 요즘 차량의 크루즈 컨트롤 중 고급 사양에는 쓰이고 있는 듯하다.[6] 또한 드론도 자세 제어에 PID 루프를 사용하며 하드디스크의 헤드 액츄에이터 또한 PID로 제어되기도 한다. PID 제어는 P제어 I 제어 D제어의 합쳐진 형태인데 각 제어에 대한 설명은 다음과 같다.

PID의 주축은 거의 속도와 관련된 것을 기준으로 삼는다. 적분은 위치/각도, 미분은 가속도로 대응되기 때문이다.

PID를 제대로 증명하고 쓰려면 매우 어렵지만, 수학 전공이 아닌 공대 대학원에서는 이런 복잡한 증명은 논문 쓸 때 인용하는 정도로 생략한다. [7]

3.3.1. P 제어

Proportional 제어 (비례 제어)
[math( \displaystyle K_p(s) = K_p )]
간단하게 설명하자면 목표와 지금 상태의 차이가 나는 만큼 제어입력을 넣는 것이다.

난방을 예로 들면 10도 에서 20도로 가열할 때 10에 해당하는 가열을 하고 만약에 15도에서 20도 가열할 때는 5에 해당하는 가열을 하는 것이다. 이 방법의 단점은 차이가 적어지면 적어질수록 20도로 가는 것이 어렵고 심지어는 영원히 도달하지 않을 수 있다.

만약 가열하는데 옆에 제어 1단위의 냉방기가 있다면[8] 19도에서 1단위의 난방을 해도 결과적으로 입력은 0인지라 19도에 수렴한다. 사실상 제어에 있어 이런 경우가 대부분이라 정밀제어에서는 P제어만을 사용하지 않는다. 하지만 오차에 민감하지 않은 경우 가장 기본적인 피드백 제어 방법으로 이러한 제어로도 충분하다.

가장 큰 단점은 steady-state error([math(e_ss)]))가 발생한다는 것으로, Transfer function에 Final value Theorem을 적용해보는 것으로 확인할 수 있다. unit step function input일 때를 생각해보면 Kp value를 무한에 도달시켜야만 steady-state error가 사라진다.

3.3.2. PI 제어

Proportional Integral 제어 (비례 적분 제어)
[math( \displaystyle K_{pi}(s) = K_p + {K_i \over s} = K_p(1 + {1 \over sT_i}) )]
앞서 말한 P제어의 한계 극복을 위해 등장한 방법이다. 이 방법은 오차를 적분해 나가는 방법이다.

앞서 예에서 19도에서 유지되는 경우 1단위의 제어를 시간에 따라서 계속 더해주게 된다. 그러면 결과적으로 제어 입력이 증가하여 이러한 어떠한 외부 환경에 대해서도 일정하게 유지하게 한다. 하지만 이 방법에서도 문제점이 있다.

앞서 19도의 상황에서 3번 제어를 거쳐 19, 19.5, 19.8, 20도에 도달했다 하자. 이 때 I 제어에서는 1, 0.5, 0.2 를 더한 1.7의 단위의 난방을 한다. 이 멍청한 제어기는 20이 넘어가도 멈추질 않는다! 넘어가서 20.3 도가 되고 나서야 제어입력의 0.3을 깎아서 1.4가 된다. 결국은 이렇게 감소를 반복하여 냉각에 가기까지 출렁이면서 20도에 이르게 된다는 치명적인 단점이 있다. 게다가 이 입력에 대한 가중치가 과하다면 점점 증폭하여 폭주(제어에서는 발산이라 한다)하게 된다는 점을 잘 생각해야 한다.

여기서 온도의 최대치에서 desire value를 뺀 값을 overshoot값이라고 하며, overshoot값이 조절되지 않으면 기계가 과열되어 망가진다거나 batch반응기인 경우 정격용량을 넘어서서 흘러넘친다거나 터지거나 하는 일이 발생할 수 있다. 따라서 I제어를 사용할 땐 overshoot값을 적절하게 조절해야 한다.

3.3.3. PD 제어

Proportional Derivative 제어 (비례 미분 제어)
[math( \displaystyle K_{pd}(s) = K_p + sK_d = K_p (1 + sT_d) )]

폭주하는 제어를 잠재우기 위한 미분제어다. 예를 들어 미친듯이 입력값을 높여서 온도가 -10도에서 한번에 10도로 한번에 +20도가 올라갔다고 하자. 그러면 다음 결과는 30도가 될 것이라 생각할 수 있다. 이런 상황을 방지하기 위해서는 이런 20도가 증가했다는 사실에 대해 -10정도에 해당하는 입력을 빼주어야 한다. 대부분의 시스템은 관성이라는 개념이 존재한다.[9] 따라서 미리 입력을 줄여놓아야 정확하고 빠른 제어가 가능하다. 하지만 제어가 느려진다는 단점도 있다. 목표치에 도달할 때 좀 더 스무스하게 도착하도록 하는 대신에 제어 성능이 좀 느려지는 경향이 있다. 하지만 이러한 제어를 하는 이유는 시스템의 상태가 좀더 안정적으로 수렴한다는 데 있다.

전자공학 시스템에서는 신호의 Overshoot을 억제하여 제어의 안정성을 높인다.

예를 들어 비행기가 착륙하는데 (목표 고도가 0m) 빠르다고 최단거리로 지상에 접근하면.... 더 이상의 자세한 설명은 생략한다. 착륙하는데 고도를 천천히 낮추어야 비행기가 안전하게 착륙하듯이 우리의 일반적인 제어대상도 마찬가지이다. 따라서 이러한 D 제어도 마찬가지로 필요하다.

3.3.4. PID 제어

[math( \displaystyle K_{pid}(s) = K_p + \frac{K_i}{s} + sK_d = K_p(1 + {1 \over sT_i} + sT_d) )]

위 세가지 제어를 이용하여 일반적으로 PI 제어, PD제어, IP제어거꾸로 썼다고 다른제어가 됨 PID 제어를 쓰게 되는데 어딘가 모자란 P 제어를 I 제어가 보충해주고 이 폭주기관차 I 제어를 D 제어가 억누르는 개념이다.

이 세 가지를 보통은 경험적으로 이것도 해보고 저것도 해보면서 적당한 값을 찾아 쓰면 된다. 일반적으로 P를 최대한 높여 시스템이 발광하기 직전에서 일정치를 빼고 마찬가지로 I 제어를 최대한 높여 시스템이 발광하기 시작하면 D 제어를 추가하여 발광하기 직전으로 튜닝을 해보자. 그러면 그럭저럭 쓸만한 녀석이 탄생한다.

다들 튜닝에 어려움을 많이 겪는데 이를 결정할 이론적인 방법이 있다!! (Ziggler Nichols 방법) 하지만 기대하지 말자. 세상에 저 방법으로 제어가 될 시스템이면 제어에 고민할 필요가 없다. 지글러 니콜스는 그냥 튜닝 시작점이라고 이해하면 편하다. 몇몇 시스템의 경우에는 오토 튜닝 기능을 제공하기도 한다.

3.3.5. 한계 감도법

Ultimate Sensitivity Method

P, PI, PD, PID 제어를 할 때 사용되는 튜닝법으로 여러가지가 존재하지만, 여기서는 지금까지의 경험으로 만들어진 튜닝법을 소개한다. 개발자인 존 G. 지글러(John G. Ziegler)와 너새니얼 B. 니컬스(Nathaniel B. Nichols)의 이름을 따서 Ziegler-Nichols Method라고도 불린다. 튜닝 순서는 다음과 같다.

1. 시스템이 안정에서 불안정으로 넘어가는 그 순간의 한계 게인을 Ku, 한계 주기를 Pu라고 한다.
2. 다음의 표를 참고하여 Kp, Ti, Td를 결정한다.
컨트롤러 K(P) T(I) T(D)
P 0.5Ku - -
PI 0.45Ku Pu/1.2 -
PID 0.6Ku Pu/2 Pu/8

3.3.6. 진상보상기와 지상보상기

PID 제어기는 OP-AMP 등이 포함되어 비교적 값이 비싸다. 따라서 적은 비용이 요구되며 0의 정상상태오차 성능을 요하지 않는 경우 저항과 커패시터로 구성된 진상 및 지상보상기를 사용하기도 한다. 이 경우 극점 및 영점은 0이 아니고 일정한 음의 실수를 갖는다.
진상보상기(앞섬보상기, lead compensator)는 영점의 절댓값이 극점의 그것보다 작은(0에 가까운) 것이다. 영점이 극점보다 작기 때문에 보드선도를 그리면 크기곡선은 커지게 되며 위상각곡선은 0보다 크게 된다.
지상보상기(뒤짐보상기, lag compensator)는 영점의 절댓값이 극점의 그것보다 큰(0에서 먼) 것이다. 영점이 극점보다 크기 때문에 보드선도를 그리면 크기곡선은 작아지게 되며 위상각곡선은 0보다 작게 된다.
진상보상기와 지상보상기를 함께 사용하여 시간영역에서 과도응답성능(극점배치)와 정상상태오차, 주파수영역에서 위상여유와 정상상태오차 모두 개선할 수 있는데, 이를 진상-지상보상기(lead-lag compensator) 또는 지상-진상보상기(lag-lead compensator)라 한다.
보드선도의 형태는 다음 사이트를 참고하자. PDF 파일

3.4. 2자유도 제어

PID제어 같은 피드백 제어 방식은 여러 환경에서 대처 가능하다는 장점이 있지만 피드포워드보다 느리다는 단점이 있다. (속응성이 낮다.) 이를 보완하기 위해, 처음에는 피드포워드로 제어한 다음에 피드백을 추가하는 것이다. 이러면 결과를 도출하는 속도가 빠르다는 feed-forward의 장점과 여러 환경에 대처 가능하다는 feedback의 장점을 모두 갖게 된다. 그래서 고전 제어 중에서는 가장 성능이 뛰어나다고 평가 받고 있다.

예를 들자면,
1. 선풍기 바람의 세기를 중간으로 설정한다.
2. 시원한 바람을 즐긴다.
3. 무언가의 이유로 선풍기 바람의 세기가 약함/강함으로 변경되면 다시 중간으로 바꾼다.

3.5. 기타 제어

대체로 PID 이상의 제어는 대학원 수준이므로 위키에서 설명하기는 힘들고 전문적인 제어 서적을 읽거나 인터넷을 검색하는 게 낫다.

극점 배치 기법(Pole Placement), LQR, LQG 정도까지는 대학교에서 공업수학을 들어서 선형대수학, 미분방정식, 라플라스 변환, 푸리에 변환을 아는 정도면 충분하지만, Sliding Mode Control, Model Predictive Control, Nonlinear Control 을 알려면 미분기하학, 위상수학, Linear Matrix Inequailty 등 매우 어려운 수학이 사용된다.

4. 현대 제어

현대 제어 이론에서는 기존의 PID 제어 기반의 제어로 충분하지 않은 상황에 대처하기 위해 수많은 고급 제어 이론들이 전개되었다.

4.1. 최적 제어

Optimal control.

최적 제어는 정해진 기준에 대해 최적의 제어 입력을 도출하는 제어기를 뜻한다. 일반적으로 비용 함수(cost function) 혹은 손실 함수(loss function)와 같은 정량적인 지표를 생성하고 이를 최소화 혹은 최대화 하는 방향의 제어 입력을 도출하게 된다.

4.1.1. LQR 제어

Linear quadratic regulator(LQR).

특정한 양을 performance measure로 잡아주고 [10] 이를 최소화하는 컨트롤러를 설계하는 것. 흔히 최적제어(optimal control)이라고도 하는데 이는 위에서 구한 컨트롤러가 performance measure를 최소화 시켜주기 때문이다.
  • Linear: 선형이라서.
  • Quadratic: performance measure는 계산을 간단하게 하기 위해 대개 제곱 꼴로 잡기 때문에 들어가는 수식어.
  • regulator: 제어에서는 무언가를 줄여주는 행위를 regulate라고 한다. (에러, 불필요한 진동 등.)

LQR 제어는 1)시스템의 상태방정식 구하고 2)퍼포먼스 메져 정하고 3)리카티 미방 풀면 끝이다. Donald Kirk 책이 볼만하며, 오가타와 프랭클린 끝에도 살짝 나와있다.

참고로 이거랑 칼만 필터랑 합친 것을 LQG라고 한다. 얘는 linear quadratic Gaussian의 약자인데 칼만필터가 가우시안 분포를 써먹기 때문에 이런 이름이 붙었다. LQG에서는 칼만필터를 사용하기 때문에 유한시간 LQR은 못 써먹고 무조건 무한시간 LQR 밖에 안 된다. 그래야 리카티 이퀘의 솔루션이 상수가 되기 때문.

실제 제어 활용에서는 LQG보다 LQR이 더욱 보편적이다. 그 이유는 상태방정식 에러에 대한 강건성(Robustness)이 LQR에선 일정부분 보장되지만 LQG에서는 보장되지 않아 실제 환경에서 써먹기 어렵기 때문.

4.2. 모델 예측 제어

Model Predictive Control(MPC).

4.3. 강건 제어

Robust control.

강건 제어는 시스템에 주어지는 불확실성(uncertainty)에 대해 강건하게 대응하는 제어기를 뜻한다.

4.3.1. 불확실성

일반적으로 실제 세상에서 우리가 제어하고자 하는 대상 시스템은 여러 가지 원인으로 인한 불확실성을 갖는다. 이러한 불확실성에는 크게 모델 불확실성, 외란, 잡음 등이 있다.
4.3.1.1. 모델 불확실성
모델 불확실성(model uncertainty)은 실제 세계에 존재하는 시스템을 제어에 적용하기 용이한 수학적인 모델로 근사하는 과정에서 채 다 모델링되지 못한 특성(unmodelled dynamics)과 모델 파라미터(parameter) 등의 부정확성으로 인한 주어진 구조의 모델에 내재된 불확실성 등이 있다. 예를 들어 마찰력과 같이 큰 비선형성을 갖고 랜덤한 특성을 갖는 경우 이는 수학적인 모델로 완벽하게 묘사할 수 없기 때문에 마찰 현상이 포함된 시스템을 제어함에 있어서는 불완전한 모델링으로 인한 모델 불확실성을 가질 수밖에 없고, 질량 10kg라고 알고 있는 물체가 실제로는 측정 정확도의 문제로 인해 10.1kg 혹은 9.9kg일 수도 있거나 시간에 따라 불규칙적으로 변하는 값이라면 해당 물체를 묘사하는 시스템 모델은 파라미터 불확실성으로 인한 모델 불확실성을 포함할 수밖에 없게 된다.
4.3.1.2. 외란
외란(disturbance)은 시스템 외부로부터 가해지는 고려되지 않은 입력을 주로 노이즈라고 한다. 실제로 제어기 설계 과정에서 외란은 블록 선도(block diagram)의 입력 부분에 추가로 가해지는 미지 입력(unknown input) 형태로 고려되는 경우가 대부분이지만 엄밀히 분류하자면 입력 외란(input disturbance)과 출력 외란(output disturbance)가 구분될 수 있다. 다만 출력 외란은 수학적으로 입력 외란으로 완전히 동등하게(equivalently) 대체될 수 있기 때문에 출력 외란은 자주 고려되지 않는다. 또한 관습적으로 외란이라 하면 입력 외란을 의미하며, 출력 외란은 단순한 센서 노이즈 수준으로 치부하여 잡음으로 간주될 때가 많다.
4.3.1.3. 잡음
노이즈(noise)를 직역하여 잡음이라 하지만 실제로는 영어로 노이즈라고 발음하는 경우가 압도적으로 많다.

4.3.2. 슬라이딩 모드 제어

Sliding mode control(SMC).
가변 구조 제어(Variable structure control)라고도 불린다.

모델링이 완벽하지 않고 불확실성이 있을 때 사용하는 제어 기법이다. 1960년대에 소련에서 V. Utkin 등에 의해 고안되어 이후 미국과 서방세계로 전파되었다. 컨트롤러 구하는 방법은 다음과 같다. 먼저 desired trajectory와 시스템의 actual trajectory 간의 에러를 적당히 주물주물해서 슬라이딩 변수를 만든다. 이 슬라이딩 변수가 0을 유지하는 것을 슬라이딩 모드라고 하며 이러한 상태를 시스템이 슬라이딩 서피스에 있다고 한다. 이러한 상태에서 (즉 슬라이딩 변수가 0을 유지하는 상황에서) 에러가 0으로 수렴하도록 (그래프를 그려보면 슬라이딩 서피스 위를 굴러가서(sliding) 0에 도달하는 것처럼 보인다) 슬라이딩 서피스를 정의하는 것이 관건이다. 컨트롤러는 불확실성을 가지는 원래의 dynamics가 슬라이딩 서피스에 도달하도록 설계한다. 이후에는 이미 말했듯이 자동적으로 에러가 0으로 수렴.. 이때 필연적으로 불연속적인 signum 함수가 사용되는데 이러한 불연속성 때문에 제어 입력과 상태 벡터에 high-frequency oscillation, 즉 chattering이라는 현상이 일어난다. 이러한 chattering 은 의미 그대로 제어 출력이 반복적으로 파르르 떠는 현상을 말하는데, 이러한 현상이 적절히 감쇠되지 않으면 실제 기계에 반복적인 떨림을 발생시키고 이러한 떨림은 곧 기계의 물리적인 고장으로 이어질 수 있다. 따라서 이러한 chattering을 줄이기 위해서 signum 함수 대신 포화를 표현한 함수를 쓰거나 boundary layer 방법, high-order SMC 등의 방법이 고안되어 있다. 모델에 불확실성이 있을 때 제어하는 강인제어(Robust Control) 분야의 가장 대표적인 제어법이다.

4.3.3. H-2 제어

4.3.4. H-infinity 제어


4.4. 적응 제어

Adaptive control.

4.4.1. 강건 제어와의 정성적 비교

적응 제어와 강건 제어는 흥미롭게도 외란에 대해 대처하는 방식이 판이하게 다르다고 할 수 있다. 먼저 강건 제어는 영어 표현 robust control에서 따온 말로 한국에서든 영어권 국가에서든 일상 생활에서 많이 쓰이지 않는 단어이기 때문에 직관적인 해석이 다소 어렵다.

따라서 제어공학적인 측면에서 강건 제어는 외란에 대해 대상 시스템이 성능적으로 둔감하게 반응할 수 있도록 보수적인 제어 전략을 취하고, 적응 제어는 외란에 대해 시스템 파라미터를 변화시키며 공격적인 제어 전략을 취한다고 할 수 있다.

4.5. 외란 관측 기반 제어

Disturbance-observer based control.
DOBC라고도 불리고 외란 관측기 기반 제어를 뜻한다. 외란 관측 기반 제어에 대해 알기 위해서는 먼저 외란 관측기에 대해서 알아야 한다.

5. 현실의 제어

일반적으로 제어하려는 대상의 특성을 알고 있기 때문에 Open-loop 제어를 하면 충분하다. 여기에 외란에 대해서 알고 있고 측정이 가능하면 추가적인 제어를 넣고 혹시 모르니 PID를 안전빵으로 넣는다. 사실상 대부분의 제어는 경험+PID만으로 거의 확실하게 가능하다.

예를 들어 자동차를 생각하면(제어 대상 중에 가장 골치 아픈 녀석 중 하나) 엔진 스로틀을 얼마 정도 밟으면 어느 정도 힘이 나온다는 것은 알고 있다. 이를 통해 크루즈 컨트롤을 한다고 할 때, 목표 속도가 있으면 그에 맞는 가속 페달 정보를 입력하면 끝이다(open-loop 제어). 하지만 세상은 그렇게 호락호락하지 않으며, 오르막 내리막이 있다.-- 오르막을 가면 차량 속도가 줄어들고 이를 보상하기 위한 경사도를 측정할 수 있다고 치자. 그러면 경사도 얼마에는 엔진 출력 얼마를 더해주면 된다는 정보를 통해 추가적인 입력을 넣어주게 된다. 하지만 그것이 다가 아니다. 바람이 앞에서 불거나 하면 속도가 줄어들 것이다. 이런 경우에는 PID 제어가 힘을 쓰게 된다. 줄어든 만큼의 속도를 보상하여 목표 속도에 맞게 제어를 한다.

다른 제어이론은 특수한 상황에 맞춰 특수한 경우에 사용하거나 반대로 좀 더 경험을 배제하고 모든 상황에 맞는 제어기를 위한 것이다.

예를 들어 하드디스크 모터제어는 매우 빠르고 정확해야만 한다. 이럴 경우에는 모든 동역학정보와 모델을 체계적으로 세워서 최선의 제어성능을 위해 LQR이라는 최적제어를 수행한다. 혹시 더 좋은 성능을 위해서는 Model Predictive Control이나 비선형성을 반영한 Sliding Mode Control을 활용할 수 있다.

아니면 새로운 비행기를 만드는데 경험이 하나도 없다. 그런데도 어느정도 제어가 가능해야 하는데 이를 위해서 경험없이 PID를 쓰면 상황에 따라 제어 불능에 빠지는 경우가 생긴다. 이를 방지하기 위해서 좀 더 넓은 범위의 제어가 가능한 LQG나 Sliding Mode Control을 사용하면 최적의 성능은 아니지만 어느 정도 안전한 제어 성능을 낼 수 있다.


[1] 여기서 말하는 시스템이 무엇인지를 간단하게 표현하면, 계, 즉 우주의 일부분 중 '입력'과 '출력'이 존재하는 모든 것들을 칭한다고 보면 된다. 예를 들면 유압회로, 전기전자회로, 기계장치, etc...[2] 화학 프로세스 공정에서는 열, 유체, 화공이 많이 쓰이고 자동차는 동역학 위주의 제어가 되고 정밀가공의 경우 재료역학, 동역학이 되고 모터는 회로이론, 전자기학이 된다.[3] 간단하게 말하자면 실수부 근이 음수여야 안정하다는 의미이다.[4] 예를 들면 라멘집에서 볼 수 있는 솥단지에 아래서는 물을 끓이고 위에서는 딱 증발량에 맞는 물을 흘려주는 것으로 정확하게 원하는 물의 온도와 물의 양을 유지할 수 있다.[5] 사실상 2도차이를 몸으로 느끼는 사람도 별로 없고 위치에 따라 나는 차이가 훨씬 크다.[6] 2010년대 후반 들어서 크루즈 컨트롤은 여기에 앞차와의 거리와 상대속도를 고려한 적응제어가 같이 쓰인다.[7] stability 증명을 위해서는 PD컨은 두어줄이면 끝나지만 I가 까다롭다. 하지만 능력자들께서 모두 증명해 놓았으므로, 우리는 논문쓸 때 그냥 인용해버리면 끝이다. 예를 들면, "다음과 같은 시스템에서 PID 컨트롤러의 stability는 xxx 논문에서 증명되었으므로 생략한다."[8] 이를 제어에서는 외란 Disturbance 이라 한다[9] 물리에서는 질량, 열역학에서는 비열, 유체역학에서는 유량 등.[10] performance measure는 궤적의 에러크기로 잡는 게 가장 편하다. 하지만 사용자가 편리한 대로 어떤 cost나 에너지로 잡아도 무방하다.