최근에 가속도센서를 이용한 각도 측정과 그 한계에 대해 이야기 했었습니다. 그래서 회전각도 혹은 기울어진 각도를 검출하기 위해 대표적인 각속도센서인 자이로 센서를 테스트해보았습니다. (참고로 극도로 초보적인 테스트니까 혹시 자이로에 대해서 잘 아시는 분들은 안읽고 지나가셔도 된다는...^^) 먼저 대상으로 삼은 센서는 요즘 제가 부쩍 자주 들어가보는 Withrobot의 myGyro300SPI와 인터렉트의 NT-Gyro300이라는 두 제품입니다. 먼저 myGyro300SPI는 Analog Devices사의 ADIS16100을 모듈화한것이구요. NT-Gyro300은 InvenSense사의 IDG-300을 모듈화한 것입니다.
I. myGyro300SPI
위에 보이는 myGyro300SPI는
제품사양에도 나와있듯이 칩의 윗쪽 방향 중심의 회전... 즉 칩입장에서 yaw 각속도 검출만 가능하며 +-300도/s의 측정범위를 가집니다. 그 출력값은 SPI통신으로 전송되고 필터를 내장하고 있습니다. 필터대역은 0.87Hz입니다. 이 대역을 모듈의 R,C를 바꾸어 변경가능하긴 한데, 만만치 않은 가격(10만원이 약간 안되는)의 제품을 간크게 뜯기엔 좀 어려워보입니다.^^
저부분도 약간은 아쉬움이 남는 부분인데, 3번핀에 5V를 인가해야하고, 3.3V대상 프로세서라면 동작전원을 4번핀에 별도로 3.3V를 인가해야합니다. 약간은 불편..(ㅜ.ㅜ).. 11,10,9번핀은 뭐 별도 내장되어있는 2개의 ADC를 위한것으로 일단은 사용하지 않을꺼니까 1번부터 8번만 연결하시면 됩니다.
위 계산처럼 만약 도/s의 단위라면 출력값에 0.3275를 rad/s라면 0.0057을 곱해서 사용하시면 됩니다. 아참 위의 3/5부분에서 3을 3.3으로 바꿔서 다시 계산하세요...ㅋㅋ^^
이전 가속도센서 테스트때도 사용한 그 기구부의 회전중심축에 자이로를 연결하고 엔코더의 출력에서 계산 각도를 샘플링타임 0.01초에 맞춰 미분(차분)해서 자이로와 비교했습니다. 위에 계산된 스케일펙터가 정확함을 알 수 있네요. 그러나~~ 참값인 파랑색을 뒤따라 나오는듯한 인상을 받습니다. 당연히 어떤 필터가 설계된 상태이니 시간지연은 어쩔 수 없는것일겁니다.
II. NT Gyro300
위의 NT-Gyro300은
핀배치도만 봐도 알 수 있듯이 아날로그출력을 가집니다. 일단 칩입장에서 피치와 롤각속도 두개를 검출할 수 있습니다. 뭐 아날로그 출력이니 전원, 그라운드 빼면 한축당 하나씩만 물려주면 되겠습니다.^^
위에 스케일펙터를 계산해 두었습니다. 그게 맞는지 엔코더의 미분치와 비교해보겠습니다.
뭐 대략 일치한다고 볼 수 있습니다. 그러나. myGyro300SPI에 비하면 어마어마한 노이즈를 가지고 있다는 사실을 알 수 있습니다. 저 노이즈를 가급적 시간지연없는 범위안에서 5개의 샘플링구간을 평균하는 것으로 다시 잡았습니다.
myGyro300SPI만큼은 아니지만 어느정도 노이즈가 잡힌듯 보입니다. 그러나 장점도 있습니다. 바로 시간지연이 얼마 없다는 것입니다. 두개의 각속도그래프와 엔코더의 미분치를 같이 놓고 보겠습니다.
III. 두 센서의 적분을 이용한 각도 검출
이제 적분해서 두 센서를 같이 비교해보겠습니다.
적분은 많이 사용하는 ZOH(Zero-Order Hold)로 보통 사각형의 넓이 구하기 입니다. 출력값에다가 샘플링타임(0.01초)을 곱해주면 됩니다. 파랑색 참값(엔코더)에 비하면 NT-Gyro300은 드리프트현상이 myGyro300SPI에 비하면 심하다는 사실을 확인할 수 있습니다. 그러나 시간지연측면에서는 당연한 이야기지만 그 반대입니다. 시간지연 정도는 참값(엔코더)에 비해 NT-Gyro300이 0.02초, myGyro300SPI가 0.13초입니다. 사실 100ms가 넘는 시간지연은 아무리 노이즈가 작다하더라도 좀 우울하다는 생각이듭니다. 물론 2족보행로봇과 같은 느린응답도 괜찮은 시스템의 경우는 괜찮겠지만, 저처럼 무인항공을 목표로하고 있다면 좀 난감하다고 말해야겠습니다. 그러나, 아직은 어떻게 될지 몰라서 둘다 계속 테스트를 해야겠습니다.
마지막으로 정지시 드리프트 정도를 보겠습니다.
역시 myGyro300SPI가 내장된 필터의 역활때문인지 훨씬 우수한 성능을 보여줍니다. 물론 온도센서에 대한 보상은 하지 않았습니다. 일단은 자이로 모듈자체의 성능이나 특성을 비교하고 싶었기 때문입니다. 그리고 온도센서를 이용한 보정이라 하더라도 충격에 대해 자이로의 측정범위를 넘어선다면 그걸 자이로만으로 해결하기는 어려워보입니다. 즉, 어차피 외부의 다른 센서를 이용해서 보정할 생각이기 때문에 그냥 ... 테스트했습니다. (절대 온도센서결과값을 SPI로 받는 부분이 이상하게 잘 안되서 말하는 핑계는 아닙니다... 흑흑)
'Robot > Project' 카테고리의 다른 글
자이로센서 myGyro300SPI의 통신문제 해결 (3) | 2009.06.22 |
---|---|
자이로센서를 이용한 각도 측정시 가속도센서로 보정하기 (116) | 2009.06.17 |
자이로센서의 출력에 온도를 고려하기 (23) | 2009.06.15 |
가속도센서를 이용한 각도 측정과 그 한계 (124) | 2009.06.09 |
Balancing Robot 밸런싱 로봇 (32) | 2009.04.18 |
Rotary type Inverted Pendulum (로터리 역진자) 시스템 (50) | 2009.04.17 |
Cart type Inverted Pendulum (카트형 역진자) 시스템 (120) | 2009.04.17 |