정밀한 위치를 위한 IMU: 2부 정밀도 향상을 위한 IMU 소프트웨어 사용 방법
DigiKey 북미 편집자 제공
2019-01-24
여러 내장형 시스템에서 자체적인 위치나 위치와 방향을 추적해야 하며 설계자는 이를 위한 우선 해결책으로 글로벌 항법 위성 시스템(GNSS)을 선택하는 경우가 많습니다(“GNSS 모듈을 사용한 신속한 위치 추적 시스템 설계” 참조). 하지만 GPS는 전력 소비를 비롯한 몇 가지 이유로 인해 위치 및 방향 정보용으로만 항상 사용할 수는 없습니다.
GPS 시스템은 상당한 전력을 소모합니다. 특히 배터리로 구동되는 수많은 내장형 시스템은 작동 시간 전체에 걸쳐 GPS 위치를 유지하는 데 필요한 전력을 감당할 수 없습니다. 또한 GPS는 신호 차단, 느린 업데이트 속도뿐 아니라 일부 응용 분야에서는 충분하지 않을 수 있는 1m 수준의 정확도 범위로 인해 문제가 발생합니다.
이러한 문제는 GNSS 위치 데이터를 보완하는 관성 측정 장치(IMU)를 이용하여 해결할 수 있습니다.
이전의 IMU 관련 기사에서는 위치 및 방향을 결정하기 위해 MEM 기술을 바탕으로 한 비교적 저렴한 IMU를 사용하는 것에 관해 논의했습니다. “GPS로 충분하지 않을 경우 정밀한 위치를 위한 IMU 사용”을 참조하십시오. 하지만 IMU 센서 데이터만으로는 절대 위치를 얻을 수 없습니다. GNSS 수신기는 위치 데이터만 제공하며, 센서 필터링, 융합 및 이중 통합을 이용하여 IMU의 상대 동작 데이터를 절대 위치 및 방향으로 변환하는 데에는 많은 소프트웨어가 필요합니다.
이 기사에서는 내장형 IMU의 사용, 다양한 IMU 센서 데이터의 오차 원인, IMU 센서에서 정밀한 위치 및 방향 정보를 계산하는 데 필요한 소프트웨어에 대해 설명합니다. 또한 STMicroelectronics MotionFX 라이브러리와 이 소프트웨어를 사용하여 내장형 시스템 내에서 IMU 센서 데이터를 위치 및 방향으로 변환하는 방법에 대해 설명합니다.
IMU가 GNSS 수신기를 보완하는 방법
GNSS에는 다음과 같은 4중의 문제점이 있습니다.
- GNSS 신호는 방향성이 강하므로 건물에 의해 차단되기가 쉽습니다. 따라서 실내나 도심의 콘크리트 건물 속에서의 GNSS 작업이 순조롭게 진행되지 않을 수 있습니다.
- GNSS 수신기에는 수십 초 남짓으로 측정되는 웜 재시동 및 콜드 재시동 시간이 있습니다. 예를 들어 에너지 절약 등의 이유로 GNSS 수신기가 지속적으로 작동하지 않을 경우 새로운 위치를 판독하는 데 수 초가 걸릴 수 있습니다.
- GNSS의 위치 업데이트 주기는 초당 한 번으로 제한됩니다. 이 업데이트 주기는 빠른 움직임이 수반되는 내장형 응용 분야의 경우 충분하지 않습니다. 가상 현실부터 자재 관리 및 로봇 공학까지, 이에 해당하는 응용 분야는 매우 다양합니다.
- GNSS 정확도는 미터 단위로 측정됩니다. 이러한 해상도는 대다수의 내장형 응용 분야에 사용하기에 너무 부족합니다.
IMU는 수많은 내장형 응용 분야에 필요한 더 미세한 위치 해상도와 더욱 빠른 업데이트 속도를 제공합니다. 또한 IMU는 GNSS 수신기의 절대 위치 정보가 아니라, 알려진 시작점으로부터의 상대 위치 데이터를 제공하므로 두 유형의 위치 센서가 서로를 보완합니다. 이러한 IMU의 특성으로 인해 GNSS 수신기에서 직접 획득한 위치 정보를 증대하는 데 상당히 유용합니다. “GNSS 모듈을 사용한 신속한 위치 추적 시스템 설계”를 참조하십시오.
IMU는 수십 년 동안 항공 우주 산업에서 이용되었습니다. 하지만 이러한 정밀 항공 우주 IMU는 값비싼 자이로스코프와 기타 대형 센서를 기반으로 하기 때문에 비용에 민감한 시스템에는 적용하기 어렵습니다.
첨단 전자 IMU는 고집적이며 가속도계, 자이로스코프, 자력계 등 다양한 센서 유형이 혼합되어 있고 미세 전자 기계(MEMS) 시스템을 바탕으로 하므로 비교적 견고한 소형 경량 제품이라고 할 수 있습니다. 이러한 새로운 세대의 IMU는 기판 실장 부품으로 제공되며 내장형 응용 제품에 이상적인 것으로 입증되고 있습니다.
IMU는 자유도(DOF) 측면에서 다양한 기능을 가지고 있으며 GNSS 수신기와 달리 IMU는 무선 신호에 의존하여 위치 데이터를 확보하지 않습니다. 또한 전력 소모량이 매우 작으며 다양한 해상도 및 정확도 사양의 다양한 소스에서 사용 가능합니다.
이러한 특성을 지닌 IMU는 GNSS 수신기 모듈의 위치 정보를 늘리는 데 사용할 수 있지만(“GNSS 모듈을 사용한 신속한 위치 추적 시스템 설계” 참조) IMU 센서 데이터를 필터링하고 IMU 내부의 여러 유형의 센서에서 취합된 센서 데이터를 융합하고 이중 통합을 이용해 이 융합된 센서 데이터에서 위치 정보를 산출하는 데에는 상당한 수의 소프트웨어가 필요합니다.
IMU 오차 원인
센서를 결합하여 정확도를 개선하는 것은 항공 우주 산업의 일반적인 관행이며 가속도계와 자이로스코프가 관성 항법 시스템에 광범위하게 활용되고 있습니다. 이러한 시스템에서 자이로스코프는 각속도 변화를 통해 방향을 감지하지만 변화만 감지하며 고정된 레퍼런스 프레임이 없으므로 시간이 경과함에 따라 서서히 방향성을 잃는 경향이 있습니다. 자이로스코프 데이터가 가속도계 데이터를 추가하면 자이로스코프의 편향이 최소화되어 더욱 정확한 위치 예측치를 도출할 수 있습니다. 가속도계는 중력에 대한 방향 변화를 감지하며 해당 데이터는 자이로스코프의 방향 조정에 사용될 수 있습니다.
가속도계는 정적(동적의 반대) 계산에 더 정확합니다. 자이로스코프는 시스템이 이미 실행 중인 경우의 방향 감지에 더 효율적입니다. 가속도계는 빠르게 반응하므로 데이터를 단독으로 사용할 경우 가속도계 지터와 잡음으로 인해 오차가 누적됩니다. 또한 가속도계는 시스템에 잡음으로 축적되는 중력과 같은 외부적 힘으로 인해 가속을 왜곡하는 경향이 있습니다.
자이로스코프의 단기적 정확도와 가속도계의 장기적 정확도를 결합하면 다른 센서의 약점을 배제하거나 최소한 줄이기라도 할 수 있는 각 센서의 특성을 이용하여 더욱 정밀한 방향 판독값을 도출할 수 있습니다. 두 센서 유형은 서로를 보완합니다.
오차 감소에 필요한 융합 필터링
IMU 소프트웨어는 필터링을 사용하여 IMU 데이터의 위치 오차를 최소화합니다. 센서 데이터 융합을 위해 몇 가지 필터링 방법을 사용할 수 있으며 각 방법에는 다양한 복잡성이 수반됩니다. 보완 필터는 여러 센서의 데이터를 결합하는 간단한 방법입니다. 보완 필터링은 고역 통과 자이로스코프 필터와 저역 통과 가속도계 필터를 결합하는 선형 기능입니다. 따라서 가속도계 데이터의 고주파 잡음은 단기적으로 필터링되어 배제되며 자이로스코프 데이터에 의해 평탄화됩니다.
보완 필터는 연산적으로 단순하지만, 더 향상된 정확도를 달성하기 위해 요즘은 Kalman 필터와 같은 더욱 복잡한 기술이 IMU 사용에 선호되고 있습니다. Kalman 필터는 비교적 크지 않은 전력 처리를 통해 더욱 정확한 위치 시스템을 만들어 내므로 매우 인기 있는 반복적 센서 융합 알고리즘입니다. 표준 Kalman 필터, 확장 Kalman 필터(EKF) 및 분산점 Kalman 필터(UKF)를 포함한 다양한 유형의 Kalman 필터가 있습니다.
Kalman 필터는 필터링되는 데이터가 가우스 분포의 형태를 띤다는 가정을 바탕으로 몇 가지 수학 방정식을 이용해 값을 예측하며 이 필터는 가우스 분포에 선형 방정식을 적용합니다. 하지만 실제 움직임은 Kalman 필터의 가정만큼 깔끔하지 않습니다. 실제 움직임은 비선형적인 사인 및 코사인 함수가 포함된 방정식을 따르는 경우가 많으므로 EKF는 테일러 급수와 가우스 분포의 단일점 근사치를 사용하여 비선형 함수를 선형화합니다. 이러한 근사치는 오차의 중대한 원인이 될 수 있습니다.
UKF는 EKF가 사용하는 단일 근사치보다 데이터의 예상 가우스 분포를 나타내는, 신중하게 선택한 일련의 샘플 지점을 생성하는 결정론적 샘플링 접근 방식을 이용하여 이 오차 문제를 해결합니다. 이러한 샘플 지점은 예상 가우스 값의 진평균과 공분산을 포착하며 더욱 정확한 필터링이 가능하게 합니다.
자력계 오차 원인
일반적인 IMU에는 각도 등급/속도를 측정하는 자이로스코프, 선형 가속을 측정하는 가속도계, 자기장 강도를 측정하는 자력계 등 세 가지 센서가 포함되어 있습니다. 더 구체적으로, IMU의 자력계는 지구의 자기장 강도를 측정해 지구의 자북을 기준으로 방향을 판단합니다. 탐색 응용 분야를 위해 설계된 IMU에는 세 개의 직교 동작 축을 포괄할 수 있도록 일반적으로 각 유형의 센서가 세 개씩 포함되어 있습니다.
하지만 자력계는 강철 및 연철 왜곡에 영향을 받기 쉽습니다. 외부적 자기 영향으로 인해 발생하는 지구의 자기장 왜곡은 일반적으로 강철 또는 연철 효과로 분류됩니다. 왜곡 효과가 없다면 자력계를 360° 회전시키고 결과 데이터를 플로팅하면 (0, 0)을 중심으로 하는 원을 형성할 것입니다(그림 1).

