2015년 9월 6일 일요일

상보필터(Complementary Filter) 기반 IMU 값 보정

이 글은 상보 필터를 이용해 IMU 값을 보정하는 방법을 정리한 것이다. 이 글은 다음 글을 참고하였다.

1. 개념
MPU-6050 가속도와 자이로(각속도) 센서는 이론적으로는 각 값을 누적한다면, 거리와 각도를 알 수 있어야 한다. 하지만, 센서에 노이즈가 포함되어 있어, 누적하면 할 수록 참값과는 멀어져 버려, 발산해 버리고 만다. 그러므로, 노이즈를 필터링해, 에러를 제거해 주어야 한다. 이런 기법 중 유명한 것이, 상보 필터(Complementary Filter)와 칼만 필터(Kalman Filter)이다. 이 글에서는 상보 필터를 다룬다.

2. 내용
상보 필터는 각도를 계산할 때, 단순히, 자이로값(각속도값)만 적분(합산)하지 않는다. 가속도 센서값을 함께 고려해, 에러값을 보정한다. 이 내용을 수식으로 표현하면 다음과 같다.

angle = 0.98 * (angle + gyroscope_data + delta_t) + 0.02 * (accelerometer)

여기서, 0.98과 0.02 상수값을 변경해, 필터를 얼마나 적용할 지 여부를 설정할 수 있다. 상세한 소스는 이 링크를 참고한다.

3. 마무리
다음 영상은 가속도 적분, 각속도 적분, 상보필터기반 적분 결과를 보여주는 영상이다. 상보필터가 적용되지 않은 결과들은 시간이 지나면서, 오차가 누적되는 것을 확인할 수 있다.


상보 필터는 칼만 필터에 비해, 간단하며, 아두이노와 같은 저성능 보드에서도 잘 동작하는 가벼운 알고리즘이다. 이런 필터들은 드론, 로봇, 무인 자율 주행 장치 등에 많이 활용되고 있다.  

댓글 없음:

댓글 쓰기