Open Robotics

ARS, INS, GPS (11)

1차 상보필터(complementary filter)와 회전행렬로 ARS(Attitude Reference System) 만들기 view 발행 | ARS, INS, GPS
page365 2011.06.14 19:19
안녕하세요.
항상 보물같은 글을 잘 읽고 있습니다.
감사합니다.

질문이 있습니다.
1. 블록 다이어그램을 살펴보면, 가속도 센서로부터 측정한 각도( a)는 센서의 적분 각도( )와의 차
를 이득 1/a를 곱하여  에 적분한다.

라는 대목에서 이득 1/a 에서의 a는 가 뭘 뜻하는 것인지 잘 모르겠습니다.

2. 문서 후반부에 나오는 Ka 구하는 공식에서 Ng가 무엇인지 알수 있을까요?

3. 소스에서 K1,K2,K3와 Ka의 식이 틀리던데 왜 그렇게 구한건지 이해가 잘 안가서 설명해주시면 감사드리겠습니다.

질문만 잔뜩 해대서 죄송합니다.^^;; 이런 쪽으로 물어볼 사람이 별로 없다보니..ㅠㅠ
1. 필터 수식으로부터 나온 것인데, 필터 식의 모양이 1차 전달함수 모양입니다. 여기서 a는 시상수( time constant)가 됩니다.

2. 제가 ng에 대한 설명을 빠뜨렸습니다 ^^; ng는 가속도 센서로 측정한 값입니다. 단위는 m/s^2이 아니고 g 입니다.

3. 아마도 제가 문서를 만들고 문서에 따라 코딩을 해서 구현해 보는데, 코딩을 한 결과를 다시 문서에 반영을 안해서 그런것같습니다. K1, K2, K3는 각각 phi, theta, psi 각에 대한 게인인데, 측정값에 오차가 많이 있으면 게인을 낮춰 업데이트 비율을 낮추고, 오차가 없다고 생각되면 게인을 높여 업데이트 비율을 높이는 식입니다. 이건 어떤 실험적 근거나 특별한 원리로부터 유도된 수식이 아니라, 제 임의로 만들어낸 수식들입니다.

감사합니다.
안녕하십니까 ~!
이번에 주인장님 글을 보며 한창 INS 설계에 대해 공부하고 있는 대학원생입니다.

다름이 아니라 제가 출신이 정보통신과라서 물리적인 공식중에 가속도에 관한 공식중 이해가 잘 가지않는 부분이 있습니다.


a=v'+v x W +R'g
의 수식중에 v가 도대체 어떻게 생성되는가에 대한 자료가 있으신지 알고 싶습니다..

이것의 생성이유를 알고 너무 알고 싶어요 ^^ 감사합니다
지구와 같은 회전체 위에서 정지해 있거나 운동하는 물체는 두 가지 힘(가속도)가 추가적으로 발생하는데, 운동하는 경우는 코리올리 힘이고 정지해 있는경우는 구심력입니다. 상기 식에서 코리올리 힘은 생략되어 있으며, 질물하신 부분은 구심가속도입니다.
상세한 답변 정말 감사 드립니다..
또 다른 질문이 있는데..

1.가속도를 오일러 각으로 변환할때 tan_phi=Ay/Az 에서 다시 phi=atan2(-Ay,-Az) 가되는 공식중에 ... 가속도 값앞에 왜 -가 붙는지 ...

2.가속도에서 구한 phi theta psi 에 왜 _e를 갑자기 왜 붙이신건지..