그림 1: 근처의 철이 발생시키는 국소장 왜곡이 없는 경우 자력계를 360° 회전시키고 그 결과값을 플로팅하면 위치 (0, 0)을 중심으로 하는 원을 형성하는 데이터가 도출될 수 있습니다. (이미지 출처: sensorsmag.com)
강철 및/또는 연철 효과의 존재가 원을 왜곡시킬 수 있습니다. 강철 효과는 위치 (0, 0)으로부터의 단순 오프셋을 발생시킵니다(그림 2).

그림 2: 강철 왜곡 효과가 위치 (0, 0)의 자기 데이터를 오프셋합니다. (이미지 출처: sensorsmag.com)
연철 효과는 원을 변형해 타원을 형성합니다(그림 3).

그림 3: 연철 왜곡 효과가 360° 자기 데이터를 왜곡해 원에서 타원으로 변형합니다. (이미지 출처: sensorsmag.com)
강철 및 연철 효과가 동시에 나타날 수 있다는 점에 유의하십시오.
연철 왜곡을 보정하는 계산이 강철 왜곡을 보정하는 데 필요한 계산보다 더 컴퓨팅 집약적이므로 연철 자재를 IMU의 자력계로부터 멀리 떨어진 곳으로 이동시키는 것이 더 효율적이고 비용 대비 효과적일 수 있습니다. 하지만 대부분의 경우 이러한 이동이 불가능하며 보정 계산이 필요할 수 있습니다.
통합 후 다시 통합
마지막으로 가속도계와 자이로스코프는 물체에 가해지는 가속력(선형 및 회전)에 대한 정보만을 제공하므로, 해당 데이터가 위치 데이터를 생성할 수 있으려면 두 번 통합되어야 합니다. 가속은 물체 속도의 변화율이고 속도는 물체 위치의 변화율이기 때문입니다. 다시 말해, IMU 자이로스코프 및 가속도계 데이터는 물체의 절대 위치에 대한 이중 도함수를 제공합니다.
이중 통합 하나에도 상당한 처리 성능이 필요하지만 3D 위치 지정을 위해서는 중력 가속 효과도 무효화되어야 합니다. 중력은 가속도계에 일정한 가속도같이 보이므로 데이터에 오프셋이 발생합니다. 일반적으로 중력의 가속 효과는 IMU와 IMU가 포함된 물체가 유휴 상태인 동안 시스템에서 보정되어야 합니다.
샘플링 오차로 인해 이 이중 통합에 의해 오차가 발생할 수 있다는 점에 유의하십시오. 샘플링 속도가 느려질수록 오차가 커집니다.
IMU 소프트웨어의 설계 고려 사항
실제 IMU 소프트웨어를 위해 이러한 유형의 알고리즘을 구현할 경우 다음 단계와 권장 사항을 고려하십시오.
- IMU 센서 신호에는 잡음이 섞여 있으므로 디지털 필터링이 필요합니다. 일반적으로 IMU 응용 분야에는 일종의 Kalman 필터링이 사용됩니다.
- 필터링을 거치더라도 IMU와 연결된 기계적 잡음과 위에서 설명한 강철 및 연철 왜곡 등의 추가적인 오차 원인이 존재합니다. 이 잡음은 필터링되거나 데이터에서 제거되어야 합니다.
- 가능한 한 정확한 값을 도출하기 위해서는 응용 제품 시작 시 IMU가 유휴 상태인 동안 수행되는 보정 루틴이 필요하며 소프트웨어는 물체가 움직이지 않을 때 센서 판독값이 무엇인지 알아야 합니다. 움직이는 물체의 실제 가속값은 가속 센서의 현재 샘플에서 보정값을 뺀 값입니다.
- 보정 후에 센서 값은 양수일 수도 있고 음수일 수도 있습니다. 따라서 이러한 값을 유지하기 위한 변수에는 부호가 있어야 합니다.
- 센서 데이터에 대한 샘플링 주파수가 빠를수록 더 정확한 결과가 생성되지만 샘플이 많아질수록 더 많은 메모리가 필요하므로 타이밍 요구 사항은 물론, 다른 하드웨어 고려 사항도 엄격해질 수 있습니다.
- 샘플링 기간은 항상 정확하게 동일해야 합니다. 샘플 기간이 동일하지 않을 경우 데이터 오류가 발생합니다.
- 샘플 사이의 선형 데이터 근사치(보간법)는 더 정확한 결과를 도출하지만 또한 더 많은 처리 시간을 요구합니다.
위의 설명에서 IMU 데이터에서 방향, 위치, 동작을 판단하는 데 필요한 계산은 단순하지 않다는 점이 분명히 드러납니다. 이러한 이유로 인해 IMU 벤더는 종종 자사 제품을 위해 이러한 계산을 수행하는 소프트웨어 응용 프로그램 패키지를 제공합니다. 예를 들어, STMicroelectronics에서는 MotionFX 라이브러리를 개발했으며 이는 IMU 함수를 포함하는 자사의 다운로드 가능한 X-CUBE-MEMS1 소프트웨어 기능을 확장합니다.
이 라이브러리의 소프트웨어는 가속도계, 자이로스코프, 자력계에서 데이터를 확보하여 IMU를 포함한 STMicroelectronics의 MEMS 센서에 대한 실시간 동작 센서 데이터 융합을 제공합니다. MotionFX 필터링 및 예측 소프트웨어는 고급 알고리즘을 사용해 환경 조건과 상관없이 여러 MEMS 센서의 결과를 지능적으로 통합합니다. 이 라이브러리는 STMicroelectronics의 MEMS IMU 전용으로 고안되었으므로 다른 벤더의 IMU를 사용할 경우 소프트웨어의 기능과 성능은 보장되지 않습니다.
MotionFX 라이브러리는 Arm® Cortex®-M0+, Cortex-M3, Cortex-M4 프로세서 코어를 토대로 한 다양한 STMicroelectronics 마이크로 컨트롤러에서 실행됩니다. 다음에 실장될 경우 STMicroelectronics X-NUCLEO-IKS01A2 확장 기판에 대한 샘플 구현이 제공됩니다(그림 4).
- Arm Cortex-M4 프로세서 코어를 통합하는 STM32F4 MCU 기반의 NUCLEO-F401RE 개발 기판
- Arm Cortex-M4 프로세서 코어를 통합하는 STM32L4 MCU 기반의 NUCLEO-L476RG 개발 기판
- Arm Cortex-M3 프로세서 코어를 통합하는 STM32L1 MCU 기반의 NUCLEO-L152RE 개발 기판
- Arm Cortex-M0+ 프로세서 코어를 통합하는 STM32L0 MCU 기반의 NUCLEO-L073RZ 개발 기판
STMicroelectronics의 MotionFX 라이브러리는 IMU의 가속도계, 자이로스코프, 자력계에서 수집된 데이터를 관리 및 융합합니다. 라이브러리는 다음에 대한 루틴을 제공합니다.
- 실시간, 9축, 동작 센서 데이터 융합(가속도계, 자이로스코프, 자력계)
- 실시간, 6축, 동작 센서 데이터 융합(가속도계, 자이로스코프)
- 회전, 4원법, 중력, 선형 가속 데이터 계산
- 자이로스코프 편향 보정
- 자력계 강철 보정
STMicroelectronics에서는 MotionFX 소프트웨어를 사용할 때 100Hz 센서 데이터 샘플링 주파수를 권장합니다.

