IMU(Inertial sensor) 개념 정리 및 주의 사항

2024. 10. 19. 00:10· 1-1. Fundamental
목차
  1. 0. IMU(Inertial Measurement Unit, 관성 측정 장치)
  2. 1) 가속도 센서(Acceleration Sensor)
  3. 2) 자이로스코프(Gyroscope, 각속도센서)
  4. 3) 지자기 센서
  5. 4) 구성 센서의 상호 관계와 보정 필터
  6. 1. IMU 선정할 때 고려할 점
  7. 2. IMU 사용할 때 고려할 점
  8. 1) 자기장 간섭
  9. 2) 진동
  10. 3) 축 방향 정의
  11. 4) 캘리브레이션
  12. 3. IMU와 다른 센서의 융합
  13. 1) IMU Preintegration
  14. 2) Backward propagation

자율 주행 자동차는 통합적인 센서 시스템을 통해 고도로 발달된 운전 능력을 모방하고자 한다.

레이더, LiDAR, 카메라, IMU, 초음파 등 각자 장단점을 갖기 때문에 융합하여 사용하곤 한다.

Camera / Radar / LiDAR 센서 비교

 

 

이중에서도 'Inertial'이라고 불리기도 하는 IMU(Inertial Measurement Unit), 관성 측정 장치에 대해서 구체적으로 알아본다.

보통 로봇의 위치 제어를 할 때 IMU 센서를 통해 odometry를 잘 얻는다.

관성을 측정하여, 최종적으로 구하고자 하는 값은 물체가 기울어진 각도를 정확하게 측정하는 것이다.

 

구체적으로 어떻게 동작하는지 알아보자.

0. IMU(Inertial Measurement Unit, 관성 측정 장치)

IMU 센서를 통해 가속도, 각속도를 측정하며, 일부 센서는 자기장까지 측정한다.

이 센서를 통해 얻은 값으로 이동량(Translation)과 회전량(Rotation)을 구할 수 있다.

 

https://alida.tistory.com/102

덧붙여 이야기하자면,

구해진 가속도에서 중력의 영향을 뺀 뒤,

측정된 IMU 센서 자체의 bias와 noise를 빼서 실제 가속도와 각속도(true acc, gyro)를 모델링한다.

 

* IMU Bias 

Input value와 Output value의 일정한 offset

매우 빠른 속도(100Hz)로 값을 관찰하고 측정하기 때문에, 내보내는 시점과 값이 들어오는 시점의 일정한 차이가 생긴다.

이는 IMU 센서가 측정할 때마다 바뀌므로, 보통 SLAM에서 최적화를 할 때 Bias를 최소화하는 식으로 구하게 된다.

 

* IMU Noise 

Output value로 나온 값에 대하여 고려되는 랜덤한 오차

Noise는 보통 Covariance Matrix를 활용하여 수식적으로 활용하며,  (x, y, z)에 대한 Covariance Matrix이므로 3x3이 일반적이다.

Noise는 보통 AWGN(Additive White Gaussian Noise)로 가정하므로,

Random walk process를 일반적으로 IMU bias modeling에 쓰인다고 한다. 

 

1) 가속도 센서(Acceleration Sensor)

가속도 센서는 물체에 작용하는 가속력과 진동력, 충격력 등

동적 힘이 발생할 때의 움직임을 순간적인 가속도의 변화 ( 단위:  ((m/s^2)) ) 로 감지해낸다.

 

센서에서 얻어지는 출력값인 가속도를 적분하면, 진행방향의 '속도'를 계산할 수 있고,

이를 다시 가공하면 물체의 '위치'를 얻어낼 수 있다.

 

그러나 이러한 적분 과정은 시간에 따라 오차가 누적되는 단점이 있다.

때문에 GPS와 결합하여 보정하는 방법이 대중적으로 사용된다.


가속도 센서의 측정방법을 더 자세히 보자면, 비중력(Specific Force, g-force, mass-specific force)를 측정한다.

단위 질량당 비중력 힘으로, 실제 힘이 아닌 가속도의 타입이라 할 수 있다.

 

지상에서는 물체는 수직 하방으로 중력을 받으므로,

자세가 기우는 등 변함에 따라 x, y, z축 가속도계가 서로 영향을 미치며 측정 가속도값이 변화한다.

