사실.. 자이로센서와 가속도센서의 병합(fusion)에 대한 이야기는 더이상 할 필요가 없을 줄 알았습니다. 그런데, 제 블로그에 자주 오시는 "재오리"님께서 알려주신 링크를 따라 가보니 재미난 이야기가 있더군요.[방문해보기] 언제 한번 포스팅을 해야겠다고 생각했지만, 차일피일 미루다 이제 하게 되네요^^

먼저, 하도 오래전 이야기라 역사를 좀 이야기를 해야겠네요^^.

각도를 측정하는 센서중 가장 정확하다 싶은 것은 아마 다들 엔코더라고 생각하실것 같습니다. 그런데 항공기나 배, 하여간 공중에 떠있거나 어떤 기준점을 잡을 수 없는 경우 이 엔코더는 무용지물이 됩니다. 왜냐면 엔코더는 자신을 지지하는 곳에서 바라본 상대각도를 잡기 때문이지요.

결국, 로봇(혹은 어떻 항공기든)이 자신의 기울어진 각도를 알기 위해 관성센서(자이로나 가속도)를 많이 사용합니다.

여기서 자이로센서는 각속도를 검출하는 센서로서 사실, 한번이라도 테스트를 해보신분들은 그 어마어마한 적분오차(드리프트에러)에 깜짝 놀라게 됩니다.[관련글]

또하나의 방법이 가속도센서를 가지고 각도를 검출하는 방법이 있습니다. 요거 한번 사용해보면 정말 기분이 좋습니다. 원체 잘 잡아주거든요. 그러나 얘도 문제가 있습니다. 바로 센서에 병진운동성분이 인가되면 각도 추정에 문제가 생기게 됩니다. [관련글]

당연히 위 두 센서의 문제점을 극복하고 각도측정을 올바로 하기 위해서 두 센서를 병합(fusion)하게 되는게 일반적인 공부의 순서(^^)인데요. 요게 만만치가 않지요. 사실 인터넷을 조금 서치해보면 칼만필터라는 아름다운 필터를 만날 수 있습니다. 단점요?? 어렵죠... ㅎㅎㅎ

그래서 저는 재작년(2008년)말에 세종대학교 홍성경 교수님의 논문을 보게 됩니다. (언제한번 만나뵙고 싶군요. 제 블로그에 하도 언급을 많이 해서...^^) 그리고 완성된 수식을 역으로 이해하는 것은 마법의 힘을 빌려야할지도 모른다는 우스개소리를 듣는 칼만필터를 미련없이(^^) 버리고 자이로와 가속도센서를 병합하는 상대적으로 쉬운 필터기법을 공부하게 됩니다. [관련글]



방금 이야기한 그 필터는 2차 저역/고역 통과필터를 사용하는 것인데요. 처음이야기한데로, "재오리"님께서 알려주신 자료를 보고, 1차 필터를 테스트 해보게 될 생각을 한 것이죠^^

이 후 전개하는 내용에서 실험환경은 이전[관려글]의 2차필터를 테스트할때와 동일합니다.^^


위의 펜들럼에서 진자와 암의 경계선상에 자이로와 가속도센서를 장착하고, 암을 흔듭니다.

일단, 필터부터 소개를 해보죠^^


dot_theta_g앞에 1/s가 있으니 자이로 센서를 적분한 결과에는 고역통과필터를 장착하고, 가속도센서에서 얻은 각도인 theta_c에는 저역통과필터를 장착합니다. 위 수식을 좀 다음어서


와 같이 표현합니다. 이를 블럭선도로 표현하면


와 같습니다. 간단하죠?? 우리가 알아낼 것이라고는 a만 알아내면 됩니다.

이제 실험해야죠^^


암을 아주 흔들어서 진자의 흔들린 각도를 엔코더로 받은 것입니다. 일단 저게 각도에서는 참값이라고 해두죠. (더 정확한 센서가 없으니 말이죠..ㅠㅠ) 그럼, 가속도센서에 얼마나 병진운동성분이 인가 되었는지 확인해보죠


