[아두이노 드론] 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 제어입니다.


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


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


[아두이노 드론] 드론 역학 - 힘

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




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


오늘은 간략하게 드론이 또는 드론에 작용하는 에 대해 알아보고자 합니다. 



프로펠러의 방향


아시다시피 드론은 프로펠러가 회전하는 힘으로부터 무게 (mg)를 이겨낼 수 있는 추력을 얻게 되죠. 


(아래 그림의 T1, T2, T3, T4)


그런데 자세히 살펴보시면 프로펠러의 회전 방향은 두개씩 같은 방향임을 알 수 있는데요.


그 이유는 회전 방향에 따라 모멘트가 발생하기 때문인데요. 쉽게 말해서, 회전하려는 경향이라고 보시면 됩니다.


즉, 모든 프로펠러를 시계방향으로 돌도록 부착해놓으면, T1, T2, T3, T4는 위로 향하겠지만,


모두 동일한 방향으로 모멘트가 발생해서 시계 방향으로 드론이 빙글빙글 회전하게 되겠죠?


이를 방지하기 위해, 모멘트의 평형상태를 유지하기 위해 프로펠러 부착 방향을 고려해준답니다.





힘의 곡선



각각의 프로펠러들이 두개씩 시계 그리고 반시계 방향으로 열심히(?) 회전하면, 위로 추력이 발생하는데요.


(아래 그림의 빨간 곡선)


속도가 증가할수록 힘이 증가하는걸 알 수 있어요. 


이는 프로펠러가 회전하면서 공기에 힘을 가하고, 


뉴턴의 제 3법칙으로 공기가 프로펠러에 다시 힘을 가함으로써 추력을 얻게 된다고 생각하시면


당연하게 여겨지실거에요. 


이 추력들의 합이 mg 값 이상이 되어야 드론이 날 수 있겠죠? (또 너무 당연한 소리를....)


어쨌든 이때 각 모터는 최소 mg/4 이상의 힘을 내야하는데요. 


이를 내기 위해 최소 회전 속도가 존재하고, 아래 그림에서 Wo라 표시된 부분을 확인할 수 있어요.


Wo 이하의 속도에서는 회전은 하지만 기체가 뜨지는 않는 그런 상태죠.





또한 이때 추력 뿐만 아니라 항력 또한 발생하게 됩니다. 항력으로 인한 모멘트가 좀 더 정확한 표현일 듯한데요.


이 모멘트를 모터가 이겨내야하고, 이를 이겨낼 수 있는 모터를 선택해야 합니다. 


그러니, 이 값에 따라 모터 사이즈가 결정될 수도 있겠죠??



오늘은 간략하게 여기서 마칠게요!!



참고문헌

1) http://www.gaensehof-sylt.de/index.php?id=43863

2) 모터 곡선 그림 : Aerial Robotics 강연 강의자료

[와이엔지니어스 드론 특강] 대학교 드론 특강

Posted by Doony
2017. 2. 13. 23:10 와이엔지니어스 소개

[와이엔지니어스 드론 특강]


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

드론 관련 포스팅으로 블로그를 이어온지 벌써 1년이 지났네요. 


코딩부터 시작하는 드론 관련 책이 하나 있긴한데.. 오프라인/온라인 강의로 진행되는 정보는 찾기가 힘든 것 같습니다. 저희도 요청이 들어와 처음으로 교육 자료로 만들기 시작했네요. 

앞으로의 세상은 코딩을 아는자와 모르는자로 분류된다고도 합니다. 코딩자체보다도 컴퓨터적인 사고, 그런 마인드를 얘기하는 관점인데, 그런 관점에서 드론 교육은 초보자들에게도 어느정도 레벨의 마인드를 심어줄 수 있는 좋은 기회라고 생각합니다.

 


그리하여! 저희가 그간 쌓인 노하우를 바탕으로 드론에 대한 기본적인 개념을 담아 지난 1월, 특강을 다녀왔습니다.



대학교 학회에서 초청한 특강이었고, 드론의 기본적인 원리부터 PID 제어까지 방대한 양을 짧은 시간 동안 강의했네요!

모터, MCU, 아두이노, PID 제어 이론과 적용까지 모두 설명하기에는 턱없이 부족한 시간이었다보니, 잘 이해를 시켜드렸는지 모르겠네요.


강의 덕분에 저희도 나름대로 자료 정리를 할 수 있는 좋은 기회였습니다.

앞으로 더 자료를 구체화시켜 교안으로 만들어볼 생각입니다. 좀 더 나아간다면 관련 이론 온라인 강의도 생각하고 있구요.



좋은 기회를 주신 모 대학교 여러분께 이 자리를 빌어 감사하다는 말씀을 드립니다.



가끔 카톡으로 강의 관련 문의를 주시는 분들이 계십니다. 

모터의 원리, 블루투스 통신법, 아두이노 기초, PID 제어의 이론과 코드, 그리고 이 모든걸 드론에 응용하여 날리는 것까지 강의에서 다루고 있습니다.

특강 관련 문의는 yngneers 카카오톡으로 톡 주시면 답변해드리겠습니다.



감사합니다.