즉, 정지된 상태라면 작용하는 중력의 크기를 계산하여 기울어진 정도(각도)를 계산할 수 있을 것이다.

다만, 중력 외 가속도가 있는 경우는 가속도 센서만으로 정확한 기울기를 알 수 없다.

이를 보정하기 위해 각속도 센서(자이로스코프)를 이용한다.

 

2) 자이로스코프(Gyroscope, 각속도센서)

자이로스코프는 대표적인 관성 센서로, 물체의 회전 변화량인 각속도 ( 단위:  ((rad/s)) ) 로 감지해낸다.

 

자이로스코프는 중력을 이용해서 코리올리 힘을 검출한다.

중력이 가해질 때 진동 속도가 변하는 것을 각속도로 계산하여, 질량과 진동 속도를 통해 값을 측정하여 검출할 수 있다.

 

* 코리올리 힘 (전향력, 轉 向 力)

물체가 회전하고 있는 좌표계 위에 존재할 경우,

직선 방향으로 운동하도록 힘을 가했을 때 좌표계로 인하여 직선 운동이 아닌 회전을 한다.


자이로스코프는 종류에 따라서 정확도, 크기, 출력 형태가 다양하다.

일반적으로 MEMS 자이로스코프가 있으며, 대부분 회전 각속도를 측정한다.

MEMS 자이로스코프가 있으며, 대부분 회전 각속도를 측정한다.

 

회전각 = 각속도 측정값 x 샘플링 시간

 

이 원리에 입각해 각속도를 통해 최종적으로 물체가 기울어진 각도를 구하려면,

각속도를 측정의 전체 시간에 걸쳐 적분을 해야 한다.

 

여기까지 (가속도, 각속도 센서) 갖고 있다면 6축 센서이고,

지자기센서까지 포함하면 9축 센서이다.

 

3) 지자기 센서

 

 

예시 그림의 MPU-9250의 경우도, 가속도 3축 + 자이로 2축 + 지자기 3축 + 온도 1축으로 9축 기울기 센서로,

3차원 공간 상의 3차원 위치 + 3축 방향 회전을 모두 구할 수 있다.

 

지자기 센서는 지구 자기장의 세기(자기선속)와 방향(자북을 기준으로 틀어진 각도)을 측정하는 센서이다.
물체가 바라보는 방향이 북쪽 방향과 정렬되어 지구의 자기력선과 일치할 때 센서의 측정값이 최댓값·최솟값을 가진다.
따라서 지자기 센서는 주변 전기장, 자기장의 유무에 따라 측정값이 달라질 수도 있으므로 주의해야 한다.

 

 

4) 구성 센서의 상호 관계와 보정 필터

자이로스코프는 정밀한 센서의 경우 금액이 매우 높기 때문에 타 센서와 융합해 사용하는 경우가 일반적이다.
자이로스코프(각속도 센서)는 빠른 시간 내에 변위값을 측정하기 유리하나 적분 오차가 발생하고, 가속도 센서와 지자기 센서는 느리지만 절대각을 구할 수 있다.
따라서 가속도 센서 및 지자기 센서와 자이로스코프는 서로 보완(Complementary) 관계라 할 수 있다.
센서 값의 융합 과정에서 칼만 필터(Kalman Filter) 혹은 상호보완필터(상보필터, Complementary Filter)를 사용한다.

 

 

1. IMU 선정할 때 고려할 점

  • 가격
  • 센서의 속도
    • 바퀴로 움직이는 로봇은 ~50Hz면 충분하다
    • UAV는 100~500Hz 정도 되야한다
  • Attitude fusion이 센서 단에서 일어나는지, 아니면 여러 센서를 퓨전해야하는지?
  • 인터페이스
    • ROS를 쓴다면 USB가 제일 쉬움
  • 해상도, 최대치, gyro drift
  • 캘리브레이션의 필요 유무

 

2. IMU 사용할 때 고려할 점

