Main Content

Simulink를 사용한 IMU 센서 융합

이 예제에서는 Simulink®를 사용하여 IMU 센서 데이터를 생성하고 융합하는 방법을 보여줍니다. 가속도계, 자이로스코프, 자력계의 동작을 정확하게 모델링하고 그 출력값을 융합하여 방향을 계산할 수 있습니다.

관성 측정 장치

IMU(관성 측정 장치)는 가속도를 측정하는 가속도계와 각속도를 측정하는 자이로스코프로 구성된 센서 그룹입니다. 지구의 자기장을 측정하는 자력계도 자주 포함됩니다. 이 3개의 센서는 각각 3축 측정값을 생성하고, 이 3개의 측정값은 9축 측정값을 구성합니다.

자세방위기준장치

AHRS(자세방위기준장치)는 9축 센서 판독값을 가져와 장치의 방향을 계산합니다. 이 방향은 NED 프레임을 기준으로 주어지며, 여기서 N은 자북(Magnetic North) 방향입니다. Simulink의 AHRS 블록은 간접 칼만 필터 구조를 사용하여 이를 수행합니다.

Simulink 시스템

IMU 센서 데이터를 융합하는 Simulink 모델을 엽니다.

open_system('IMUFusionSimulinkModel');

입력값과 구성

IMU 블록에 대한 입력값은 장치의 선형 가속도, 각속도, 그리고 내비게이션 프레임을 기준으로 한 방향입니다. 방향의 형식은 내비게이션 프레임의 수치를 바디 프레임으로 회전 변환하는 쿼터니언(Simulink의 4×1 벡터) 또는 회전 행렬(Simulink의 3×3 행렬)입니다. 이 모델에서는 각속도를 간단히 적분하여 방향 입력값을 생성합니다. 각속도의 단위는 rad/s이고 선형 가속도의 단위는 m/s^2입니다. AHRS에는 평행 이동과 관련된 입력값(가속도계 입력값)이 하나만 있기 때문에 중력과 선형 가속도를 구분할 수 없습니다. 따라서 AHRS 알고리즘은 선형 가속도가 천천히 변화하는 백색 잡음 과정이라고 가정합니다. 이것은 9축 융합 알고리즘에 대한 일반적인 가정입니다.

진북과 자북의 비교

IMU 블록 대화 상자의 자기장 파라미터를 로컬 자기장 값으로 설정할 수 있습니다. 자기장 값은 NOAA 웹사이트에서 찾거나 Aerospace Toolbox™의 wrldmagm 함수를 사용하여 구할 수 있습니다. IMU 블록 대화 상자의 자기장 값은 진북을 향하는 완벽한 자력계의 판독값에 대응합니다. 따라서 IMU 블록에 대한 방향 입력값은 NED 프레임을 기준으로 하며, 여기서 N은 진북 방향입니다. 그러나 AHRS 필터는 이 유형의 필터의 일반적인 방식인 자북을 향해 탐색합니다. 따라서 IMU에 대한 방향 입력값과 AHRS 출력의 추정 방향은 진북과 자북 사이의 편각만큼 차이가 납니다.

다음 시뮬레이션은 $0^\circ$ 위도 및 $0^\circ$ 경도에 대해 설정되어 있습니다. 이 위치에서의 자기장은 IMU 블록에서 [27.5550, -2.4169, -16.0849] 마이크로테슬라로 설정됩니다. 이 위치에서의 편각은 약 $4.7^\circ$입니다.

시뮬레이션

모델을 시뮬레이션합니다. IMU 입력 방향과 AHRS의 추정 출력 방향은 쿼터니언 거리를 사용하여 비교됩니다. 오일러 각의 특이점을 고려하면 이 방법이 등가의 오일러 각의 차이를 구하는 것보다 더 좋습니다.

sim('IMUFusionSimulinkModel');

추정 방향

추정 방향과 실제 방향의 차이는 이 위도와 경도에서의 편각에 해당하는 $4.7\circ$에 가까워야 합니다.

자이로스코프 편향

AHRS 필터의 두 번째 출력값은 편향 수정된 자이로스코프 판독값입니다. IMU 블록에서 자이로스코프에 편향 0.0545 rad/s 또는 3.125 deg/s가 주어졌으며, 이는 Gyroscope Bias 스코프 블록의 정상 상태 값과 일치해야 합니다.

추가 실습

IMU의 파라미터를 변경하면 AHRS의 출력값에서 그에 대응하는 방향 변화를 볼 수 있습니다. IMU 블록의 파라미터가 실제 IMU 데이터시트와 일치하도록 설정하고 AHRS 파라미터를 요구 사항에 맞게 조정할 수 있습니다.