[아두이노 쿼드콥터] pid 제어 테스트 영상

Posted by Doony
2015. 12. 4. 01:45 아두이노 드론 프로젝트

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

정말 오랜만에 포스팅을 또 제대로 하는 것 같습니다.


한동안 포스팅이 뜸했던 이유는 사실 pid 게인값 찾고 있었기 때문인데요. 아무리해도 찾을 수가 없어 원점으로 다시 돌아가 생각해보니, 이런저런 문제가 좀 있었습니다.


먼저 저희가 지금까지 한 내용을 요약해드리죠!!


지난 포스팅을 보시면 아시겠지만, 지금까지는 봉으로 축을 만들고 X자형으로 실험을 진행중에 있었습니다. 

(http://yngneers.tistory.com/39 참고하고 넘어오시면 됩니다.)


포스팅에서 영상 보시면 아시겠지만 비교적 잘 되었습니다. 특히 평형을 유지하란 명령과, 외란을 주었을 때의 반응은 어느정도 잡혀가고 있다고 생각했는데요.  이부분에서 한 2주 정도 시간 소비를 한 것 같은데... 좀 문제가 있었죠.


1. 10도 기울이란 명령, 20도 기울이란 명령을 제대로 듣지 않는다.

이게 무슨 말이냐면, 10도 기울이라고 하면 15~20도까지 기울이고, 20도 기울이라 하면 30도까지 기우는 겁니다.

물론 I게인까지 임의로 넣으면 어느정도 시간이 지난 후에 각도를 잡는 것을 확인하긴 했습니다만,

저희가 생각했을 때는 P게인 2개 만으로도 어느정도 잡혀야 한다고 봤거든요.

그래서 좀 이상했습니다.


2. 큰 봉 안으로 작은 봉이 들어가 있기 때문에 유격과 마찰이 발생한다.

아무래도 큰것과 작은 봉 사이즈가 딱 맞지는 않았습니다. 유격이 다소 있었기 때문에 외란주거나 각도 기울이라는 명령 때 드론 기체가 흔들리는 현상이 있었습니다. 단순히 추력이 약하거나 강해서 그런건 아니었거든요. 그래서 봉의 유격과 마찰 때문에 제대로 pid 테스트가 안될것 같았습니다.



여기서 결론을 냈습니다.

바로 봉으로 만든 축을 바꾸는 것입니다. 어떻게? 다시 줄로 돌아왔죠. 이왕 돌아온거 다시 처음부터 해보기로 했습니다. X자형으로 센서모듈을 둔 것을 다시 +자형, 즉 x, y축이 독립적으로 제어되도록 하는 시스템으로 복구했습니다. 처음 시도했던 방식대로요. (이건 http://yngneers.tistory.com/33 참고하고 넘어오시면 됩니다.)



아아 테스트 해보니 감탄사가 나왔습니다.

이 모든게 봉 때문이었다니!!!!!!!!!!! 줄이 불안정해서 봉으로 바꾼건데, 불안정하진 않았지만 오히려 그 안정성 때문에 더 pid제어가 제대로 되지 않았던 겁니다.


영상부터 보시죠..



이건 외부p, 내부p만 주고 d gain, I gain은 모두 0을 준 상태입니다. 아직 게인값을 잡지 않은 상태라 좀 흔들리긴하죠?

보시다시피 +자로 다시 돌려놓은 거고, 줄로 매달아 놓은 형태입니다. 

각도는 기울이라는 명령에 한 80~90% 정도만 따르는 듯 합니다. 10도 기울이라면 8~9도만 기울어지는 셈이지요.


아직 진동이 좀 셉니다. 두번째 p, 즉 내부 p게인이 크면 클수록 이렇게 진동이 세집니다.

외부 p가 크고 내부 p가 너무 작으면, 아주 천천히 각도 명령에 움직이는 것을 확인할 수 있었습니다. (영상엔 없습니다. 그 경향성이 그렇다는 겁니다.)


아무튼 봉으로 했을 때보다 훨씬 제어가 잘 되는 것을 확인하였습니다. 그냥 오감으로 느껴지는 게 다릅니다... 


이 상태에서 p값 조금 잡고 d 게인까지 좀 잡아봤는데요.



D를 잡으면서 느꼈던 가장 큰 차이는 무게 중심적인 느낌입니다.

이론상으로 제가 알기로는 D게인이 잡히면 오버슛과 settling time, 즉 안정화에 드는 시간이 단축되는 걸로 알고 있습니다. 저희는 정확한 측정보다는 일단 느낌을 잡기 위해 해봤는데...


이게 보니까 무게 중심이 안맞는 것도 어느정도 커버를 해주는 듯 싶었습니다. p게인만 사용했을 경우는 기체가 회전함에 따라 무게 중심이 이동하게 되고, 진동할 때도 무게 중심쪽으로 좀 치우치는 걸 확인했었는데요. d게인을 사용하고 나니, 무게 중심쪽으로 치우치는 게 많이 줄어드는 것을 볼 수 있었습니다.



아래는 I 게인도 대충 잡아본 값입니다.



I 게인이 있기 때문에 오차는 0으로 줄어듦니다. 물론 시간은 좀 걸리지만요. 

각도 컨트롤도 10도 기울이라면 정확히 10도만 갑니다. 물론 시간이 조~~금 걸리지만요.


이로써 대~~~~충 pid 값을 모두 잡아보았는데요. 아직 정밀하게 잡진 않고 그냥 컨셉 영상정도라고만 보시면 됩니다.

좀 더 다듬으면 정말로 이젠 pid 게인값 찾기가 끝날 것 같네요.





이건 실험 환경입니다. 의자에 줄 매달아 묶어놨고, 줄은 좀 흔들리는 경향이 있어서 손으로 살짝 잡아주기도 했습니다.



배터리도 동일한 녀석으로 하나 더 구매했습니다. 엘레파츠에서 주문했는데... 3일이면 온다더니 10일만에 왔네요. 전화해서 언제오냐고 항의하니까 바로 내일 발송해준다고 했다는... 주문이 누락된게 아닌가 뭔가 의심스러웠는데요. 아무튼 항의 전화 후 바로 다음 날 이렇게 도착했습니다. 



오늘 실험이 끝나고 그냥 한번 찍어봤습니다. 아두이노와 센서, 전선들이 어지럽혀지지 않게 검은테이프와 케이플타이로 좀 묶어줬습니다.



오늘은 여기까지!!

시험기간이라 또 언제 많이 해볼지 모르겠습니다만.. 최대한 되는대로 포스팅올리도록 하겠습니다.

이제 정말 축 제어만 끝나면 날려보는 영상........... 올리도록 해봐야겠죠?

오늘은 뿅!!