1) 자기장 간섭

  • (본글 저자의 내용 그대로 첨부) 내가 사용하던 IMU는 magnetometer를 사용해서 heading (i.e. 북쪽방향)을 감지하고, 이를 통해 IMU 값도 보정하는 시스템이였다. 이 IMU는 드론에 탑재되어 heading 값으로 방향도 추정하고 IMU 값으로 움직임 값도 추정했는데, 며칠을 튜닝해도 heading 값이 안정화가 되지 않았었다. 그러다가 ‘우연히’ heading 값에서 보이는 노이즈의 원인을 알게 되었는데, 드론의 메인 로터의 속도가 올라가면서 노이즈도 같이 올라가는 것을 알 수 있었다. 나중에 알고보니, 우리 드론의 날개가 철을 포함하고 있어서 자기장 간섭을 일으켰던 것이다.
  • 로봇에 IMU를 쓴다면, 무조건 자기장이 발생할 수 있는 위치에서 최대한 멀리 떼놔야한다. 자기장이 발생하기 쉬운 곳은 1. 철로 된 파트, 2. 액추에이터, 3. 고전류 케이블이다.

2) 진동

  • 모든 로봇은 진동한다. 다만 그 진동의 형태는 로봇이 어떤 재료로 만들어져있고 어떤 땅을 밟고 있냐에 따라 달라진다. 우리 팀이 만든 규칙으로는, 드론을 날려서 x,y,z축의 움직임을 그렸을 때, x축이나 y축의 움직임이 z축을 교차한다면 진동이 너무 강하다고 판단하기로 했다.
  • 로봇을 평지에 가만히 세워놨는데, x/y축 움직임이 z축을 교차한다면 아마 그 진동을 댐프닝 해야할 것이다.

3) 축 방향 정의

  • 회사마다 IMU 축을 다르게 정의한다. IMU를 쓰고 있다면, 지금 당장 당신이 생각했던 축이랑 실제 축이랑 같은지 확인하길 추천한다. 심지어 종종 IMU 회사에서 제공하는 소프트웨어에서 정의한 축과 실제 축이 다를 때도 있다. 얼른 가서 확인해라. 왜냐면 나도 엄청 많이 틀렸거든.
  • 실제 IMU 센서의 축과, 소프트웨어의 축이 맞는지 다시 한번 확인하자.

4) 캘리브레이션

  • 종종 직접 캘리브레이션 해야하는 IMU 들이 있다. 그리고 진짜 가끔, 캘리를 해줬는데 껐다가 키면 캘리 정보가 날아가는 IMU도 있다 (너 말하는거다, BNO055…). IMU를 타겟 디바이스에 탑재하고나서 모든 축으로 회전할 수 있는지, IMU를 사기 전에 꼭 확인하자. 탑재까지 다 했는데 캘리 다시해야하면 진짜 골치아프다

 

3. IMU와 다른 센서의 융합

1) IMU Preintegration

“On-Manifold Preintegration for Real-Time Visual-Inertial Odometry - TRO 2016'’에서 처음 제안한 이론을 통해 많은 IMU 관찰 값을 하나의 factor로 표현을 할 수 있게 되었다.

이는 VIO(Visual inertial odometry), LIO(LiDAR inertial odometry) 발전에 큰 기여를 한 이론이다.

 

SLAM에서 최적화를 기준으로 분류를 하면, 크게 Filter-based 방법과 Graph-based 방법으로 분류된다.

이때, IMU Preintegration은 SLAM(VIO, LIO) 문제를 Graph-based 방법으로 최적화를 진행할 때 주로 사용되는 이론으로,

SLAM에서 Graph based로 최적화하기 전에, IMU 값들의 변화량을 미리 계산하여, 하나의 motion constraint로 바꾸어 사용하겠다는 의미이다.

 

 

LIO-SAM 코드를 기준으로 IMU Preintegration이 어떻게 가능한 것인가에 대한

임형태님께서 작성하셨던 자세한 포스팅은 아래에 추가해두겠습니다.

 

IMU Preintegration (Easy) - 1. Introduction

Easy explanations of

limhyungtae.github.io

 

2) Backward propagation

 

LiDAR와 IMU를 사용하는 경우를 살펴보자.

 

LiDAR 센서는 10-100Hz의 속도로 동작하는 것처럼 보이지만 하나 하나의 단일 포인트들은 100-200kHz의 초고속으로 로깅된다. 다만 이렇게 고속으로 데이터를 처리할 수는 없기 때문에 특정 간격(10-100Hz) 동안 데이터를 누적한 다음 한 번에 출력하는데 이를 스캔(scan)이라고 한다.

 

만약 LiDAR 센서가 움직이면서 포인트를 수집하는 경우 수집된 포인트는 필연적으로 한 스캔에도 여러 포즈가 섞여있을 수 있다. IMU 센서를 활용하면 LiDAR 포인트들을 한 스캔이 끝나는 시점(scan end-time)에 대해 정렬할 수 있으며 이를 Backward propagation이라고 한다.

 


