'오일러각'에 해당되는 글 2건

  1. 2015.04.18 가속도, 자이로 센서값을 오일러각으로 변환 - 1 (7)
  2. 2013.03.13 쿼드콥터 제작 현황 (2)
Quadrotor20152015. 4. 18. 16:34

이번 포스팅에서는 저번 포스팅(mpu6050 가속도, 자이로 센서를 융합하기[상보필터] - 2)의 개선된 사항을 포스팅합니다. 


먼저 가속도 센서를 오일러각으로 바꿀 때 저번 포스팅처럼 x/z나 y/z 하는건 단순히 각 축의 기울어짐 각도를 구하는 거였습니다.


이것을 자세 표현 방법의 한가지인 오일러각으로 변환하는 방법을 다룰 건데요


밑의 출처를 참고하여 이렇게 변환할 수 있습니다.





물론 Ax, Ay, Az는 약분될거기 때문에 스케일링을 하지 않으셔도 무방하지만, 변수의 자료형 범위를 넘지 않도록 신경써줍시다.


그리고 atan함수를 사용한다면 출력의 단위가 라디안이기 때문에 180.0 / 3.141592인 57.3을 곱해서 각도로 바꿔줍시다.


여기서 φ가 Roll, θ가 Pitch라고 정하겠습니다. 


아, 기체좌표계는 다음 그림과 같이 쿼드콥터 전방을 x축 양의 방향이라고 하고, 우측을 y축 양의방향, 지면쪽을 z축 양의방향으로 정합니다.

x축을 중심으로 한 회전이 Roll회전이고, y축을 중심으로한 회전이 Pitch회전이고, z축을 중심으로 한 회전이 yaw회전입니다. 

회전의 방향은 각 축의 양의 방향에 오른손법칙을 적용한 방향을 +로 정합니다. 글마다 계속 언급하겠지만, 이 설정을 되도록 유지할 생각입니다.




여기까지가 가속도 센서값을 오일러각으로 바꾸는 내용이고, 다음은 자이로 센서를 다뤄봅시다.


자이로 센서는 각 축의 각속도를 출력해주기 때문에 단위변환 후시간 변화량에 대해 적분해주면 각 축의 각도를 구할 수 있습니다.


하지만 자이로센서를 조금 다뤄본다면 각 축의 출력이 완전히 독립적이지 않다는걸 알게되는데요, 


예를들어 센서를 지면에 평행하게 두고 yaw회전 각도만 구한다면 실제 90도 회전에 대해 정확히 90도의 각도를 구할 수 있을겁니다. 하지만 지면에 평행하게 두지 않고 센서의 Roll각을 20도 정도 들고 90도 회전을 시행할 경우 yaw회전만 측정해서는 관성좌표계에 대한 yaw회전 각을 구할 수 없습니다.


이런 이유로 오일러각 변환이 필요하게 되었는데요


이것도 다음 식을 이용해서 변환할 수 있습니다. (AR.drone 관련 논문 참고)




Ω는 각 축의 각속도인 p, q, r이고 Q는 현재 오일러각인 φ, θ, ψ를 의미합니다. 


(여기서 현재 오일러각은 세가지를 쓸 수 있습니다. 가속도 센서로 만들어낸 오일러각을 쓸 수도, 자이로 센서로 만들어진 가장 최근 오일러각을 쓸 수도 있지만 실제 자세각을 반영하기 위해 상보 필터를 거친 오일러각을 사용하는게 바람직하겠습니다.)


이 두 정보를 가지고 오일러각의 변화량을 구할 수 있습니다. 그 후 이 변화량을 시간에 따라 적분하면 됩니다.


이 결과는 다음 그림을 보면 알 수 있습니다.




Roll축의 각도만 표시했습니다. 빨간색이 가속도센서의 오일러각, 초록색이 자이로센서의 오일러각 입니다.


이 두개를 합치는 상보필터에 대한 이야기는 다음 포스팅에서 하기로 하겠습니다~!


지난 포스팅에서 다뤘지만... 잘못된 정보가 있어서 바로잡는 포스팅을 하려고 합니다.









참고 사이트

http://www.nano-i.com/salse/1272665

http://blog.daum.net/pg365 - open robotics


논문

The Navigation and Control technology inside the AR.Drone micro UAV