그림 4: STMicroelectronics의 X-NUCLEO-IKS01A2 확장 기판은 이 회사의 IMU용 MotionFX 소프트웨어에서 지원됩니다. (이미지 출처: STMicroelectronics)
MotionFX 라이브러리는 공간의 3D 방향 예측을 위한 센서 융합 알고리즘을 구현합니다. 이는 IMU의 개별 센서의 한계를 보정하기 위해 여러 센서의 데이터를 필터링하고 융합합니다.
목록 1은 STMicroelectronics IMU를 설정 및 실행하는 데 필요한 사항을 보여주는 데모 코드를 제공합니다.
복사
[…]
#define VERSION_STR_LENG 35
#define MFX_DELTATIME 10
[…]
/*** Initialization ***/
char lib_version[VERSION_STR_LENG];
char acc_orientation[3];
MFX_knobs_t iKnobs;
/* Sensor Fusion API initialization function */
MotionFX_initialize();
/* Optional: Get version */
MotionFX_GetLibVersion(lib_version);
MotionFX_getKnobs(&iKnobs);
/* Modify knobs settings */
MotionFX_setKnobs(&iKnobs);
/* Enable 9-axis sensor fusion */
MotionFX_enable_9X(MFX_ENGINE_ENABLE);
[…]
/*** Using Sensor Fusion algorithm ***/
Timer_OR_DataRate_Interrupt_Handler()
{
MFX_input_t data_in;
MFX_output_t data_out;
/* Get acceleration X/Y/Z in g */
MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]);
/* Get angular rate X/Y/Z in dps */
MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]);
/* Get magnetic field X/Y/Z in uT/50 */
MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]);
/* Run Sensor Fusion algorithm */
MotionFX_propagate(&data_out, &data_in, MFX_DELTATIME);
MotionFX_update(&data_out, &data_in, MFX_DELTATIME, NULL);
}
목록 1: 데모 코드는 이 회사의 X-NUCLEO-IKS01A2 확장 기판에서 정보를 추출하기 위한 MotionFX 라이브러리 사용을 보여줍니다. (코드 출처: STMicroelectronics)
데모 소프트웨어의 순서도도 볼 수 있습니다(그림 5).