위와 같습니다. 위 빨간선은 가속도센서에서 구한 각도입니다.[관련글] 이제 저는 예전에 언급한적이 있는 MATLAB/Simulink에서 제공하는 Parameter Estimation 툴박스를 사용할려고 합니다.[관련글] 당연히 필터의 결과가 엔코더와 같기를 바라는 것이죠.


시뮬링크 블럭은 위와 같이 꾸밉니다


파라미터추정 툴박스를 사용한 첫 화면입니다.


MATLAB이 아주 열심히 필터의 계수 a를 변화시켜가면서 참값(엔코더)을 따라가게 할려고 애쓰고 있는 중입니다.


그렇게 해서 구한 a값이 2.8489네요. 딱 좋군요^^ 이걸 다시 필터에 적용시켜 보겠습니다. 





C로 구현하길 바라는 분들을 위해 m-file로 작성했습니다.


실제 메인코드는 위에서 45,46번행입니다. 뭐 사실 한줄이지요^^. 아주 간단히 구현할 수 있겠네요. 다시한번 말씀드리지만, AccAng는 가속도센서에거 구한 각도입니다. Gyro는 당연히 자이로센서의 결과인 각속도구요. 모든 수치는 단위가 라디안입니다. 그림그릴때만 degree로 변환합니다.^^


음.. 괜찮네요^^.



위 필터의 성능을 확인하기 위해 한번더 실험했습니다.


이번에는 암을 위와같이 흔들었구요


가속도센서에서 잡은 각도가 위와 같습니다. 역시 필터가 동원되어야겠군요. (아참.. 자이로는 당연히 드리프트오차가 있어서 그래프를 제시도 안했습니다.^^)


괜찮네요. 물론 아주 고주파의 환경에서는 테스트하지 않았지만, 뭐 쓸만하다는 생각이 드네요. 언제한번 시간이 허락하면 실제시스템에 적용한 이야기를 해봐야겠네요^^.


   NT-ARSv1 (각도 측정, 자이로 센서 가속도 센서 이용, ARS, IMU) 
 
자이로 센서와 가속도 센서를 이용한 각도 측정의 어려움을 해결할 수 있는 ARS모듈로 낮은 가격과 작은 크기를 가지며, 금속 케이스가 있어 활용도가 높음. NT-ARSv1 : 관련페이지

 