Posted by 너를위한노래

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.05.07 13:38 [ ADDR : EDIT/ DEL : REPLY ]
  2. HK

    게시자님 덕분에 많은 정보 배워가는 학생입니다. 시중에 있는 쿼드콥터를 사서 사용하다가 내가 한번 만들어 보자하여
    이 블로그에 오게되었습니다. 많은 알짜배기 정보가 있어서 너무 감사합니다.
    언제쯤 오일러각으로 변환 -2 편은 볼수가 있을까요?
    너무너무 궁금합니다. ㅠㅠ

    2015.05.14 17:09 [ ADDR : EDIT/ DEL : REPLY ]
  3. 비밀댓글입니다

    2015.08.21 22:20 [ ADDR : EDIT/ DEL : REPLY ]
    • 자이로 센서를 적분하여 구한 각도는 각 축에 대해 독립적인 단순 각도입니다.
      오일러각은 각 축이 독립적이지 않고 종속적인데, XYZ오일러각, ZXZ오일러각 등으로 구분하여 부르는 걸로 알고 있습니다~
      일단, 구글에 XYZ오일러각으로 검색하시면 자세한 내용과 이로 인한 짐벌락 등 여러 내용을 보실 수 있을것 같습니다~
      요런 내용을 따로 정리하여 추가해야겠네요 좋은 지적 감사합니다~!

      2015.08.22 22:45 신고 [ ADDR : EDIT/ DEL ]
  4. 양완석

    와..완전 대박입니다
    arctan 분모에 Gx, Gy 의 제곱 붙이면 오일러 각이 되는군요.. 감사합니다!

    2016.07.20 23:34 [ ADDR : EDIT/ DEL : REPLY ]
  5. 홍지성

    와 ... 감사합니다 ㅠ.ㅠ

    2017.03.21 13:11 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20132013. 3. 13. 18:01

 

원래 네이버 블로그에 있는 글을 모두 옮겨오려고 했지만.. 굳이 그럴 필요 없을거 같아서 이 글에 제목과 링크만 올려두겠습니다.

 

네이버 블로그 주요 포스팅:

쿼드콥터 초기 계획안 

재료, 부품 구매 현황

MPU-6050 3축 자이로 + 3축 가속도 센서 구매 

[스크랩]오일러각 

[스크랩] I2C (Inter-Integrated Circuit) 버스 

[스크랩]칼만 필터(Kalman Filter) - Part 1 : Linear Systems | Robotics 

[스크랩]칼만 필터(Kalman Filter) - Part 2 : Kalman Filter & Algorithm | Robotics 

 

 

현재는 가속도, 자이로 센서 값을 이용해서 칼만필터로 융합한 다음, Q행렬, H행렬을 조정하는 단계입니다.

 

 

노랑, 자주 : 가속도

빨강, 초록 : 가속도 + 자이로 using 칼만필터

 

여러가지 상황에 대해 테스트하고 있는데 쿼드콥터 진동이 장난이 아니더라구요.. ㅠ

 

어느 정도는 칼만필터로 보정할 수 있겠거니~ 했는데 이건 너무 심해서 기구적으로 손을 보고 있습니다.

 

그래서 스펀지로도 방진 해보고 고무줄로 진동을 줄여보고자 노력했지만 별로 효과는 없더라구요..

 

   

 

 RPM은 모두 동일

   

 스펀지 장착

 고무줄 장치 장착

 

위의 테스트에서는 RPM이 낮은데 높게하면 +90도~-90도 화이트노이즈수준으로 심하게 감지되더라구요 ㅠ

모터랑 센서가 싸구려라 그런가... ㅠ

 

아예 모터에서 발생하는 진동을 제거하는 방향으로도 해봐야겠습니다.

 

 

안드로이드 소스파일(accel gyro Kalman Filter, PWM generate):

SimpleAnalogInputActivity.java

GraphView.java

Matrix.java

SnowCube.java

SnowRenderer.java

 

 

 

 

Posted by 너를위한노래

댓글을 달아 주세요

  1. GTS

    고무줄을 이용한 방진장치.. 작은 키캠에 사용하기엔 정말 딱일것 같습니다. 고무줄을 조금 느슨하게 하면 조금이라도 진동을 흡수하지않을려나요?ㅎㅎ

    2013.04.01 22:45 [ ADDR : EDIT/ DEL : REPLY ]
    • 아 네이버 블로그에 있던 그 학생이시군요~ 현재 고무줄도 조금 느슨하게 바꿨고 중간 센서 밑에 납으로된 추도 달아 놨는데.. 자잘한 진동에는 효과있을지 몰라도 큰 진동에는 역시 변화가 없네요.. ㅠ 일단 자세제어부터 하고 다시 손 봐야겠습니다. ㅠ

      2013.04.02 13:17 신고 [ ADDR : EDIT/ DEL ]