한 번의 스캔동안 IMU는 forward propagation을 통해 상태를 업데이트 한다.

스캔 속도는 일반적으로 IMU 속도보다 느리기 때문에 한 스캔 사이에도 여러 IMU 측정값들이 존재할 수 있다.

 

다만, 앞서 말했듯이 LiDAR는 한 스캔 내에도 100-200kHz로 로깅된 포인트가 존재하기 때문에,

두 IMU 측정값 사이에는 수많은 포인트클라우드 데이터가 존재한다.

 

Backward propagation은 하나의 LiDAR 스캔이 끝나는 순간 IMU 포즈를 역순으로(backward) 전파시켜서

각 IMU 데이터의 포즈를 계산하고 이를 통해 k 시점으로 포인트클라우드의 포즈를 보정하는 방법을 말한다. 

 

이를 통해 모션에 의해 발생하는 포인트들의 왜곡을 보상해줄 수 있다(=motion compensation).

j 시점으로부터 최근 3개의 IMU 측정값을 자세히 살펴보면 위와 같다.

 


 

참고문헌

1) 장형기님 - IMU와 LiDAR를 사용할 때 주의해야하는 점 (번역)

2) 한은기님 - [IMU] IMU의 개념 및 활용법

3) 김태영님 - IMU 관련 용어 및 개념 정리

4) Movella - From IMU to GNSS/INS 

5) CANAL Geomatics - IMU Accuracy Error Definitions  

6) CANAL Gemoatics - Choosing an IMU : FOG vs MEMS IMUs  

7) Gyubeom Edward Im님 - [SLAM] FAST-LIO2 논문 리뷰 (+IKF, ikd-tree)  

8) 임형태님 - IMU Prreintegration(Easy) - 1. Introdunction

'1-1. Fundamental' 카테고리의 다른 글

ICP (Iterative Closest Point) 개념 정리  (0) 2024.09.30
  1. 0. IMU(Inertial Measurement Unit, 관성 측정 장치)
  2. 1) 가속도 센서(Acceleration Sensor)
  3. 2) 자이로스코프(Gyroscope, 각속도센서)
  4. 3) 지자기 센서
  5. 4) 구성 센서의 상호 관계와 보정 필터
  6. 1. IMU 선정할 때 고려할 점
  7. 2. IMU 사용할 때 고려할 점
  8. 1) 자기장 간섭
  9. 2) 진동
  10. 3) 축 방향 정의
  11. 4) 캘리브레이션
  12. 3. IMU와 다른 센서의 융합
  13. 1) IMU Preintegration
  14. 2) Backward propagation
'1-1. Fundamental' 카테고리의 다른 글
  • ICP (Iterative Closest Point) 개념 정리
숑지(shhy01)
숑지(shhy01)
숑지(shhy01)
기록
숑지(shhy01)
전체
오늘
어제
  • 분류 전체보기 (56)
    • 1-1. Fundamental (16)
      • Linear Algebra (0)
      • 3D point cloud (0)
      • Digital Control (0)
      • Kalman Filter (2)
      • ROS2 (3)
      • Deep Learning (7)
    • 1-2. Fundamental (4)
      • 반도체소자 (0)
      • 컴퓨터 구조 (0)
      • 데이터 통신 (0)
    • 2. SLAM (1)
      • Introduction to SLAM (0)
      • Paper Review (1)
    • 3. Computer Vision (6)
      • Intro to CV (CS231a) (5)
      • DL for CV (CS231n) (1)
    • 4. Data Anaylsis (1)
      • [KT AICE - Associate] (1)
      • [LG Aimers 4기] (0)
    • 5. Experience (4)
      • [CARLA] 자율주행 시뮬레이터 (1)
      • turtlebot3 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • cs231n
  • autonomous driving
  • Pose Estimation
  • CS231A
  • 컴퓨터비전
  • Place Recognition
  • cost fuction
  • 오블완
  • convex optimization
  • frenet frame
  • gemmasprint
  • Global Localization
  • intelligent transportation systems
  • trajectory planning
  • LiDAR Point Cloud
  • 티스토리챌린지

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
숑지(shhy01)
IMU(Inertial sensor) 개념 정리 및 주의 사항
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.