[아두이노 쿼드콥터] pid 제어 시소 테스트 및 주의사항
안녕하세요! Y.NGneers 입니다. 와이엔지니어스입니다. 뭐가 더 좋나요?
아무튼, 오늘은 지난 번, 대각선으로 센서 모듈 방향을 바꾼 뒤, 다시 pid 값을 찾기 위한 과정을 포스팅해보도록 하겠습니다.
일단 저희가 파악한 문제가 여러가지 있는데요. 해결방안에 대해 서술해보도록 하겠습니다.
하나하나보면 사소해보일지 몰라도, 전체 테스트하는 데는 지대한 영향을 끼쳤습니다. 혹시 해당되는 게 있는지 체크해보세요~~
1. 시소 제어를 위해서는 흔들림없는 축이 필요하다.
저희는 지금까지 줄에 매달아놓고 실험을 했습니다. 그러다보니, 센 출력의 경우 줄 자체가 흔들려서 드론이 제대로 자리를 잡지 못하더라구요. 그래서 확실한 축을 만들었습니다.
알파 문구같은 곳 가보면 긴 튜브 형 아크릴을 팔고 있는데요. 가운데는 비어있는 형태입니다.
그걸 크기에 맞게 2개를 사서, 큰 녀석 안에 작은 녀석을 넣고, 작은 녀석은 강력하게 고정시킵니다.
그럼 바깥에 있는 녀석이 안에 것을 기준으로 회전하겠죠? 이 큰 녀석을 드론하고 매다는 겁니다.
사실 유투브나... 많은 분들이 동일한 축을 사용하시길래 저희도 그걸 쓰려고했는데.. 그냥 귀찮아서 이거 사다 만들었습니다 ㅎㅎㅎ
2. 축의 위치는 정확히 가운데 와야한다.
처음에 테스트할 때는 정확히 가운데가 아니라 한쪽으로 약간 쳐져있었습니다. 단순하게 생각하고 넘어갔는데 생각해보니 이게 큰 문제를 발생시켰습니다.
그림과 같이 드론이 있고, 빨간색 축이 있습니다. 저 만큼의 각도로 기울어져있다고 했을 때, 당연히 기울어진 쪽 추력의 크기가 더 크겠죠?
그런데 문제는, 반대의 경우도 생각해보자구요.
같은 각도로 반대로 기울어져있다고 생각합시다.
각속도와 각도 조건이 다 일치한다면, 당연히 pid 계산을 통해 나온 값들도 동일할 것이고, 모터 출력도 정확히 반대로 될것입니다.
그런데 축이 달라지게 되면, 축에 대한 회전 모멘트 값이 달라질 수밖에 없습니다. 왜?
추력은 똑같은데 축을 기준으로 반지름이 달라지기 때문입니다. 더 멀리 있는 두번째의 경우가, M=F*r에 의해 더 큰 모멘트를 가지게 되겠죠. 그래서 축을 기준으로 가까운 쪽의 모터쪽은 올라오는 데 더 힘이 드는 것입니다.
3. 무게 중심을 최대한 잘 맞추도록 노력해야한다!
지금까지는 무게 중심을 크게 신경쓰지 않았습니다. I게인을 통해 해결할 수 있다고 생각하기도 했고, 사실 그보다는 큰 차이가 없을거라고 생각했거든요.
그런데 실험해보니 큰 차이가 있었습니다. 애초에 초기 180도 평형상태를 맞추는 것부터 말이지요..
저희 같은 경우, 배터리와 아두이노와 배선 등으로 인해 무게 차이가 발생했고, pid 게인값으로 어느정도 평형을 유지하기 위한 추력을 얻을 수 있었으나 완벽하게 하진 못했습니다.
그래서 일단, 가벼운 쪽에 추를 달아 무게를 적당히 맞추고 실험을 해보았는데요.
해본 결과, 기가막히게 180도 각도를 잡는 것을 확인하였습니다. 사실 당연한 결과죠. 왜 이걸 진직 안했을까요?
무게차이를 이기기 위해 출력값을 과도하게 높이다보면, 결과적으로 작은 흔들림에도 심하게 발산하는 것을 확인할 수 있었습니다.
위 3가지를 충실히 지키지 못한 상태에서, 일단 pid 시소제어를 한 영상을 올려봅니다.
이것은 직접 축을 흔들면서 외란을 준 경우입니다. 좀 불안정하긴 한데, 적어도 발산하지 않고 제자리로 돌아오는 것을 확인하였습니다.
이건 각도 테스트를 해본 영상입니다.
시리얼 통신을 통해, 10도씩 양방향으로 기울어보는 테스트인데요.
이 영상들은 지금 축도 제대로 안잡혀있고, 무게중심도 다르고 해서 완전하지 않습니다.
다만, 하다보니 의문점이 생깁니다.
pid 게인을 맞추는 기준이 무엇일까요?
위 영상처럼 직접 외란을 주었을 때 안정적으로 자세를 잡는 것을 우선으로 해야하는지,
아래 영상처럼 각도 컨트롤을 줄 때 안정적으로 자세를 잡는 것을 우선으로 해야하는지,
아직 조사중에 있습니다. 다만 어느 상황에서나 잘 자세를 유지하기 위해서는 전자일 것 같긴합니다.
더 해서 또 포스팅 하도록 하겠습니다!!!
'아두이노 드론 프로젝트' 카테고리의 다른 글
[아두이노 쿼드콥터] pid 제어 테스트 영상 (0) | 2015.12.04 |
---|---|
[아두이노 쿼드콥터] 앱인벤터로 만드는 안드로이드 블루투스 통신앱 (5) | 2015.11.25 |
[아두이노 쿼드콥터] mpu6050의 배치방향 변경 (2) | 2015.11.18 |
[아두이노 쿼드콥터] 시소 테스트 마무리(?) (0) | 2015.11.12 |
[아두이노 쿼드콥터] 시리얼 통신으로 받는 속도가 느린 이유 (0) | 2015.11.11 |