본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링/임베디드

AHRS - 상보 필터(Complementary Filter)

by 베니스상인 2020. 3. 27.

지난시간에 IMU MEMS 센서에 대해 살펴보았다. 대표적인 예로 MPU6050이 있는데 MPU6050에 있는 자이로 센서와 가속도 센서의 특징도 함께 살펴보았다.

 

 

자이로 센서 살펴보기

https://swiftcam.tistory.com/96

 

IMU MEMS 센서 MPU6050 살펴보기 1 - 자이로 센서

IMU(Inertial Measurement Unit: 관성측정장치)는 각속도와 가속도를 이용하여 물체의 자세를 측정해주는 센서이다. 요즘 스마트폰이나 드론에 IMU 센서를 많이 사용하고 있다. 보통 IMU 센서는 3축 자이로와 3축..

swiftcam.tistory.com

 

 

가속도 센서 살펴보기

https://swiftcam.tistory.com/159

 

IMU MEMS 센서 MPU6050 살펴보기 2 - 가속도 센서

지난 번에 MPU6050의 자이로센서에 대해 살펴보고 노이즈 오차를 측정해보았다. 오늘은 MPU6050의 가속도 센서를 살펴보자. IMU MEMS 자이로 센서, 가속도 센서의 특징 및 각도 계산에 대해서는 아래 블로그 참고..

swiftcam.tistory.com

 

MPU6050의 센서의 특징을 정리해보면 아래와 같다.

 

MPU6050 센서의 특징

 

3축 자이로(Gyroscope) 센서의 특징

- ADC 샘플링된 각속도의 분산 벡터를 출력해준다. 

- 각속도를 누적하여 현재의 각도를 계산할 수 있다.

- 정지해 있을 때는 0값을 가지지만, 해당 축이 이동하면 속도의 크기에 따라 ADC Resolution 범위의 값을 가진다. 

- 회전운동을 할 때는 각도 변화가 잘 반영되어 나타나지만 저속 또는 정지상태에서는 Drift 현상이 발생한다.

 

 

3축 가속도(Accelerometer) 센서의 특징

- 가속도의 분산 벡터를 출력해준다.

- 가속도가 없는 곳에서는 각 축의 출력이 0으로 나오겠지만, 지구에서는 중력이 작용하고 있으니 그냥 두어도 센서 Z값은 1g에 해당하는 값을 가진다.

- 충격에 과하게 반응하기도 하고 외부 진동이나 환경에 민감하게 반응한다(필터링 필요함)

 

 

이 센서들은 각속도와 가속도를 출력해주는 센서이다. 하지만 이 센서들을 가지고 드론이나 휴대폰에 사용한다면 각속도와 가속도를 그대로 사용하지 않는다. Roll, Pitch, Yaw의 물체의 자세정보를 얻어야 한다. 각속도와 가속도를 이용하여 물체의 자세정보(Roll, Pitch)를 추정하는 시스템을 ARS(Attitude Reference System)이라고 한다.  여기에 지자계(Compass)  센서를 추가하여 물체의 자세정보(Roll, Pitch, Yaw)를 획득하는 시스템을 AHRS(Attitude Heading Reference System)이라고 한다.

 

 

시중에는 AHRS 센서로 판매되는 제품들이 많이 이는데 이 센서는 각속도, 가속도를 출력해주는 것이 아니라 Roll, Pitch, Yaw값을 계산하여 출력해준다.

 

물론 이러한 센서를 구입하여 사용하면 편리하고 좋지만 AHRS가 어떻게 구현되었는지 원리를 이해하기 위해  IMU가 뽑아주는 정보를 이용하여 AHRS를 구현해보고자 한다.

 

 

 

 

AHRS 구현

 

앞서 살펴보았듯이 자이로 센서를 이용하여 Roll, Pitch, Yaw를 구할 수 있으나 시간이 지남에 따라 Drift되는 현상이 발생하기 때문에 자이로 센서만으로 자세을 추정할 수 없다.  반면, 가속도 센서는 비교적 정확한 자세 정보를 얻을 수 있으나 노이즈에 취약하기 때문에 오차가 많이 발생한다.  따라서 안정적이고 정확한 자세 정보를 획득하기 위해서는 두 센서의 정보를 융합한 데이터 처리 방법이 필요하다. 

 

 

 

MPU6050 센서의 데이터 처리법은 주로 아래와 같은 방법을 사용한다.

 

 - 상보필터(Complementary Filer)

 - 칼만필터(Kalman Filter)

 - Madgwick Algorithm

 

 

 

오늘은  상보필터에 대해 알아보고 MPU6050에 상보필터를 적용하여 자세를 추정해보도록 한다. 

 

 

 

 

1. 상보필터(Complementary Filter)

 

물체의 자세정보를 획득하는데 있어서 자이로 센서는 훌륭하지만 앞에서 보았듯이 각도변화가 없는 상황에서 Drift 현상이 생긴다. 즉, 저주파 특성이 나쁘다는 이야기다. 반면, 가속도 센서는 Drift 현상은 없으나 진동이나 고주파 노이즈에 굉장히 취약하므로 고주파 특성이 나쁘다. 따라서 두 센서의 장단점을 보완해주기 위한 상보필터를 사용한다.

 

상보필터 구현하는 방법에는 여러가지가 있으나 IMU에 사용하기에 적합한 자료를 인터넷에서 찾아 참고하여 구현해 볼 것이다.

 

링크는 아래이다.

 

http://www.bluecomtech.com/Web%20Sites/Tistory%20PinkWink/pinkwink.kr/338.html

 

PinkWink's Blog :: 자이로센서와 가속도센서를 이용한 각도추정 1차필터

사실.. 자이로센서와 가속도센서의 병합(fusion)에 대한 이야기는 더이상 할 필요가 없을 줄 알았습니다. 그런데, 제 블로그에 자주 오시는 "재오리"님께서 알려주신 링크를 따라 가보니 재미난 이야기가 있더군요.[방문해보기] 언제 한번 포스팅을 해야겠다고 생각했지만, 차일피일 미루다 이제 하게 되네요^^ 먼저, 하도 오래전 이야기라 역사를 좀 이야기를 해야겠네요^^. 각도를 측정하는 센서중 가장 정확하다 싶은 것은 아마 다들 엔코더라고 생각하실것 같습

www.bluecomtech.com

 

 

 

아래는 상보필터의 블럭도이다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- Accelerometer는 고주파 노이즈에 취약하고, Gyro는 저주파 영역에서 drift 현상이 발생하므로 두 센서의 장단점을 서로 보완하는 것

- n번째 Gyro 값은 n-1 번째 값과 더하여 순간 각도로 구한다. 

- Gyro값에 a값의 가중치를 주고, Accelerometer에는 (1-a) 만큼의 가중치를 줘서 현재를 각도를 계산한다.

- 단, a=tau/(tau+ts)로 구하는데 tau는 노이즈 시간 스케이보다 월등히 큰 값, ts는 샘플링 시간이다.

- 각도 변화가 빠를때는 a값이 커져 Gyro값의 가중치가 높으나 속도가 느려지기 시작하면 a값이 작아지고 상대적으로 Accelerometer의 가중치가 올라간다.

 

 

 

 

 

728x90

댓글