쿼드콥터 제작기 07 - PID제어

Posted by dw0rdptr
2015. 9. 9. 01:30 IoT/QuadCopter

이제 PID로 자세를 제어하는일만 남았다..

PID제어란 비례-미분-적분제어의 약자로

P - 비례(Proportional)
I  - 적분(Integral)
D - 미분(Derivative)


쿼드콥터에서의 PID는 센서에서 나오는 각도값을 받아서 원하는 목표각도를 유지하기 위해 쓰는 알고리즘이다.
예를 들어 현재 기체가 30도로 기울어져있으면 PID 제어기를 거쳐 기울어진 쪽의 모터출력을 높여주면 수평을 되찾을 수 있다.

처음엔 P 비례제어만써서 기울어진만큼만 모터출력을 높이면 되겠지 라고 생각했는데 그렇게 안하는데엔 다 이유가 있더라ㅠ


P 비례제어

P-비례제어는 말그대로 기울어진 각도에 비례해 출력을 높이는 제어다. 비례제어는 PID제어중 가장 기본이지만 문제점이 있다. 바로 목표값에 정확히 일치하지 않고 어느정도 차이가 생긴다는것..

목표값에 근접함에 따라 조작량이 점점 줄어들고 결국엔 목표값에 정확히 일치하지 못하고 조작량이 0이되면 편차가 생기는데 이를 정상편차라고 한다. 이를 해결하기 위해 아래 I-적분제어를 쓴다


PI 비례-적분제어

I-적분제어는 단독으로 쓰이지 않고 P제어를 보정하기위해 쓰인다. P제어에서 약 5도정도 정상편차가 생겼다고 가정해보자. 그럼 기울어진쪽의 적분값이 계속 쌓이면서 조작량으로 발생하고 발생한 5도의 편차를 없앨 수 있다.


PI로만 해도 제어할수 있을 것 같지만, 목표값에 도달하는 속도가 너무 느려 쿼드콥터는 어느새 저멀리.. 날아간다 그래서 쓰는게 D미분제어이다.


PID 비례-적분-미분제어

D제어 역시 단독으로 쓰지 않고 P비례제어를 보조해주는 역할을 한다. I-적분제어가 정상편차를 없애주는거라면 D-비례제어는 PI제어의 단점인 느린 목표값 도달을 빠르게 도달할 수 있게 해준다.

미분은 순간변화량이다. 그래서 D-미분제어는 기체의 순간기울기변화가 클수록 크게작용해 신속하게 목표값에 도달할 수 있게 해주는 것이다.


PID제어는 게인값을 구하는게 중요한데, 각각의 게인값은 구한 P,I,D 제어값을 어느정도로 적용할지를 뜻한다. 기체마다 환경이 다르니 직접 게인을 맞춰봐야 구할수 있는데 이 게인값을 구하는과정을 PID 튜닝이라고 한다.


조작량 = p게인*error + i게인*error적분값 + d게인*전회 error와의 차이

조작량이 바로 모터의 출력이 된다.









사진 출처

http://bearrhee.tistory.com/entry/90008274486

http://www.aistudy.co.kr/control/process_kim.htm