설명해주시면 정말 감사하겠습니다. !!
안녕하세요. g_z 가 음수(-) 값을 가지는데, g_z가 소거되면서 음수 값을 남기고 소거되어서 그렇습니다. atan2 함수를 활용하기 위해 음수 값을 남겨두었다고 보시면 됩니다.
정말 감사합니다^^. 실험하기에 앞서 굉장히 많은 도움이 될것 같습니다. ㅜ ㅜ 바쁘신 와중에 답변해주셔서 감사합니다.~!
감사합니다. ^^ 실험 꼭 성공하시기 바랍니다. ^^
작성하신 글을 보고 많은 공부가 되었습니다. 궁금한것이 있는데 가속도에서 나온 값은 각도이고 자이로에서 나온 값은 각속도인데 둘을 합칠수 있나요?? 단위가 각도와 각속도라서 다르고 각도를 적분하면 ....이상한거가아서요...ㅎㅎㅎ;;;;제가 잘이해가 안가서 질문드립니다...ㅠ
쉽게 생각해서 각속도를 적분하면 각도가 되는데, 여기에 오차가 조금씩 포함되에 각속도의 적분값(각도)이 틀어지게 됩니다. 근데, 중력가속도는 항상 지구중심을 향하고 있기때문에 이 중력가속도를 기준으로 틀어진 각도를 보정하게 됩니다. 감사합니다. ^^
댓글이 빠르시네요 ㅎㅎ감사합니다 공부 더 해보고 그래도모르겠으면 또 질문하겠습니다^^
와... 진짜 우연히 다시 들어오게되었는대 군대에 있을때 본거하곤 뭔가 다른 내용으로 보이는 군요.ㅎㅎㅎ
행열로 값을 구하려고 하는대요 몇가지 궁금한게 있어서 질문드립니다. 본 소스에서 보면 k1,k2,k3로 이득값을 곱해주던대 이렇게 되면 orthogonal이 깨지지 않나요? 또 한가지 여쭙고 싶은것은 가속도 회전행열과 자이로 회전행열을 각 시간때 마다 구하고(예를 들면 1초에 100번) 매순간 정확도 판단을 하고 자이로를 곱할지 가속도를 곱할지 결정해서 곱해주면서 듀티비 정하듯 정확도를 올리려고 하는대요(예를 들면 매순간 왔다갔다 해서 최종적으로는 평균적으로 1초에 자이로 30번 가속도 70번 곱해서 각 센서의 영향력이 정해지는것이지요.) 여기서 정확도 판단 기준을 어떤식으로 해야할지 고민입니다. 어떤 판단 기준으로 해야 좋을지 조언 부탁드리겠습니다. 감사합니다.
안녕하세요. 첫번째 말씀하신 회전행렬이 orthogonal한 성질을 유지하도록 하는 방법은 위키피디아를 참조하시면 됩니다: http://en.wikipedia.org/wiki/Orthogonal_matrix  
그리고 각속도와 가속도의 정확도를 안다면 칼만필터로 두 데이터를 융합하는 것이 쉬운데, 이게 좀 어렵습니다. 그래서 저는 가속도 벡터의 크기가 1근처일 때 가속도는 정확하다고 보고 각속도는 0근처일때 정확하다고 보았습니다.
안녕하세요..
자문좀 구하고자 글 남김니다..
지금 현재 IMU 센서 ADIS16364사를 가지고 보드를 꾸며서 MCU를통해 직접 IMU를 제어 하고 있는데요..
읽어 들이는 값 자체가 자이로 값을 움직이질 않고 엑셀레이터 값 x,z 축만 움직임이 있는데요..
읽어 드린 온도 값 자체도 데이터 시트에 명시된 범위보다 높게 나오구요 -- 먼가 문제인지 모르겠습니다..
데이터 파싱은 raw 데이터로도 확인해 보았는데 도저히 감을 못잡겠네요 --
기본적인 읽고 쓰기 센서 ID 읽기 등은 잘 되어지는데.. 실제 데이터 값을 읽어 들이면 데이터가 생각 처럼 변하질 않네요..
현재 ADISUSBZ 보드가 있으면 확인 이라고 해볼텐데 -- 그러지 못하고 있습니다..

