기계공학/로봇2014. 8. 26. 23:56
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

  자이로 센서와 가속도 센서는 실생활에서도 많이 쓰이는 센서가 되었습니다. 스마트폰에 장착되어 있는 자이로, 가속도 센서의 경우 사용자가 움직이는 모션을 감지하여 그에 맞는 다양한 반응을 수행할 수 있도록 합니다. 이 외에도 자이로 센서와 가속도 센서는 기본적으로 움직이는 물체의 자세를 측정할 때 많이 쓰이는 센서입니다. 오늘은 이 두가지 센서의 특성에 대해서 알아보려고 합니다. 

  움직이는 물체의 자세를 측정하는데 많이 쓰이는데, 특히 로봇의 자세를 제어할 때 많이 쓰입니다. 거꾸로 세워진 진자라는 의미를 가지는 Inverted Pendulum 을 유투브에 검색해 보면 많은 동영상이 있는데 이러한 것이 자세 제어의 예가 되겠습니다. 다음 동영상 한번 보세요. 

<출처 : 유투브 'LEGO NXT Balancing Road TwoWheels Robot' 검색>


  로봇의 자세를 의미하는 각도는 롤, 피치, 요(Roll, Pitch, Yaw)로 나타냅니다. 비행기의 항법 장치에 필수적인 요소이기도 합니다. 요는 z축 방향 회전을 의미하고, 롤은 좌우로 회전하는 것을 의미합니다. 좌우라고 표현하니까 헷갈릴 수도 있는데, 자동차를 기준으로 생각해 본다면 코너를 돌때 한쪽 방향으로 쏠려서 기울어지는 것을 롤이라고 합니다. 마지막 피치는 자동차가 브레이크를 잡아서 앞으로 쏠릴때 기울어지는 방향을 의미합니다.

  이러한 자세 측정에는 그 기준이 있습니다. 즉, 중력방향을 기준으로 얼마나 기울어져 있는지를 나타내는 값이 롤과 피치입니다. 롤과 피치를 측정하기 위해 사용하는 센서가 바로 가속도 센서와 자이로 센서입니다. 보통 MEMS 기술을 적용한 칩형태의 센서가 스마트 폰에 많이 장착되어 있죠. 다음은 가속도 및 자이로 센서로 유명한 Invensense 사의 제품입니다. 


  자이로와 가속도 센서의 큰 차이를 먼저 이야기 하자면 단위를 먼저 말씀드리는 것이 좋겠네요. 자이로는 각속도를 측정하므로 단위가 (degree/sec) 입니다. 그리고 가속도 센서는 단위로 (g) 를 사용합니다. 그럼 이제 가속도 센서와 자이로 센서를 비교해서 살펴보도록 하겠습니다.


1. 가속도 센서

  가속도 센서는 Accelerometer 로 말 그대로 가속도를 측정하는 센서입니다. 가속도 센서가 3축이라 함은 센서가 3차원에서 움직일 때 x축, y축, z축 방향의 가속도를 측정할 수 있다는 의미입니다. 기본적으로 가속도 센서는 가만히 정지한 상태에서 중력 가속도를 감지하기 때문에 z축 방향으로 -g 만큼의 값을 출력합니다. 그러면 이러한 가속도 센서를 이용해서 어떻게 자세, 즉 기울어진 각도를 측정할 수 있을까요?

  먼저 움직이는 물체와 견고하게 센서가 장착되어 있는 상태에서 시작합니다. 센서의 초기 출력은 모두 0이라고 합시다. 이 상태에서 물체를 y축 방향으로 45도 기울여 보면, 기울어진 상태에서 z축 방향과 x축 방향으로 동일한 값의 가속도가 측정됩니다. 아래 그림 보시면 쉽게 이해가 되실텐데 중력방향으로 g 가 측정되어야 하므로 0.707g 만큼 z축과 x축 방향으로 값이 출력됩니다. 결과적으로는 z축과 x축 값의 비율을 atan 에 넣으면 그 결과값이 45도, 즉 기울어진 값을 알수 있습니다.


  간단히 가속도 센서를 이용해서 각도를 측정하는 방법은 위와 같습니다. 하지만 간단한 만큼 문제점이 있습니다. 정지된 상태에서 물체가 움직이기 시작하면 그때 측정되는 값은 기울기를 나타내지 않을 수 있습니다. 예를 들어 45도 기울어진 위와 같은 상태에서 오른쪽으로 가속을 해본다고 가정해 보죠. 그러면 x축과 z축에서 측정되는 가속도는 변하게 됩니다. 한쪽값이 더 커지겠죠? 그러면 이 상태에서 atan 에 대입한다고 하더라도 45도 값은 나오지 않게 됩니다. 즉 움직임이 생겨서 어느 한쪽 방향으로 가속도가 생기게 되면 결과적으로 이 값이 중력에 의해 측정되는 가속도값과 구분이 안되게 됩니다.

  * 정지하지 않은 움직임 상태에서는 가속도 센서만으로 기울기 값을 측정할 수가 없습니다.


