티스토리 뷰


MPU-6050 Roll, Pitch 테스트




안녕하세요 오랜만에 드론에 대해 포스팅을 적어보네요 ㅎㅎ 지금가지 다른 공부를 좀 하다가 드론 해커톤 참여를 신청할려고 생각을 해보니까 하기 위해서는 드론에 대한 전반적인 지식과 구동원리를 빨리 파악해야겠다는 생각때문에 다시 드론에 대해 공부를 시작하게 되었습니다!!!


혹시 다들 GeekMomProjects라는 홈페이지를 아시나요?? 여기서 어떤 아주머니께서 제공을 하신 프로세싱 프로그램과 아두이노 스케치 소스를 가지고 간단하게 테스트를 해보겠습니다.



Geek Mom Projects 홈페이지 바로가기


홈페이지에 들어가시면 

위와 같은 파일들을 다운받아주세요ㅎㅎ 

그리고 프로세싱 프로그램과 아두이노 cc기반의 프로그램도 설치가 되어있어야 해요!



일단 아두이노 IDE인 GY_521_send_serial 파일을 열어주게 되시면 소스코드가 좌르르르륵 보여질거에요

여기서 우리는 수정할 부분만 수정을 해줍시다 바운드레이드(baudrate)를 115200으로 계속 사용을 하고 있었으니 바꾸어주어야겠죠?


이거를


요롷게



그리고 드론에다가 업로드를 시켜줍니다.(주의사항! : 스케치를 업로드 시켜줄때 반듯이 드론을 평평한 지면에다가 놓고 해주어야 합니다.)



이제 프로세싱 코드를 한번 수정해볼게요

가장 먼저 해야할것은 시리얼 통신 속도를 변경해주기!




이걸 하셨으면 이제 밑에껄 해주세요

주석을 해제하고

(Object [])를추가해주기


실행을 해주시면 밑에 사진과 같이 나오거나 아니면 실행 화면이 흰색 바탕화면만 보이던지 또는 안열리던지 할거에요





그래서 해결방법을 알려드리도록 하겠습니다.



프로세싱이 제대로 실행이 안될때 해결방법!!!!





위와 같이 portindex를 0으로 바꾸어주세요 그리고 실행을 해보시면 잘 될거에요 ㅎㅎ



이렇게 보여질텐데요 파란색 도형하고 초록색 도형이 기울어져서 보여지는데요 이건 가속도 센서에대한 보정이 적용되지 않아서 생기는 현상입니다. 잠시 후 센서 보정을 해보도록 하겠습니다.



그 전에 각 도형들이 무엇을 의미하는지 부터 설명을 드리고 보정을 해보도록 할게요



노란 도형


자이로 센서를 이용해서 Roll, Pitch, Yaw를 표시한다.

도형을 회전시키는 움직임을 쉽고 정확하게 확인할 수 있는데 시간이 흐를수록 정확하지 않은 방향을 표시하게 된다는 점을 주의!!!!


오차가 발생하는 원인 : 자이로 센서 자체에 의해 발생하기 보다는 각속도와 센서 입력 지기를 곱해 적분하는 과정에서 필연적으로 발생하는 누적 오차에 의해 발생한다고 합니다.(참고 : 앤써북)



파란 도형


가속도 센서를 이용해서 Roll, Pitch, Yaw를 표시한다.

정지해 있을때는 안정적으로 옳바른 방향을 표시하지만 흔들거나 회전을 하게 되면 민감하게 반응을 함

(뒷부분에 보면 코드상 평균값을 구해서 보내는 설명을 할겁니다. 그 이유가 바로 여기에 있습니다. 짧은 순간에 반복적으로 발생하는 진동에 대해서는 노이즈가 심하게 발생하나 오랜 시간에 걸쳐 계산된 평균값은 아주 정확하기 때문입니다.)


초록 도형


가속도 센서 + 자이로 센서의 값을 조합한 상보 필터를 이용해 Roll, Pitch, Yaw를 표시한다.

가속도(파란 도형) 자이로(노란 도형)의 장점만을 조합한 것으로 드론을 흔들거나 회전시켜도 정확한 방향과 움직임을 표시하며 노란 도형에서 발생하는 오류인 시간에 관련된 오류는 상보필터를 적용함으로서 시간이 흘러도 정확한 방향을 표시하게 됩니다.





이제 파란색과 초록색이 약간 기울어 진것에 대한 해결방법을 설명해드리도록 하겠습니다.



가속도 센서 보정하기



위에 보이는 코드를 밑에 코 드로 바꾸어주세요




907번째 줄을 보게 되면 16384가 있는데요 이것은 2g당 가속도 센서 값을 의미하는 것 입니다.


base_?_accel : 이 변수들은 코드에서 보시면 setup 함수에서 가속도 센서를 처음 10번 읽은 정보의 평균을 구해서 얻은 기본적인 센서 오프셋 값을 가지고 있는 변수입니다.

따라서 바꾸기 전 코드(원시 센서 값)에서 오프셋 값을 저장하는 의미입니다.


그리고 Z만 코드가 다른 이유는 평지에서 이상적으로 중력 가속도 g에 해당하는 16384 값을 가져야 하기 때문입니다.


아두이노 스케치를 드론에 업로드 시켜주고 프로세싱을 다시 실행해보면 가속도 센서가 보정이 된것을 보실 수 있습니다.




※지금까지는 Roll와 Pitch에 관한 테스트만 한 것 입니다. 다음 포스팅에서는 YAW도 테스트를 해보겠습니다.







Comments