[아두이노 드론] PID에 대한 아~주 간단한 추가설명

Posted by Doony
2017. 3. 15. 23:44 아두이노 드론 프로젝트

안녕하세요 와이엔지니어스입니다.


오늘은 PID에 대해 정말 간단하게 써볼까 합니다. 


이전에 PID에 대해 포스팅을 한번 했었는데 (http://yngneers.tistory.com/5)


미분, 적분 이런 말들이 들어가니까 처음 들으시는 분들은 헷갈려하시더라구요.


그래서, 그러한 말을 다 제외하고!!! 한번 설명해볼까 합니다. 


에러 = 목표값 - 현재값


우선, 제어를 할 때 자주 볼 수 있는 용어가 하나 있는데요. 바로 에러입니다.


에러는 쉽게 말하면 시스템의 상태를 나타낼 수 있는 변수 (거리, 속도, 가속도 등)의 목표값 - 현재값이라고 보시면 되요.


그리고 에러는 목표값에 도달할 수 있도록 더하거나 빼주는 보정값의 기준이 됩니다.


e(t) = x,target (t)-x(t)



P 제어


이해하시기 쉽게 예를 하나 들어볼게요.


저희가 드론을 특정 속도로 날리고 싶어서, 그 속도에 해당하는 명령어를 입력했어요.


하지만 여러 요인 (외란 등 모델링시 반영하지 못한 여러 요인들이 많겠죠?) 에 의해서 


실제 속도는 목표속도에 도달하지 못했다면 이를 보상하기 위한 보정 term이 필요하겠죠?


그렇기에 아래와 같이 에러값에 비례한 보정 term을 추가해줍니다.


목표 속도 = 실제 속도 + Kp * (목표 속도 - 실제 속도)

              = 실제 속도 + Kp * e(t)


이게 바로 P 제어입니다! 쉽죠?



D 제어


추가로 에러가 줄어드는 속도 (목표에 도달하는) 또한 제어를 하면 좋을텐데요.


그렇기에 이번에는 e'(t) (에러가 줄어드는 속도)에 비례한 보정 term을 추가합니다.


목표 속도 = 실제 속도 + Kp * e(t) + Kv * e'(t)


그리고 이게 D 제어에요. 


I 제어


이렇게 보정을 해주더라도 실제로 외란 등 모델링에 반영되지 못한 에러들이 남아있을 수 있어요. 


이런 여전히 남아있는 작은 에러놈(?)들을 누적시켜 보정해주기 위한 것이 아래 빨간줄로 표시된 I term입니다. 







그리고 위에 세가지 보정 방법을 지칭하는게 PID 제어입니다.


쉽게 설명한다고 했는데, 도움이 되셨나요??


도움이 되셨길 바라며, 좋은 밤 되세요!!!