IMU센서 - cchamchi/cansat GitHub Wiki

IMU 센서란

IMU(Inertial Measurement Unit)은 직역하면 관성측정장치 입니다. 또한 IMU는 자이로스코프 / 가속도계 / 지자기센서로 구성된 센서를 뜻합니다.종류에 따라 자이로스코프 가속도계만 있는 6축센서, 자이로스코프와 가속도계 지자기센서 까지 포함한 9축센서도 있습니다.당연히 9축이 지자기센서 기능까지 포함되니 많으니 비싸답니다. ㅠ.ㅠ 각 센서는 관성을 이용해 물리량을 측정하는데, 이 장치로 부터 이용할 수 있는 물리량은 아래와 같습니다.

자이로스코프는 각속도(rad/s)를 측정하고 시간당 몇도(degree)를 회전했는지가 필요할 때 사용합니다. 가속도계는 가속도(m/s^2)를 측정하고 초기값을 계산할때 중력 가속도를 분해하여 얼마나 기울어졌는지를 측정하는데 사용합니다. 또한 속도와 이동거리 역시 가속도를 적분해서 사용할 수 있습니다. 지자기센서는 지자기(magnet)를 측정합니다. 자북을 기준으로 자기선속의 세기를 측정하여 자북을 기준으로 얼마나 틀어졌는지를 측정합니다.

아래 동영상을 보시면 자세한 동작원리를 배울 수 있습니다.

https://www.youtube.com/watch?v=eqZgxR6eRjo

가속도 센서

[출처] http://mechaworld.tistory.com/11

가속도 센서는 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도 값은 나오지 않게 됩니다. 즉 움직임이 생겨서 어느 한쪽 방향으로 가속도가 생기게 되면 결과적으로 이 값이 중력에 의해 측정되는 가속도값과 구분이 안되게 됩니다.

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

자이로 센서

가속도 센서가 X,Y,Z 방향으로의 진행정도를 알수 있었다면, 자이로는 회전의 변화량 즉 각속도를 측정하는 센서입니다. 위 사진을 보는 것처럼 비행기 제어에 가장 많이 쓰이는데, X 축으로의 회전을 Roll, Y축은 Pitch, Z축은 Yaw 라고 부릅니다.

자이로 센서는 위 사진 처럼 중력을 이용하여 코리올리힘을 검출하는데 중력이 가해질때 진동속도가 변화하는 것을 각속도로 계산하여 질량과 진동속도를 통해 값을 측정합니다.

각속도는 시간당 회전하는 각도를 의미하죠? 다음과 같은 예를 들어서 자이로 센서값이 어떻게 측정되는지 알아보겠습니다.

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

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

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

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

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

지자기 센서를 이용하여 오차값을 보상하게 됩니다.