2. 자이로 센서

  자이로 센서는 가속도를 측정하는 가속도 센서와 달리 각속도를 측정합니다. 자이로스코프가 각속도를 측정하는 기구인데 MEMS 기술을 적용한 칩형태의 자이로센서도 각속도를 측정하는 기능을 가지는 것입니다. 각속도는 시간당 회전하는 각도를 의미하죠? 다음과 같은 예를 들어서 자이로 센서값이 어떻게 측정되는지 알아보겠습니다.

  1. 수평한 자세를 유지하고 있는 상태를 가정합시다. 이때는 정지 상태이니 당연히 각속도도 0도/sec를 나타낼 것입니다.

  2. 이 물체가 10초 동안 50도만큼 기울어진다고 봅시다. 이 10초동안은 0이 아닌 각속도 값을 가지게 됩니다. 10초 동안의 평균 각속도는 5도/sec 가 될것입니다.

  3. 기울어지는 동작을 한 후 다시 멈춰서 50도를 유지한다고 봅시다. 이때는 다시 각속도가 0도/sec 가 됩니다. 

1번 2번 3번 과정을 거치면서 각속도는 0 -> 5 -> 0으로 바뀌었습니다. 그런데 각도는 어떻게 바뀌었나요? 0도에서 점차 증가해서 50도가 되었습니다. 각속도에서 각도를 구하려면 전체 시간에 해당하는 만큼 적분을 해야합니다. 자이로 센서는 이와 같이 각속도를 출력으로 내보내기 때문에 전체 시간동안 이 각속도를 적분하면 기울어진 각도를 계산할 수 있습니다. 그런데 자이로 센서에도 문제점은 존재합니다. 적분의 문제점이지요. 센서에서 측정되는 각속도는 노이즈가 생기든 어떠한 이유에 의해 측정값에 에러가 계속 생기는데, 이 오차가 적분시에는 누적이 되어서 최종 값이 드리프트 되는 현상이 생깁니다.

  * 자이로 센서에서 측정되는 각속도를 이용하면 시간이 지날수록 각도는 오차가 생겨 기울기 값이 변하게 됩니다.


3. 정리

  앞서 가속도 센서와 자이로 센서를 이용해서 물체가 기울어진 각도를 측정하는 방법에 대해서 알아보았습니다. 하지만 각각의 문제점이 존재하는데 정리하면 다음과 같습니다.

  정지한 물체가 움직이기 시작한 후 다시 정지하는 동작을 한다면...

  정지상태의 긴 시간의 관점에서 보면 가속도 센서에 의해 계산된 기울어진 각도는 올바른 값을 보여줍니다. 그러나 자이로 센서에서는 시간이 지날 수록 틀린 값을 나타냅니다.

  반대로, 움직이는 짧은 시간의 관점에서 보자면 자이로 센서는 올바른 값을 보여줍니다. 하지만 가속도 센서는 기울어진 각도와는 영 다른 계산값이 나올겁니다.

  결론적으로는 가속도센서와 자이로센서를 모두 사용해서 각각의 단점을 보상할 수 있는 알고리즘을 적용해서 롤 또는 피치 값을 계산하게 되는 것입니다. 많이 적용하는 보상 방법 및 필터링으로는 칼만필터를 사용하는 경우가 많이 있는데, 이 부분까지 알려면 공부를 많이 해야겠습니다.

  Yaw 값 측정에 대해서는 간단히만 알아보죠. Yaw 의 회전축은 z축방향, 즉 중력방향과 같습니다. 따라서 가속도센서보다는 자이로 센서의 z축 값을 측정해서 이 값을 이용해 yaw 값을 계산하고 드리프트되는 오차를 보상하는 다른 센서를 추가적으로 사용합니다. 바로 마그네토미터, 즉 지자기센서입니다. 3축 지자기 센서를 적용해서 yaw 방향을 측정하는 것입니다. 

  자이로는 온도가 변하면 그 값이 같이 변하는 특성이 있다고 합니다. 그래서 정확한 출력을 계산해야 할 경우 온도센서도 함께 사용해서 오차를 보상해야 합니다. 그래서 각도측정 센서를 찾아보면 보통 가속도센서, 자이로센서, 지자기센서, 온도센서를 내장한 9축 자세 측정 센서라고 합니다.

  각도를 측정하는 것이 상당히 까다롭네요. 다음에는 제가 가지고 있는 9축 자세센서에 대해서 포스팅 해보도록 하겠습니다. 방문해 주신 모든 분들 좋은 하루 보내세요~

Posted by smileast