드론 자율주행을 위해 목표 GPS 좌표를 설정하고 현재 GPS 좌표와의 차이를 구해 이동해야 할 좌표를 계산하는 데 있어 PID 제어가 쓰이는 것을 알 수 있었고 이에 대한 이해가 필요하다 판단했다. PID 제어는 목표값에 도달하기 위해 현재값과의 차이를 반복적으로 줄여나가는 시스템으로 아래와 같은 구성을 갖는다. 여기서 반복적으로 줄여나간다는 말은 Feedback loop가 있다는 것이다.

PID 제어에서 P, I, D가 나타내는 것은 비례(Proportional), 적분(Integral), 미분(Derivative)를 나타내며 이 세 요소는 에러를 줄여 목표지점에 도달하는 공통의 목표를 가지고 각자 역할을 수행한다. 이 요소는 각각 비례항, 적분항, 미분항이라 부르며 각각의 항에서 사용되는 상수(파라미터)는 Kp, Pi, Kd(비례이득, 적분이득, 미분이득)가 있다. 비례항, 적분항, 미분항을 살펴보기 바로 이전에 결론적으로 이러한 각 항의 상수들이 적절하게 설정되었을 때 시스템에 어떤 영향을 미칠 수 있는지 살펴보자.

 

위 GIF를 보면 Kp, Ki, Kd가 적절하게 전부 설정되었을 때 시스템이 안정화되는 것을 확인할 수 있다. 이는 비례항, 적분항, 미분항의 파라미터들이 함께 사용되었을 때 상보적인 효과를 가져온다는 것을 의미한다. 그렇다면 이제 오차에 대해 비례항과 적분항과 미분항의 역할을 살펴보고 각 항의 구성과 특징을 살펴보자.

 

1. 비례항

비례항은 오차값에 비례해서 시스템의 제어를 수행한다. 가장 직관적인 제어 방식이다. 수식으로는 $ P = K_p \times e$와 같다. e는 error를 의미한다. 여기서 비례항의 파라미터인 비례이득 $K_p$가 높으면 오차에 큰 반응으로 빠른 오차 감소가 가능하지만 불안정한 상태가 된다. 즉 목표지점(setpoint) 근처까지 빠르게 도달할 수 있지만 불안정한 상태로 도달하게 된다. 반대로 $K_p$가 낮으면  오차에 작은 반응을 보여 느린 오차 감소를 보이지만 안정한 상태가 된다. 즉 목표 지점 근처까지 천천히 도달하지만 안정한 상태로 도달할 수 있는 것이다. 비례항을 통해 비례제어를 수행해도 즉, $K_p$를 조절해도 목표지점에 정확히 도달하지 못하는 문제점이 있다. 이는 오버슈팅 현상 때문이다. 오버슈팅 현상은 목표값보다 오차가 커지는 것을 말한다. 제어기가 목표값에 도달해도 지나치게 흔들리거나 진동하는 경우가 있기 때문이다. 따라서 이러한 비례항만으로는 안정성있고 정확하게 목표지점에 도달하기 어렵기 때문에 이를 보완하기 위해 아래 적분항을 함께 사용한다.

 

2. 적분항

적분항은 오차값의 누적을 이용해 시스템의 제어를 수행한다. 적분항은 비례항과 마찬가지로 오차를 줄이기 위한 역할을 수행한다.  비례항은 단순히 오차에 비례이득을 곱했다면 적분항은 오차의 누적을 구해 적분이득을 곱해준다. 수식으로는 $I = K_i \times \int{e}$와 같다. 즉 적분이득($K_i$)을 작게 설정하면 오차의 누적이 둔화되어 안정적인 제어가 가능하지만 오차추종속도가 느릴 수 있고, 반대로 적분이득을 크게 설정하면 오차의 누적이 크게 반영되어 제어신호가 더 많이 증가하고 오차추종속도가 빠르지만 비례항과 마찬가지로 오버슈팅이 발생할 수 있다. 

 

3. 미분항

미분항은 오차의 변화율에 따라 시스템의 제어를 수행한다. 조금 더 구체적으로는 목표값과 제어값의 편차를 비교해 이와 기울기가 반대되는 쪽에 값(힘)을 주어 힘을 상쇄시킨다. 다른 두 항과 마찬가지로 오차를 줄이는 역할을 한다. 다만 특히나 다른 두 항에 비해 안정성을 높이는 역할을 한다. 이는 적분항에 있던 오차들을 변화율에 따라 제거해줌으로써 시스템이 안정화시키기 때문이다. 수식은 $D = K_d \times {de \over dt}$와 같다. 미분이득($K_d$)을 큰 값으로 설정하면 오차의 변화에 민감하게 반응해 오차추종속도가 빨라지나 진동이나 불안정성이 발생할 수 있다. 반면 미분이득을 작은 값으로 설정하면 오차변화에 대한 반응이 둔화되어 안정적인 제어가 가능하지만 오차추종속도가 느릴 수 있다.

 

 

이러한 비례이득, 적분이득, 미분이득은 함께 상호작용하며 시스템의 균형을 잡기 때문에 올바른 조합을 찾는 것이 중요하다. 이들 간의 균형은 시스템에 따라 달라질 수 있으므로 실험을 통해 최적의 값을 도출하는 것이 필요하다. 이를 PID 튜닝이라고 하며 가장 널리 알려진 방법으로는 지글러-니콜스 방법이 있다고 한다.

 

 

Reference

[1] https://ko.wikipedia.org/wiki/PID_%EC%A0%9C%EC%96%B4%EA%B8%B0

[2] https://velog.io/@717lumos/Control-PID-%EC%A0%9C%EC%96%B4

[3] https://blog.naver.com/PostView.nhn?blogId=scw0531&logNo=221285498257 

 

 

+ Recent posts