그림 5: 이 순서도는 목록 1의 MotionFX 데모 코드가 STMicroelectronics X-NUCLEO-IKS01A2 확장 기판에서 데이터를 추출해 이를 3D 공간 방향으로 융합하는 데 사용되는 단계 순서를 보여줍니다. (이미지 출처: STMicroelectronics)
자이로스코프 데이터가 표류하여 3D 공간 방향 예측치의 정확도를 감소시킬 수 있음에 유의하십시오. MotionFX 소프트웨어는 절대 방향 정보를 제공하는 자력계 데이터를 사용하여 이러한 감소를 보정할 수 있습니다. 동시에 자력계는 고속에서 방향 데이터를 생성하지 못하며 자기 방해로 어려움을 겪게 되지만 자이로스코프 데이터가 이러한 자력계의 약점을 보정할 수 있습니다.
MotionFX 소프트웨어의 9축 센서 융합 계산은 가속도계, 자이로스코프, 자력계의 데이터를 사용하여 3D 공간에서의 절대 방향(방위 포함)을 제공합니다(자북 기준).
MotionFX 소프트웨어의 6축 센서 융합 계산은 가속도계 및 자이로스코프 데이터만 사용합니다. 이 연산 수준은 컴퓨팅 요구 사항이 낮고 절대 방향에 관한 정보를 제공하지 않지만 9축 루틴보다 더 빠르게 실행됩니다. 6축 센서 융합은 게임 또는 정적 로봇 등의 빠른 움직임을 측정하는 데 적합하며 절대 방향이 필요하지 않을 경우에도 사용할 수 있습니다.
결론
IMU는 내장형 응용 제품이 자체적으로 위치 및 방향 정보를 제공하는 데 상당히 유용합니다. 또한 더 높은 정밀도나 빠른 업데이트 속도가 필요한 경우에도 GNSS 수신기 정보를 늘리는 데 유용하게 활용할 수 있습니다. 하지만 IMU를 내장형 시스템에 통합하는 데에는 상당한 양의 소프트웨어가 필요하며 이러한 장치를 실제로 활용하는 데 도움이 되도록 IMU 제조업체에서 소프트웨어를 공급하는 경우가 많습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