http://pinkwink.kr/trackback/338 관련글 쓰기
  • 재오리 2010/07/03 17:01

    와우 드디어 올라왔네요ㅋ 매번 많이 배우고 갑니다. 사실 저도 그동안 저 1차필터를 분석했습니다. 이제서야 저도 이해가 되서 블로그에 언제한번 포스팅 해야겠다 맘먹고 있던 참입니다.ㅋ 그나저나 저도 자이로 보정을 토픽으로 컨퍼런스에 참가하려고 하는데 좋은 아이디어가 떠오르지 않아서 요즘 고민이 많습니다. 핑크님 좋은 힌트 하나만 던져 주십시오 굽신굽신ㅎㅎ;; 농답입니다.ㅋ

    • PinkWink 2010/07/03 18:27

      그저 따라만 한 것인데.. .칭찬해주셔서 감사합니다...
      재오리님의 결과도 보고싶네요^^
      완성하시면 트랙백걸어주세요^^

  • 핑구야 날자 2010/07/04 21:57

    센서끼리의 병합이라,,, 오늘은 이정도만 공부하고 갑니다,

  • 김현진 2010/07/06 17:57

    핑크윙크님 이제 슬슬 칼만필터를 공부해보심이 ㅋ

    • PinkWink 2010/07/06 18:16

      아직 저의 환경에서는 칼만필터의 필요성을 느끼지 못하고 있습니다. 공부해야겠다는 생각은 하지만 말이죠...^^

  • 김현진 2010/07/06 18:03

    아참;
    핑크윙크님 혹시 이전 실험결과들이
    가속도계-자이로 융합 센서를 측정치로 사용한 실험결과들인가요?

    • PinkWink 2010/07/07 10:34

      자이로-가속도센서의 융합 필터를 사용한것이든 자이로만 사용한 것이든 혹은 가속도만 사용한것이든.. 해당글에 무엇을 사용한결과인지 이야기를했습니다.

  • aeroman 2010/07/09 15:22

    그나마 실내 환경 및 정해진 프로시져 상에서는 나름 만족할만한 결과는 보여주는 것이 PI filter입니다. ^^ 대단하시네요.
    진동 상황이 되면 얘기가 좀 많이 틀어지게 됩니다. 실제 차량테스트 및 비행 테스트를 해보아도 그렇구요. 가속도계에 선형가속성분이 들어오면 gain 이 수정되어야 하겠지요. ^^ 정말 핑윙님 정리 능력은 좀 많이 부럽습니다. 그리고 위에 김현진님은 혹시 서울대 항공과 김현진 교수님은 아니시겠죠. ^^

    • PinkWink 2010/07/09 16:08

      네.. 정리가 잘 되었나요?? ㅎㅎ 고맙습니다. 다른것도 참 잘 되어야할텐데.. 전 머리가 너무 나쁜모양입니다...^^
      그리고 위에 김현진님께서는 예전에 얼핏.. 전기전자의 제어전공이라고 하셨습니다. 그리고. 접속지역이 충남이시구요^^

  • 2010/07/23 11:41

    비밀댓글입니다

    • PinkWink 2010/07/23 13:03

      성지...ㅎㅎ 그렇게까지 좋은 말로 표현해주셔서 오히려 감사합니다.^^

  • 민호 2010/08/09 17:43

    여기서 이해가 쫌 안가는게 가속도계와 자이로는 센서에 들어가기전
    모두다 각도로 환산한다음에 다이어그램처럼 처리하라는건가요?
    deg/sec + m/s^2 이 어떻게 sum이 되죠? 단위를 다 똑같이 맞춰야하지않나요? 지식이 짧아서...

    • PinkWink 2010/08/09 17:55

      본문에서 언급했듯이 가속도센서에서 얻은 각도입니다.

      http://pinkwink.kr/73 를 참조하시면 됩니다.

  • 민호 2010/08/10 15:15

    제가 이걸실제로 적용해볼게요 근데 전 가속도 센서대신 기울기센서를 써야돼서...똑같이 적용해도 될까요? 기울기센서는 응답이 느려서..

    • PinkWink 2010/08/11 11:03

      http://www.pinkwink.kr/121 에서 성능을 비교했었습니다.

  • 다이나믹 2010/08/10 16:56

    안녕하세요. Yaw 소자, 가속도 센서를 결합한 차량용 센서를 개발해보려고 하는데요, 기본적인 개념조차 없어서 혼란스럽네요.
    Yaw 소자가 Resonant Frequency 가 14.5K hz 입니다.
    기본적으로 외부에 하드웨어 필터 설정을 하였는데요, 소프트웨어 필터 사용하려면 어떤 것부터 접근해야 해야 하는가요? 소프트웨어에 대한 개념이 아예 없어서 어떻게 블록 다이어그램 그려야 하는지, 어떻게 테스트 하고 값 설정해야 하는지에 대해 막막합니다. 공부할 내용이라도 좀 체크해주시면 감사하겠습니다. (__)

    • PinkWink 2010/08/11 11:04

      정말 기초부터 확인하고 싶으시다면, 네어버의 당근이카페나 쿼드콥터자작카페 같은 곳의 초보자관련 문서를 읽어보시길 권장합니다. 설명이 잘 되어있더라구요^^

  • BILLABONG 2010/08/13 04:05

    안녕하세요. 궁금한게 생겨서 질문드립니다.
    제일 처음에 나오는 수식에서 센서값이 각각 필터를 거쳐 나온값을 더한다는 뜻인거 같은데 그럼 각각의 센서값이 나오니까 필터된 센서값은 실제 센서값의 두배로 나와야 하는것 아닌지 .. 문서를 보면 가중치를 곱해서 한거 같은데 머리속에 정리가 잘 안되서 질문 드립니다.^^

    • PinkWink 2010/08/13 09:26

      ( a ) / (a + b)와
      ( b ) / (a + b)를
      더하면 '1'이 되는 것입니다.

  • 빡구 2010/09/17 05:49

    윙크님
    위에서
    ThetaOut = zeros(Start,1)

    for i=(Start Point+1) :lengh(Accangle)

    이게 먼지 잘모르겠어요 ~~~ 무엇을 뜻한는지좀 알려주세요~

    • PinkWink 2010/09/17 17:42

      MATLAB으로 실시간 테스트를 한게 아니랍니다. 실제 흔들리는 진자를 이용해서 자이로-가속도센서에서 데이터를 모두 받아와서 MATLAB에서 시뮬레이션을 한거라 for 문을 이용한겁니다. 데이터가 10초라면, 샘플링타임을 10ms로 설정했으니 총 1000세트의 데이터가 있는거지요. 그리고 각 시간마다 필터의 결과를 저장하기 위해 for문을 사용한 것입니다. DSP등에서 실시간으로 각도를 추정할때는 필요없습니다.

  • EQusJin 2010/10/28 00:02

    안녕하세요 윙크님...
    완전 구세주격 내용이라 집중해서 포스팅 하신 내용을 고대로 따라해 봤는데요

    테스트를 위한 파일에는 시간/엔코더/자이로각속도/가속도각도
    이렇게 너었습니다. transient data에 입력인 AccAng에는 가속도 각도를 너었구요 또다른 입력은 Gyro에는 자이로 각속도를 넣었어요...
    아웃풋 데이터에는 엔코더 데이터를 넣었구요...

    이전 포스팅에서는 a와 b를 -10으로 초기값을 잡아 주셧잔아요..
    이번 포스팅을 위한 a의 초기값은 몇으로 잡아야 하나요...
    임의로 -1로 잡고 시작을 눌렀는데요 쭉 진행을 하다가

    Local minimum possible.

    lsqnonlin stopped because the final change in the sum of squares relative to its initial value is less than the selected value of the function tolerance.

    이런 메시기자 나오더라구요...
    추정치 비교 그래프를 보면 끝가지 가지도 않았고 제대로 조정이 된거 같지도 않아 보이는....;;;
    정상적으로 끝난게 아닌거 같아서요...

    제가 멀 잘못한건가요 ㅜ.ㅜ

    • PinkWink 2010/10/28 15:54

      저는 초기값을 1이나 0.1로 두고 수행했습니다.^^
      그리고, 실험 데이터를 하나만 사용하지 마시고
      잘 안되면 다시 다른 실험데이터를 가지고도 해보시길 바랍니다.
      큭히 실험 시간이 길수록 좀 좋습니다.

  • EQusJin 2010/10/28 20:23

    답변 감사 합니다...
    계속 안돼서 총 10번 실험해서 돌려봤는데요....
    a의 추정값이 0.04쯤밑으로더이상 내려가지 않고 계속 같은 메시지를 내놓네요 후덜;;;;
    왜 전 윙크님같이 플러스 값으로 올라가지 않는 걸까요... 실험을 잘못한건가;;;
    아... 완전 어렵습니다 ㅎ

    • PinkWink 2010/10/31 13:45

      혹시나 하고....
      앞부분에 혹이 '0'도인 부분이 있다면.. 그걸 잘라내고
      한번 테스트를 해보시죠
      그리고, 데이터들은 모두 라디안단위로 두시구요.

  • mijong 2011/03/03 00:17

    도트 세타 g는 먼가요???

    세타 g가 각속도 아닌가요??

    • PinkWink 2011/03/03 08:51

      아랫첨자 g는 자이로를 의미하고, 자이로센서의 출력은 '각속도' 이므로 dot_theta_g로 표현한 것입니다. 자이로의 각속도(dot_theta_g)를 적분하면 theta_g 즉, 자이로센서에서 구한 '각도'가 됩니다.

  • mijong 2011/03/10 12:56

    윙크님 귀찬게 해드려서 일단 죄송해요..
    혼자서 공부하는 중이라 궁금한게 너무 많거든요 ㅠㅠ (많이 막히기두하구..)
    하나만 더물어볼게요..
    a값을 구해야 하는데. 그럼 식정리가
    a=(theta_c-theta_f)/(dot_theta_f-dot_theta_g)
    가되는거 같은데요.. 각각의 세타는 출력되는 값을 넣을 수있는데
    역시나 저번에 2차필터에 댓글 달앗던거 처럼 도트_세타_f는
    어떻게 해줘야 하는지요??ㅠㅠ

    • PinkWink 2011/03/10 14:11

      필터의 결과가 참값인 엔코더와 같아지기를 희망한 것이라 theta_f는 theta_e로 생각하시면 됩니다. 여기서 엔코더값을 저장해서 필터계수 a를 잡는 것이지요. 그러나 이 글에서는 MATLAB의 파라미터추정 툴박스를 사용하는 것으로 a를 구하고 있습니다. 이때, theta_f자리에 엔코더의 각도를 넣어두는 것이지요

  • mijong 2011/03/10 13:13

    그래서 dot_theta_f=theta_g-1/a*(theta_f-theta_c)를 넣어서 정리하니까

    a*(theta_g-dot_theta_g)=0이나오는데 .. 아진짜 전왜이렇게 멍청할까요 ㅠㅠ

    • PinkWink 2011/03/10 14:14

      차근이 공부하실 필요가 있는 내용입니다. 당연히 누구나 처음접하면 어려운 것이 당연합니다. 제가 이 내용을 완전히 공부하는데 6개월이 걸렸습니다. 저야 맨땅에 헤딩하는 기분이었지만, 저의 블로그 내용뿐만 아니라, 각종 논문과 인터넷상의 자료도 확인하실 필요가 있습니다. 마지막으로 질문하신 내용은 그걸 그렇게 대입하는 것이 아닙니다. 바뀐식을 원식에 다시 대입하는 경우는 없습니다.

      a=b+1 이다라는 식에서 다른 조건이 아니라 원식을 변형해서
      b=a+1로 두고 대입한것과 같은 오류를 범하신겁니다.

  • mijong 2011/03/10 15:28

    아혹시 엔코더 쓰실때 인크리멘탈형으로 쓰셧나요?? 엡솔루트형으로 쓰셧나요??

    혹시 추천하시는거 있으세요??

    • PinkWink 2011/03/10 15:31

      앱솔루트는 절대각도를 알기 편하긴 하지만, 보통 인크리멘탈형을 많이 사용합니다.^^

  • magick 2011/06/07 15:28

    홍성경 교수님의 논문을 언급하셨는데, 실례가 안된다면 논문의 제목을 알수 있을까요? 여러 논문들이 보이는데 꼭 찝어서 어떤 논문을 언급하신건지 모르겠네요 ㅎ ..

    • PinkWink 2011/06/07 18:23

      Fuzzy logic based closed-loop strapdown attitude system for unmanned aerial vehicle (UAV) - Sung Kyung Hong. Sensors and Actuators A 107 (2003) 109-118

      라는 논문입니다.

  • SHJ 2012/12/01 18:36

    홍성경 교수님의 메카트로닉스기초설계 이번 Term Project 과제가 가속도계로 각도 추출하기랍니다!! ㅋㅋㅋㅋㅋㅋ 도움될 자료들이 있을까 검색하다가 들어온 블로그에서 교수님 성함을 보고 반가워서 댓글 남깁니다 ㅋㅋㅋㅋㅋㅋ ><

    • PinkWink 2012/12/05 09:01

      아.. 네.. 학생때 공부할때 꽤 도움을 많이 얻었었죠^^

  • 행인 2013/04/16 00:17

    블럭선도나 간략하게 표현하신 수식으론 잘 이해가 안되네요 =_=;;
    위에 어떤분이 말씀하셨듯이 (속도+변위) 부분이 있어서 이걸 어떻게 계산해야될지 모르겠습니다.
    수식보고 한참 고민하다 matlab 코드보고 30초만에 만들었습니다 ㅎㅎ

    근데 pitch, roll 같은 경우 위의 코드로 구할 수 있는데
    yaw의 경우는 구할 수 없는건가요?

    • PinkWink 2013/04/16 08:52

      네.. 그러셨군요. 뭐 그래도 MATLAB코드를 보고 이해가 되셨다니 다행입니다.
      yaw는 가속도센서로는 좀 힘들구요... yaw각을 보정할 수 있는 다른 센서가 하나 달려야합니다. 흔히 지자기센서를 만이들 사용하시더군요....^^

  • 루도군 2013/10/31 15:35

    안녕하세요. 몇일동안 보상필터에 대한 글을 읽고 공부만 하다가
    이번에 실제로 실험을 해보려고 하는데요. 엔코더와 센서는 준비가 다 된 상태인데
    실험을 하기 위한 기구부를 어떻게 해야될지 막막하네요.
    진자운동을 할 때 엔코더에 기둥(?)을 설치해서 밑부분에 센서를 설치해야되는데
    엔코더에 연결하는 기둥 같은 것은 어떻게 하신건가요?
    따로 제작하신건가요??

    • PinkWink 2013/11/01 09:31

      이 글을 작성할 당시에는 제가 공부하던 연구실에는 펜들럼이라고 하는 장비가 있었습니다. 그래서 폴의 끝에 자이로-가속도센서만 연결해서 엔코더와 비교할 수 있었습니다. 꼭 그런 펜들럼이 아니라도, 책상에 ㄷ자로 고정하고 나무 같은걸로 만들 수도 있지 않을까 생각합니다. 아니면 아크릴로도 괜찮을듯 하구요.

  • hs 2013/12/09 21:36

    블로그에 도움이 되는 글들이 많네요 ㅎㅎ 감탄하고갑니다.
    궁금한게 하나 있는데 그래프는 어떤 프로그램으로 그리는 건가요?
    실시간으로 그려지는 프로그램을 사용하셧나요?

    • PinkWink 2013/12/09 23:13

      이 포스팅에 사용한 그래프는 MATLAB으로 그린 것입니다.
      당시에는 한 번 실험하고 데이터를 저장한후 그린것으로 실시간으로 데이터를 받은 것이 아닙니다.
      만약 MATLAB으로 데이터를 실시간으로 받고 싶다면
      http://pinkwink.kr/555
      http://pinkwink.kr/569
      이 두 글을 확인하시기 바랍니다.

  • nalma 2014/02/17 17:53

    안녕하세요 현제 센서들과 1차상보필터를 공부하고있는 학생입니다
    제가 자이로센서의 각속도값과 가속도센서의 각도값으로
    1차 필터를 설계해서 계산해봤는데요
    각각 자이로에 HPF, 가속도에 LPF를 지난후 적분해준 것 까지해서 z변환을 이용하여 만들어봤습니다.
    그 이후 matlab의 시뮬링크를 이용해서 상수 k값을 찾고있는데 이게 잘안되네요..
    제가 정리한 수식은
    필터값 = (dt/(2.0f+k*dt)) * ((현재자이로 각속도+이전자이로 각속도) + (k*(현재가속도 각도+이전가속도 각도))) +
    ((2.0f-k*dt)/(2.0f+k*dt)) * 이전필터값;
    이렇게 수식이 나왔는데요. 여기서 더 줄이는건 제 수준에선 무리일꺼같아서
    이 수식을 적용해서 했는데 값이 뭔가 이상하게 나와서 질문드려요...
    저 수식을 사용해도 괜찮은건가요?? 수식에 이상한점이 있다면 알려주세요 ㅠㅠ

    • PinkWink 2014/02/17 18:20

      글쎄요. 1차 상보필터의 코드는 비록 m-file이긴 하지만 제가 본문에 공개를 해두고 있습니다. 광고 밑에 있지요^^
      그리고 본문 처음에 이야기하고 링크도 달아놨지만, 1차 필터는
      http://web.mit.edu/scolton/www/filter.pdf
      라는 MIT의 한 자료에서 저도 시작했습니다. 거기에 또 설명이 잘 되어 있답니다.

  • nalma 2014/03/06 22:27

    설명해주신 덕분에 필터를 완성했네요 ㅠㅠ 정말 감사합니다 ㅎ
    저 또 다른 질문이있는데요
    roll과 pitch축은 자이로와 가속도를 이용한 상보필터를 만들어 각도로 맏아오고있는건 됬는데
    자이로만가지고 yaw축의 각도를 만드니 역시나 적분오차때문에 시간이 지남에따라 드리프트현상이 생기는데요...
    이를 해결하기위해서 지자기를 이용해서yaw축의 각도를 만들어서 0~360까지의 각도를 추출하는데 성공했습니다!!
    그런데 yaw축의 각도가 roll이나 pitch축으로 돌리면 yaw의 각도도 틀어지는데 이걸 해결할수 있는 방법은 없을까요???

    • PinkWink 2014/03/07 09:22

      네 Yaw각이 틀어지면 생각하신 Pitch나 Roll 각이 안나올겁니다. 항상 센서 중심에서 읽었기 때문인데요. 오일러각도로 변환해야합니다. 행렬을 곱해주기만 하면 되는데, 그냥 오일러 변환?? 정도로 검색해보시면 많은 자료가 나타납니다.^^

  • nalma 2014/03/10 13:40

    이상하게 Pitch나 Roll각은 잘나오는데... Pitch나 Roll로 기우리면 Yaw각이 달라지더라고요..
    Yaw는 지자기센서를 이용해서 읽고있는데.. 지자기에서 나온값을 atan(y/x)해서 각도로 변환시켜주었습니다.
    Yaw를 측정할때는 지자기센서를 사용하면 안되는건가요? 그냥 자이로값만으로 만들어주어야하는건가요??

    • PinkWink 2014/03/11 06:58

      Pitch나 Roll을 기울이게 되면 Yaw의 영향을 당연히 받습니다. 지자기 센서의 값이 바뀌기 때문입니다. 위의 댓글에서도 말씀드렸지만 회전행렬을 적용해서 Yaw을 바로 잡아야합니다. 다시 말씀드리지만 네이버등에서 오일러 각 변환이라는 이름으로 검색하면 관련자료가 나타납니다. 저는 이와 관련해서 포스팅한적이 없거든요^^

  • imu 2014/05/19 11:23

    안녕하세요~ 제가 가속도, 자이로, 지자기 센서를 통해서 값을 읽고

    그 값(가속도+자이로)들로 pitch roll 은 거의 오차없이 구현했습니다.(물론 오차가 좀 있겠지만)

    근데 yaw값이 문제네요...

    yaw 값은 지자기를 통해서 자이로값을 보정하는데까지 성공했는데,

    제가 실내에서 위치측위를 하고 싶은데 아시다시피 실내에선 지구자기장 이외의 자기장들이 너무 많이 존재하네요...

    (구현하고 싶은 시스템은 폰을 들고 '이동' 시에 올바른 방향을 얻는 것입니다. 제자리에선 pitch roll yaw 모두 정상적인 각도를 얻는 것 같습니다.)

    -이러한 경우에는 yaw 값을 어떤식으로 보정해줘야 하나요?

    (다른센서를 쓴다거나, 지자기 값을 지구자기장 값만...읽을 수 있는ㅋ;;)

    -폰 센서를 통해서 값을 읽고 있는데, 전자기기다보니 이미 오차가 어느정도 형성되있는 상태에서 compass가 방위각을 얻고 있는건가요? 맞다면 이에 대한 해결방책이 있을까요...ㅠ

    -칼만필터의 경우는 이러한 상황이 발생하지 않나요?

    • PinkWink 2014/05/19 16:48

      그건 테스트를 해봐야합니다. 저도 지자기센서는 테스트를 안해봤는데요. 오차나 상황을 보고 그에 맞게 설계하는 것이 필터니까요.

1 ... 11 12 13 14 15 16 17 18 19 ... 37