그래서 부탁좀 드립니다.. 혹시 IMU 데이터시트 말고 어플리케이션 시트나 센서 관련 다른 기술문서 가지고 계시면 공유좀 부탁 드려도 될까요??대리점에다 자료 요청을 드렸지만.. 웹구매관련해서는 지원을 안해준다고해서 지금 계속 땅만 파고 있네요 -- 부탁드립니다.. 혹시 관련 비슷한 자료 있으면 공유좀 부탁드림 니다 꾸벅~~~
chleeman@naver.com
저도 말씀하신 현상을 겪은적이 있는데, 결국은 센서가 고장난 경우였습니다. 제일 간편하게 알아보는 방법은 ADISUSBZ 보드에 센서를 장착하고 PC에 연결하여 모니터링 프로그램으로 값을 받아보는 것인데... ADISUSBZ 보드가 없다니 안타깝습니다. 만일 안산 근처에 계시다면 저희 연구원으로 찾아오시기 바랍니다. 제가 가지고 있는 보드에 올려서 테스트 해보시면 센서가 어떤 상태인지 바로 알 수 있을것같습니다.
답글과 신경써주셔서 감사드립니다..
결론 적으로 오늘 해결 했습니다       OTL..
현재 제가 구성한 보드는 ADIS16305, ADIS16364, ADIS16375 3가지의 타입을 한보드에 모두 적용 할 수 있게 만들보드인데요 (ADISUSBZ 처럼 하나의 보드로 여러개의 센서를 바꿔가면서 테스트할 수 있는 보드)
핀 맵중 23핀이 ADIS16364, ADIS16305 는 NC 이지만, ADIS16375는 Real Time Clock Power 로 핀으로 할당 되어 있습니다. 그래서 23번핀은 VCC 로 연결 된 상태에서 16375는 제대로 동작을 하지만 , 16364 , 16305   센서는 비정상적으로 데이터가 출력되는 것을 확인 했습니다.. 핀이 NC 여서 전원이 연결되어도 별다른 영향을 미치지 않을꺼라는 생각 때문에 문제가 발생했습니다.. 설계 할때 혹시나 해서 NC 핀과 다른 핀과의 연결이 되어 있나 테스터기로 기본적인 저항 테스트도 하고 연결 한것인데.. -- 이부분때문에 비정상적으로 데이터가 출력될 줄은 꿈에도 몰랐습니다. --

답글은 달아주셔서 정말 감사드립니다.. 답글 보고 최종적으로 하나씩 보자는 마음으로 펌웨어 부터 하드웨어 까지 꼼꼼 히 보다보니.. 해결 할 수 있었습니다..
감사드립니다..^____________ ^
안녕하세요
제가 자이로와 가속도와 지자기를 이용해서 롤, 피치 ,요축을 상보필터를 만들어 각도를 얻고있습니다.
롤과 피치축은 정말 잘되는데 요축에서 롤과 피치축으로 기우리면 요축의 값도 변하는데
이게 왜 이러는지 모르겠습니다. 어떤분들은 틸트보상이란것을 해주라고하는데 이것에 대한
자료도 없는거같구요... 제 생각에는 지자기에서 요축으로의 각도를 구할때
atan(y/x)를 해주었는데 이 부분때문에 롤과 피치축으로 기우릴때 요측의 각도가 변하는거같은데
이 또한 정확하지가 않네요... 혹시 아신다면 설명이나 자료가 있다면 자료 공유점 부탁드려요
안녕하세요. ^^
상보 필터의 식을 보기 전에는 제가 답변을 드릴 수는 없습니다. 하지만 말씀하신바와 같이 롤과 피치는 중력가속도로 보정하고 요는 지자기로 보정합니다. 하지만 지자기 데이터가 주변 환경에 따라 쉽게 오염되기 때문에 잘 사용하지 않습니다. 만일 차량과 같이 실외에서 운행하는 상태라면 GPS의 속도벡터의 방위로 요 각을 보상해 보시는게 어떨까 제안드립니다.

만일 롤과 피치 요가 좀 이상하게 움직일 때는 오일러각의 연산 순서가 바뀌어서 그럴 수도 있습니다. 오일러 각으로 회전할 때는 롤-피치-요, 요-피치-롤 등 회전 순서에 따라 서로 다른 자세가 나올 수 있기때문입니다. 그리고 롤-피치-요-롤 로 회전한 결과가 롤-롤-피치-요 로 회전한 결과와 다를 것입니다. 아마도 이러한 연산 순서에 문제가 있지 않을까 합니다.
또하나 주의하셔야 할 것은 롤, 피치, 요 세 각을 서로 독립적으로 보정할 수 없다는 것입니다. 이 세 각은 서로 연동되어 움직이기 때문에 각각 독립적으로 보정한다면 문제가 생깁니다.

감사합니다.
등록
텍스티콘 텍스티콘
ARS-상보필터와 회전행렬.pdf (264 KB) 다운로드
TestGyroAccel.zip (163 KB) 다운로드
ARS-상보필터와 회전행렬.pdf (262 KB) 다운로드
TestGyroAccel-RM.zip (129 KB) 다운로드
ARS-상보필터와 회전행렬.pdf (262 KB) 다운로드
ARS-상보필터와 회전행렬.pdf (262 KB) 다운로드
TestGyroAccel-RM.zip (126 KB) 다운로드
ARS-상보필터와 회전행렬.pdf (262 KB) 다운로드
top