제어에 대해서 흔히 다들 너무 어렵게 혹은 너무 쉽게 알고 있습니다.
제어에 대해서 너무 어렵게 생각하는 사람들은 본인이 삶 속에서 제어를 당연히 하고 있다는 사실을 깨닫지 못하기 때문이고 제어에 대해서 너무 쉽게 생각하는 사람들은 PID 파라미터 튜닝할 수 있는 기술을 가지고 제어에 대해서 쉽게 생각합니다.
제어 이론이란 학문은 너무나도 깊고 넓어서 감히 제가 이 관련 포스팅을 해도 될지 두려움이 앞섰지만 제가 제어에 대해서 정의를 내리는 것이 아니라 제어공부를 하면서 쉬운 한글 자료를 만났을때 사막에서 오아시스를 만난듯한 기분을 느낀적이 많았기에 논문에 대해서 아직 거리가 있는 분들 혹은 제어관련 논문을 읽기 전에 배경지식을 조금이나마 얻고 싶은 분들에게 도움이 되고자 포스팅을 시작하게 되었습니다.
0. 일상에서의 제어
제어란 간단히 말해서 우리가 어떤 대상이 "...했으면 좋겠다" 라고 생각했을때 실제 그 대상이 "..."하도록 만드는 것입니다.
예를들어 위의 사진처럼 사람이 컵을 잡는 동작을 생각해봅시다(실제로 제어하면 제일 먼저 떠오르는 로봇팔이 이런 제어를 수행합니다)
우리는 눈을 통해서 컵이 어디있는지 파악하고 컵을 손으로 잡을 수 있는 최적의 위치(손잡이옆에 손가락이 가도록 이동)로 이동해서 컵을 잡습니다. 머리 속으로 경로를 모두 짠 다음에 이동하지 않고 대략적인 경로만 짠다음에 최종적인 목표만 설정하고 실제로 움직이는 경로는 움직이면서 실시간으로 이루어 집니다. (우리가 눈치못챌정도로 상황에 대한 인식을 빠르게 가지면서!)
조금 더 쉬운 일상에서의 제어를 예를 들면 on/off control의 한 예로 에어컨 조절이 있습니다. 물론 에어컨 출력이나 온도 조절이라는 세부 기능을 사용하는 사람도 많지만 대부분의 사람들은 에어컨 출력을 최대로 한 다음에 더우면 에어컨을 키고 추우면 에어컨을 끕니다. 온도 조절을 하지않고 굳이 이 방법을 택했던 이유는 개인적인 경험을 통해서 찾아보자면 제가 몇도에서 가장 쾌적함을 느끼는지 아직 모르는 경우에 이런방식으로 온도를 조절했던 것 같습니다. 이 처럼 우리는 생활속에서 자연스럽게 제어를 수행한다. 어쩌면 제어이론이라는 것이 인간에게 기본적으로 내재되어있는 뇌의 여러가지 기능중에서 매우 작은 한가지를 수학적으로 분석하여 이론으로 확립했을지도 모릅니다. 이처럼 제어 이론을 한번 배우고 나면 우리가 살고있는 모든 세상에 제어의 눈높이 안에서 보여지고 하루하루 주변을 관찰하는 것이 너무나도 흥미로워집니다.
1. 제어 기본 원리
제어에서 가장 중요한 것이 용어와 개념입니다. 학부에서 제어공학이라는 과목을 수강했다고 하더라도 간단한 시스템하나 제어하지 못하는 경우가 있습니다. 이때 배우는 이론이 너무 수학적이라 실생활과 괴리가 있어서 그런것이 아닌가? 라는 생각이 들 수가 있는데 사실 이 경우는 제대로 공부하지 않고 성적따기에만 급급하여 문제풀이 위주로 공부했을 가능성이 큽니다.(다른사람 이야기가 아니라 제 이야기입니다 물론 저같은 사람이 많지 않기를..) 우리가 공학을 배우는 이유는 우리가 실생활에서 발견한 문제점을 해결하기 위하여 이론의 도움을 받기 위해서인데 실생활의 문제를 해결하는데에 도움이 되지 않는 지식은 모두 죽은 지식이라고 생각합니다. 우리가 배운 이론을 실생활에 적용하기 위해서 가장 중요한 것은 용어와 개념입니다. 지금부터 매우 간단히 골격을 잡고 넘어가도록 하겠습니다.
"측정값인 플랜트의 요소가 지령을 추종하도록 하고싶다"
(ex 모터의 전류가 2sinwt와 같아지도록 하고자 한다.)
1) 플랜트(plant)
플랜트는 제어에서 가장 중요한 요소입니다. 플랜트란 우리가 변화시킬 수 없는 시스템 그 자체를 의미하는데 자세히 말하자면 우리가 바꿀 수 있는 가장 말단 이후부터 우리가 측정할 수 있는 가장 앞단까지를 의미합니다. 제어에 대해서 이해한 이 글을 읽을 필요가 없으신 분들은 이 말을 이해하기 쉽겠지만 오히려 처음듣는 분들은 뭔말인가 싶을 것입니다. 앞에서 예로 든 에어컨 온도조절 매커니즘을 통해서 플랜트의 개념을 잡아봅시다. 제가 건드릴 수 있는 가장 마지막 부분은 에어컨 리모컨 전원 스위치이고 제가 느낄 수 있는 가장 앞단은 피부로 느끼는 추위입니다. 따라서 플랜트는 온도를 조절하기위해 동작되는 에어컨이며 에어컨 리모컨 전원스위치부터 내 피부로 느끼는 추위까지의 블락이라고 할 수 있습니다. 플랜트를 어떻게 모델링하냐에 따라서 우리가 제어할 수 있는 자유도가 높아집니다(공학에서 자유도가 높아지는것은 똑똑한 사람에게는 많은 것을 할 수 있게 해주지만 대부분의 사람에게는 귀찮음을 더할 뿐입니다, "계속 쉽게 설명을 하자면.. " 이라고 하면서 설명을 더 길게 하는 것의 단점과도 같습니다. 이미 알고있는 사람은 더 알게되고 모르는 사람은 더 복잡해 지지요). 플랜트에 대해서 좀 더 이해하기 쉽게 하기 위해서 에어컨 온도 제어 매커니즘을 자세히 설명하자면 아래의 순서를 무한히 반복한다고 볼 수 있습니다.
1. 피부로 더위/추위를 느낌
2. 뇌에서 적당하다고 생각되는 온도와 실제 피부 온도 사이에 차이(+/-)를 느낌
3. 운동신경에 신호를 보내서 손으로 에어컨 전원 스위치를 on/off시킴
4. 리모컨의 on/off신호가 전파를 통해서 에어컨에 전달
5. 에어컨 내부의 MCU가 에어컨 전원부에 신호를 인가
6. 에어컨 전원 공급 회로 차단 혹은 연결
7. 에어컨 컴프레셔 on/off
8. 방온도 up/down
위 순서에서 "나"라는 존재를 어디서부터 어디까지 정의하느냐에 따라 플랜트가 달라지지만 통상적으로 제 손까지 "나"라고 봤을때 4~8까지의 과정을 플랜트라고 볼 수 있습니다. 제가 바꿀 수 있는 가장 말단은 제 손이고 제가 측정할 수 있는 가장 앞단은 피부이기 때문에 손이 움직여서 누른 에어컨의 버튼에서부터 제가 느끼는 대상인 방의 온도까지가 플랜트라고 볼 수 있습니다. 즉 저는 에어컨 on버튼을 누르면 어떤과정을 거치는지는 모르지만 시원해지고 off버튼을 누르면 더워지는 플랜트에 대해서 본능적으로 on/off 컨트롤을 하고 있었다고 봐도 무방합니다.
2) 지령값(reference value)
지령값이란 제가 무엇이 어떻게 됐으면 좋겠다 할때 "어떻게"에 해당합니다. 앞선 비유에서 지령은 제가 원하는 방의 온도인데 이는 어떤 한 값으로 정해져 있을 수도 있고 시간의 함수가 될 수도 있습니다. 예를 들어서 체육시간을 마치고 교실로 들어와서 가장 빨리 시원해지게 하기 위해서 에어컨 최대 출력으로 틀어놓은 뒤 제가 원하는 온도보다 추워져서 기침이 날때서야 에어컨을 끈 경험이 있을 것입니다.
이 경우는 지령을 한번에 제가 원하는 온도로 가도록 step 지령을 넣었다고 볼 수 있습니다. 만약에 이래서 잠깐의 추위에 땀이 식어서 감기에 걸렸다면 우리는 다음에 이렇게 한번에 최대 출력으로 에어컨을 키지 않을 것입니다. 대신에 에어컨 온도를 제가 생각하는 적정 온도보다 약간 높게 맞춘다음에 점점 온도를 느끼면서 온도를 서서히 내리게 됩니다. 이 경우에는 이전에 고생했던 기억이 반영된 지령인 small step+ramp input지령으로 볼 수 있습니다.
3) 측정값(sensing value)
측정값이란 플랜트에서 얻을 수 있는 모든 정보들을 의미하는데 이는 딱히 플랜트의 말단일 필요는 없습니다. 제어를 하는데에 있어서 플랜트의 중간값을 측정해서 이용할 수도 있고 말단의 값만을 측정해 이용할 수 있다. 이 역시 앞서 비유를 통해 설명하자면 제가 에어컨이 어떻게 방의 온도를 내리는지 올리는지 안다고 가정해 봅시다. 좀 더 세부적으로는 에어컨은 에어컨 내부에 있는 냉매를 이용하여 공기를 냉각시키고 냉각시킨 공기를 외부로 내뿜어서 방의 온도를 낮추며 안에 들어있는 냉매의 보존 기간에 따라서 성능이 차이가 있다고 가정해 봅시다. 이러한 에어컨을 가지고 우리가 방안의 온도를 원하는 값으로 맞추려고 할때 측정값에는 필수 측정값인 온도(지령과 대응)와 냉매의 보존 기간이 있을 수 있습니다. 우리의 지령 혹은 제어 방식은 온도만 측정했을 경우에는 온도에 따라서 on/off만 가능하겠지만 냉매의 보존기간이라는 성능 척도가 되는 값까지 추가로 측정가능할때 에어컨 온도가 변하는 시간이 얼마나 지연되거나 단축될지에 대한 추가의 정보가 주어졌기 때문에 우리가 단순히 몸으로 느끼는 온도에 반응하여 on/off하는 것이 아니라 온도 변환 시간까지 고려해서 에어컨을 키거나 끌 것 입니다. 이처럼 측정값은 플랜트에서 우리가 얻을 수 있는 여러가지 정보들인데 이를 알수록 제어를 좀 더 맞춤으로 할 수 있는 장점이 있는 반면 알고리즘이 더욱 더 복잡해지는 단점이 있습니다.(사실 복잡해져야할 이유는 없지만 쓸 수 있는 정보가 그렇게 많은데도 불구하고 안쓰면 손해보는것 같아서?)
4) 제어기(controller)
마지막으로 언급할 제어 필수 요소는 제어기가 있습니다. 제어기란 추상적으로는 우리의 알고리즘을 일컫는 용어이자 제어 이론 관점에서는 지령값과 측정값을 입력으로 하고 플랜트의 입력을 출력으로 하는 하나의 블락을 의미합니다. 위 플랜트에서 언급한 에어컨 온도 동작 기작의 순서에서 3번에 해당하는 부분이 됩니다. 짧게 서술은 되었지만 "제어를 한다" 라고 의미할때 제어기 설계는 가장 핵심이 되는 부분입니다. 앞에서 측정값의 여러가지 정보들을 이용해서 다르게 제어할 수 있다고 언급하였는데 이는 제어기를 다르게 짤 수 있다는 것입니다. 제어기를 어떻게 짜느냐에 따라서 제어기 성능(측정값이 지령값을 추종하는 속도 or 오차)이 결정되는데 측정값이 많이 반영될수록 우리가 더 해당플랜트에 잘 적용될 수 있는 제어기를 설계할 수 있게 됩니다.
2. 앞으로의 제어 포스팅 방향
이번 포스팅에서 제어 용어를 간략하게 정리했다면 본 카테고리에서는 앞으로 제어기설계 알고리즘에 대해서 중점적으로 설명할 것입니다. 최신 제어 기법들을 모두 다루지 않고(아직 최신 제어기법들은 공부중입니다) 본 포스팅에서 다룰 내용은 1900년대 중후반 디지털 컨트롤러가 나올 시점에 해당하는 매우 고전적인 알고리즘에 대해서 대표 논문과 함께 우선적으로 설명을 하여 제어공학에 입문하는 혹은 제어 이론관련 논문을 처음 접하는 사람에게 도움이 되는 방향으로 나갈 예정입니다.
(pid, DTC, hysterisis, deadbeat, MPC, feedforward compensation, LQR, MRAS 등)
'Robotics > Control Theory' 카테고리의 다른 글
PID제어기 (1) | 2017.12.09 |
---|---|
디지털 제어 개념잡기 (0) | 2017.10.06 |
제어 시스템 구성요소 (0) | 2017.10.01 |
주파수 영역에서의 분석 (1) | 2017.10.01 |