본문 바로가기
Research/Machine Learning

PID 제어

by IMCOMKING 2018. 11. 13.

# PID Controller: 산업적으로 매우 넓게 사용되는 제어 시스템으로, 수학이나 물리학적으로 유래된 모델이기 보단, 순수히 실용적인 목적으로 만들어져서 널리 사용되고 있는 공학적인 모델이다.

https://en.wikipedia.org/wiki/PID_controller#Proportional_term


P, I, D 세가지 요소로 우리가 원하는 target value를 만들어내기 위해 최적의 제어 routine을 만들어낸다.

예를 들어 에어컨을 틀어서 실내온도를 30도에서 20도로 만들려면 어떻게 해야할까? 너무 과하게 가동하면 자칫 온도가 18도까지 내려갈수도 있고, 너무 살살틀면 20도까지 가려면 한도끝도 없이 기다려야할 것이다.

그래서 매우 빠르고 정확하게 20도를 만들어내기 위한 제어가 필요한데, 그럴 때 사용되는 것이 바로 PID 제어이다.


P: Proportional, 이는 현재온도와 원하는 target 온도와의 차이인, '에러'에 대한 현재 값을 의미한다. 즉 이 변수를 이용하여 에어콘의 세기를 조절하는 요소이다. 그러나 P만으로는 error가 0이되게 만들 수 없으므로 반드시 I와 D가 필요하다.

I: Integral, 이는 현재온도와 target 온도의 차이인, '에러'의 과거 속도들을 시간으로 적분한 변수이다. P만으로는 error가 0이될 수 없는 상황에서, 시간에 따라 누적된 error를 통해 점점 더 큰 signal을 만들어내어 궁극적으로 error 0이 될수 있게 한다. 만약 P를 사용하지 않고, I만 가지고 제어를 한다면, error를 0으로 만들 수는 있지만 에러가 누적될 때 까지 너무나 오랜 시간이 걸리고, 게다가 에러가 0으로 가는 과정에서 반드시 Overshoot이 발생하게 된다.(Overshoot은 위의 예시처럼 실내온도를 20도를 만들려다가 18도까지 내려가버리는 현상이다.)


D: Derivative, 이는 현재온도와 target 온도의 차이인, '에러'가 미래에 어떻게 될 것인지 에러의 변화 속도를 미분하여 알려주는 변수이다.  D만으로는 에러를 0으로 만들 수 없고, 보통 I에 의해 Overshoot이 되는 현상을 완화하고 방지하는 역할을 한다.


이 세가지 변수들을 덧셈으로 연결하여 다음과 같은 수식이 만들어지는데, 이것이 바로 PID제어의 형태이다.


Kp: Proportional term에 대한 계수

Ki: Integral term에 대한 계수

Kd: Derivative term에 대한 계수


위 세가지 계수를 사람이 적절히 튜닝하여 가장 이상적으로 원해지는 제어식을 완성한다. 만약 이중에서 Kd값이 0이라면, 이는 PI제어가 되고, Ki가 0이라면, PD 제어가 되는 식이다.


제대로 된 제어를 하기 위해선 위 세가지 텀들이 모두 필요한데, 자세한 예시는 아래를 참조하기 바란다.

https://en.wikipedia.org/wiki/PID_controller#Control_loop_example



댓글