IMU: 온보드 기계 학습에서 호스트의 부담 경감
DigiKey 북미 편집자 제공
2019-04-18
IMU(관성 측정 장치)는 가속도계, 자이로스코프 및 기타 센서에서 다중 축 위치 정보의 일정한 스트림을 제공하는 데 널리 사용됩니다. 모두 데이터를 생성하는 많은 DOF(자유도)로 인해, 이러한 장치들의 병합된 데이터 스트림은 시스템 프로세서를 항상 작동 모드로 유지하도록 하며 원시 IMU 데이터에서 정확한 제스처 및 시스템 위치 정보로 선별할 때 많은 작업량을 요구할 수 있습니다. 따라서 설계자에는 이러한 선별 기능을 메인 프로세서에서 오프로드할 방법이 필요합니다. 기계 학습이 그 해답이 될 수 있습니다.
이 기사에서는 IMU 사용을 간략하게 살펴본 다음 STMicroelectronics의 6DOF LSM6DSO를 소개합니다. 그런 다음 이 장치를 사용하여 기계 학습 및 의사 결정 트리 처리를 IMU로 추가 및 통합할 경우, 어떻게 실시간 위치 및 이동 처리가 호스트 응용 프로세서에서 오프로드되며 이러한 기능을 실제 응용 분야에서 어떻게 사용할 수 있는지 설명합니다.
IMU 개요
IMU는 여러 동작 센서를 하나의 장치로 통합하며 고정밀 위치 정보를 제공할 수 있습니다. 소비자 가전(휴대 전화) 의료(이미징), 산업(로봇 공학) 및 군사(헤드 트래킹)를 포함한 다양한 응용 분야에 이용될 수 있습니다. 센서의 동작에 반응하며 다음 동작 센서 유형 중 하나 이상이 통합됩니다.
- 자이로스코프 센서는 일반적으로 초당 도로 표현되는 각위치 변화를 측정합니다. 시간 경과에 따른 각 비율을 통합하면 이동 각도가 측정되며 이 각도를 사용하여 방향의 변화를 추적할 수 있습니다. 자이로스코프는 중력과 별개로 상대적 이동을 추적하므로, 센서 바이어스 또는 통합의 오류는 "드리프트"라고 하는 위치 오류로 이어집니다. 이 오류는 소프트웨어로 보정할 수 있습니다.
- 가속도계는 장치 움직임으로 인한 가속도 요소와 중력으로 인한 가속도를 포함한 선형 가속도를 측정합니다. 가속도 측정 단위는 g이며, 1g는 지구의 중력이며 이는 초속 9.8미터에 해당합니다2. 가속도계는 X, Y, Z 좌표계를 정의하는 하나, 둘 또는 세 개의 축으로 가집니다.
- 자기 센서는 일반적으로 microTeslas(T) 또는 Gauss(100 T = 1Gauss) 단위의 자기장 세기를 측정합니다. 모바일 전자 장치에 사용되는 가장 일반적인 자기 센서는 3축 홀 효과 자력계입니다. 감지된 지구 자기장의 각도를 계산하고 이렇게 측정된 각도를 가속도계로 측정된 중력에 비교하면, 자북을 기준으로 한 장치의 방향을 높은 정확도로 측정할 수 있습니다.
IMU를 사용한 동작 추적은 알려진 시작점 및 방향으로부터 상대적 장치 방향과 위치의 고정밀 추측값을 추출하기 위해 센서 융합을 이용합니다. 센서 융합은 일반적으로 소프트웨어를 사용하여 IMU 제조사 또는 애플리케이션 개발자가 개발한 복잡한 수학 알고리즘으로 IMU의 여러 동작 센서 출력을 결합합니다.
센서 융합을 사용한 위치 계산은 다음의 측정값을 생성할 수 있습니다.
- 중력 장치의 움직임으로 초래되는 가속도가 제외된 지구의 중력입니다. 가속도계는 IMU가 고정되었을 때 중력 벡터를 측정합니다. IMU가 움직일 때는 중력을 측정하려면 가속도계와 자이로스코프의 데이터를 융합한 다음 움직임으로 인한 가속도계를 빼야 합니다.
- 선형 가속도 가속도계로 측정된 장치의 가속도에 해당하지만 소프트웨어를 사용하여 중력 벡터를 뺀 값입니다. IMU 선형 가속도를 사용하면 3차원 공간에서의 움직임을 측정할 수 있습니다.
- 방향 (태도) 도의 단위로 측정된 요(방위각), 피치, 롤을 포함한 오일러 각도의 집합입니다.
- 회전 벡터 가속도계, 자이로스코프 및 자력계 센서로부터의 데이터를 결합하여 도출됩니다. 회전 벡터는 지정한 축을 중심으로 한 회전 각도를 나타냅니다.
IMU 오차 원인
자이로스코프는 각속도 변화를 통해 방향을 감지하지만 변화만 감지하며 고정된 레퍼런스 프레임이 없으므로 시간이 경과함에 따라 서서히 방향성을 잃는 경향이 있습니다. 자이로스코프 데이터에 가속도계 데이터를 추가하면 소프트웨어는 자이로스코프 편향을 최소화하여 더욱 정확한 위치 예측치를 도출할 수 있습니다. 가속도계는 중력에 대한 방향 변화를 감지하며 해당 데이터는 자이로스코프의 방향 조정에 사용될 수 있습니다.
가속도계는 정적(동적의 반대) 계산에 더 정확합니다. 자이로스코프는 시스템이 이미 실행 중인 경우의 방향 감지에 더 효율적입니다. 가속도계는 빠르게 반응하므로 데이터를 단독으로 사용할 경우 가속도계 지터와 잡음으로 인해 오차가 누적됩니다. 또한 가속도계는 시스템에 잡음으로 축적되는 중력과 같은 외부적 힘으로 인해 가속을 왜곡하는 경향이 있습니다. 이러한 데이터를 필터링하면 정확도가 향상됩니다.
자이로스코프의 단기적 정확도와 가속도계의 장기적 정확도를 결합하면 다른 센서의 약점을 배제하거나 최소한 줄이기라도 할 수 있는 각 센서의 특성을 이용하여 더욱 정밀한 방향 판독값을 도출할 수 있습니다. 두 센서 유형은 서로를 보완하여 오류를 줄이지만, 오류를 줄이는 다른 방법도 있습니다.
오차 감소에 필요한 융합 필터링
IMU 소프트웨어는 필터링을 사용하여 IMU 데이터의 위치 오차를 최소화합니다. 센서 데이터 융합을 위해 몇 가지 필터링 방법을 사용할 수 있으며 각 방법에는 다양한 복잡성이 수반됩니다. 보완 필터는 고역 통과 자이로스코프 필터와 저역 통과 가속도계 필터를 결합합니다. 따라서 가속도계 데이터의 고주파 잡음은 단기적으로 필터링되어 배제되며 자이로스코프 데이터에 의해 평탄화됩니다.
이러한 센서 처리, 필터링 및 융합을 모두 수행하는 데 필요한 컴퓨팅 성능은 배터리 전력 시스템, 특히 IMU 정보가 연속 스트림으로 필요하지 않은 경우에 문제가 될 수 있습니다. 많은 내장형 애플리케이션에서는 IMU가 호스트 프로세서를 절전 모드에서 깨워 처리를 시작하거나 인터럽트 결과로 어떤 동작을 수행할 수 있도록 하면 전력을 크게 절감할 수 있습니다. 이 기능을 활성화하기 위해 일부 IMU 공급업체는 처리 및 의사 결정 기능을 자사 IMU에 통합하기 시작했습니다.
IMU에 지능 추가
STMicroelectronics의 6DOF LSM6DSO가 이러한 IMU 중 하나입니다. 이 제품은 세 개의 마이크로 일렉트로닉스 시스템(MEMS) 자이로스코프와 세 개의 MEMS 가속도계가 통합되며, 호스트 프로세서의 도움이나 감독 없이 방향 변화를 감지할 수 있으며 모두 온보딩 처리됩니다. IMU는 최고 성능 모드에서 0.55mA를 소비합니다.
이 모드에서 LSM6DSO는 공간에서 자신의 방향과 움직임을 지속적으로 모니터하며, 센서 스트림에 추가 처리를 수행하도록 호스트 프로세서를 깨우는 사전 지정된 조건 발생 시 인터럽트를 생성할 수 있습니다. 항상 작동 상태를 유지할 수 있는 저전력 IMU를 사용하면 호스트 프로세서를 절전 상태로 유지하다 필요할 때만 깨울 수 있기 때문에 장점이 많습니다. 이는 배터리 전력 시스템에서 에너지를 절약할 수 있는 입증된 방법입니다.
LSM6DSO IMU에는 자이로스코프 및 가속도계 센서 외에도 신호 컨디셔닝 및 필터 블록, 16개의 프로그램(모두 공통의 구성 가능한 출력 데이터 전송률을 공유)을 실행할 수 있는 유한 상태 신호 발생기(FSM) 및 기계 학습 코어가 포함됩니다. 이러한 리소스를 함께 사용하면 다음 조건에 대한 이벤트 감지 인터럽트를 생성할 수 있습니다.
- 자유 낙하
- 절전 해제
- 6DOF 방향
- 단일 클릭 및 더블 클릭 감지
- 활성/비활성 인식
- 고정/이동 감지
신호 컨디셔닝 블록은 자체 감도 레지스터에 저장된 변환 계수를 적용하여 미가공 센서 데이터의 크기를 조정합니다. 그런 다음 미가공 IMU 센서 데이터 스트림을 FSM이 이해할 수 있는 16비트 반정밀도 부동 소수점(HFP) 바이트 형식으로 변환합니다. IMU의 MEMS 센서(가속도계 및 자이로스코프)와 두 개의 아날로그 디지털 컨버터(ADC) 및 네 개의 필터 블록을 그림 1에서 볼 수 있습니다. 필터 블록은 아날로그 MEMS 센서 신호를 필터링된 디지털 데이터 스트림으로 변환하는 데 사용됩니다.

그림 1: LSM6DSO IMU는 두 개의 ADC를 사용하여 내부 MEMS 가속도계 및 자이로스코프의 아날로그 신호를 디지털 스트림으로 변환합니다. ADC 뒤에는 네 개의 디지털 필터가 있어서 내부 FSM 및 기계 학습 코어와 호스트 프로세서의 의사 결정을 위한 신호를 조절합니다. (이미지 출처: STMicroelectronics)
프로그래밍 가능 FSM은 하나의 구성 블록과 16개의 프로그램 블록으로 구성됩니다. FSM의 구성 블록은 전체 FSM을 구성 및 제어합니다. FSM의 16개 프로그램 블록 각각은 입력 선택기 블록 및 코드 블록으로 구성됩니다(그림 2). 이 블록은 모두 IMU 내에서 레지스터에 기록된 값으로 제어됩니다.

그림 2: LSM6DSO IMU에 있는 FSM의 16개 프로그램 블록 각각은 입력 선택기 블록 및 코드 블록으로 구성됩니다. (이미지 출처: STMicroelectronics)
입력 선택기 블록은 선택된 입력 데이터를 IMU의 내부 센서 중 하나 또는 IMU의 센서 허브에 연결된 외부 센서에서 코드 블록으로 라우팅합니다. IMU의 센서 허브는 I2C 포트를 통해 IMU에 연결된 자력계와 같은 네 개의 추가적인 외부 센서를 수용할 수 있습니다.
FSM의 코드 블록에는 상태 기계를 위한 하나의 프로그램이 포함됩니다. 프로그램 블록에서 데이터 섹션의 고정 부분은 프로그램의 임계값의 수, 이력, 마스크 및 타이머 설정을 정의하는 6바이트로 구성됩니다. 프로그램 블록의 가변 데이터 섹션에는 데이터 섹션의 고정 부분에 저장된 값으로 정의된 각 프로그램의 실제 임계값, 이력, 마스크 및 타이머 설정이 저장됩니다.
또한 데이터 섹션의 고정 부분은 코드 블록의 메모리 실장 면적, 프로그래밍 가능 리셋 벡터 및 프로그램 카운터의 가변 부분 크기도 정의합니다. 이러한 값은 모두 8비트 값이므로 각 FSM 프로그램은 256바이트로 제한됩니다.
프로그램 블록의 명령어 섹션에는 실제 FSM 프로그램이 포함됩니다. 프로그램 명령어에는 임계값에 대해 센서 입력을 확인하고, 부호 변화점을 확인하고, 타임아웃 비교를 위한 타이머 값을 확인하는 연산 부호(opcode)가 포함됩니다. 연산 부호(opcode)는 현재 FSM 상태에서 다음으로 통과하기 위해 필요한 조건을 지정합니다. 또한 프로그램의 가변 데이터 섹션에 저장된 임계값 및 마스크를 선택하고, IMU의 센서 허브 다중화 선택기를 네 개의 가능한 외부 센서 중 하나로 연결하도록 설정하고, 인터럽트를 주장하기 위한 명령 연산 부호(opcode)가 있습니다.
각 FSM 프로그램은 인터럽트를 생성할 수 있으며 선택된 입력 신호에 기반하여 해당 레지스터 값의 내용을 수정할 수 있습니다. 이러한 레지스터 값은 데이터를 IMU에서 호스트 프로세서로 전달하는 데 사용됩니다.
FSM은 산술 논리 유닛을 뺀 마이크로 프로세서로 생각하면 편리합니다. FSM은 선택을 하고, 비교를 수행하고, 이 비교에 기반하여 다음 상태를 결정할 수 있습니다. 비교의 부울 결과 이외의 값은 계산하지 않습니다.
FSM은 마이크로 프로세서가 아닙니다. 비교를 하고 이 비교에 기반하여 프로그램 흐름에 간단한 변경만 수행할 수 있습니다. 단순 기계이기 때문에 FSM 연산 부호(opcode)로 직접 프로그래밍합니다. FSM용 고수준 언어 컴파일러는 없지만 일반적으로 프로그램이 단순하므로 컴파일러가 필요하지 않습니다.
FSM 사용
LSM6DSO IMU의 FSM은 사전 정의된 동작 패턴에 의해 활성화되는 인터럽트 신호를 생성하도록 프로그래밍할 수 있습니다. FSM은 16개의 독립적 프로그램을 동시에 실행하여 동작을 감지할 수 있습니다. 각 FSM 프로그램은 if-then-else 단계의 시퀀스로 구성되며 LSM6DSO의 가속도계 및 자이로스코프의 센서 스트림을 입력으로 사용합니다. FSM 프로그램이 사전 프로그래밍된 패턴에 일치하면 FSM은 호스트 프로세서로 인터럽트를 생성할 수 있습니다.
16개의 가능한 FSM 프로그램 각각에는 고정 데이터, 가변 데이터 및 명령어를 위한 세 개의 메모리 섹션으로 구성됩니다. 그림 3에서 단일 FSM 프로그램 제품 구성도를 볼 수 있습니다.

그림 3: STMicroelectronics LSM6DSO IMU의 FSM에는 16개의 코드 블록이 통합되며 각 블록에는 고정 데이터, 가변 데이터 및 명령어를 위한 세 개의 메모리 섹션이 포함됩니다. (이미지 출처: STMicroelectronics)
코드 블록에서 단일 프로그램의 구조는 메모리 블록의 다음 세 섹션으로 구성됩니다.
- 고정 데이터 섹션 - 모든 FSM 프로그램에 대해 크기가 동일
- 가변 데이터 섹션 - 크기 변경 가능
- 명령어 섹션 - 조건 및 명령 포함
각 FSM 코드 블록을 프로그래밍할 때는 FSM의 동작을 결정하는 프로그래밍 값을 가진 세 메모리 섹션을 로드합니다. STMicroelectronics는 다운로드 가능한 Unico 평가 개발 소프트웨어 및 개발 환경 내에서 FSM 프로그래밍 도구를 제공합니다. 또한 STMicroelectronics는 Unico 개발 도구에서 FSM 프로그래밍 방법을 배우는 데 도움이 되도록 몇 개의 샘플 FSM 프로그램도 제공합니다. 이러한 샘플 프로그램은 다음을 포함한 IMU 기반 인터럽트 시나리오를 보여 줍니다.
- 기본 계보기
- 자유 낙하 상태의 시스템
- 고정/이동 감지
- 시스템 들어올림
- 시스템을 흔들었음
- 시스템의 움직임 중단됨(고정 상태)
- 손목 기울이기
샘플 FSM 프로그램 예제는 다양한 FSM 기능의 사용을 보여 줍니다. 이러한 샘플 프로그램은 LSM6DSO STEVAL-MKI197V1 IMU 어댑터 보드를 사용 가능한 28핀 소켓이 있는 STEVAL-MKI109V3 eMotion STM32 평가 기판과 같은 IMU 데모 플랫폼에 설치할 수 있습니다. 예제 프로그램 중 하나로 STEVAL-MKI109V2 기판을 프로그래밍하려면 Unico 개발 환경에서 클릭 몇 번만 하면 됩니다
하지만 LSM6DSO에는 이보다 훨씬 다양한 기능이 있습니다.
기계 학습 코어
LSM6DSO IMU에는 기계 학습 코어라고 하는 훨씬 더 정교한 프로그래밍 가능 패턴 일치 엔진도 통합되어 있습니다. 이 엔진은 내부 IMU 센서 및 연결된 모든 외부 센서의 다중 센서 데이터 스트림을 사용하여 움직임의 클래스를 식별할 수 있습니다. 인식 가능한 이벤트 클래스에는 고정(움직임 없음), 걷기, 조깅, 자전거 및 운전이 포함됩니다. 분류는 기계 학습 코어 내에서 의사 결정 트리 형태로 수행됩니다.
기계 학습 코어는 센서 데이터 블록, 계산 블록 및 의사 결정 트리의 세 블록으로 구성됩니다(그림 4). 기계 학습 코어의 센서 데이터 블록은 IMU의 내부 가속도계와 자이로스코프 및 I2C 인터페이스를 통해 IMU에 연결된 모든 외부 센서의 데이터 스트림을 집계합니다. 계산 블록은 사전 정의된 필터링 파라미터를 사용하여 센서 데이터를 필터링하고, 센서 데이터에 대한 평균, 편차, 피크 대 피크 진폭, 최소값, 최대값 및 제로 크로싱을 포함한 통계를 계산할 수 있습니다. 의사 결정 트리는 계산된 센서 데이터 통계를 임계값에 비교하여 입력 데이터를 분류합니다.

그림 4: STMicroelectronics LSM6DSO IMU의 기계 학습 코어는 내부 및 외부 센서의 데이터 스트립을 집계하는 센서 데이터 블록, 센서 데이터를 필터링하고 해당 센서 데이터에 대한 통계를 계산하는 계산 블록, 계산된 통계를 기반으로 이벤트를 분류하는 의사 결정 트리의 세 블록으로 구성됩니다. (이미지 출처: STMicroelectronics)
LSM6DSO의 FSM과 마찬가지로 Unico 개발 환경의 전용 도구를 사용하여 IMU의 기계 학습 코어를 프로그래밍합니다.
유한 상태 신호 발생기 및 기계 학습 코어를 호스트 프로세서와 함께 사용하여 더 정교한 위치 추적 알고리즘을 구현할 수도 있습니다. STM32Cube 개발 시스템을 위한 다운로드 가능한 STMicroelectronics X-CUBE-MEMS1 소프트웨어 팩에는 다음의 예제 소프트웨어 루틴이 포함되어 있습니다.
- 활성화 인식 움직이지 않음, 걷기, 빠르게 걷기, 조깅, 자전거 또는 운전을 포함하여 사용자가 수행 중인 활동의 유형에 대한 정보를 제공합니다. 이 알고리즘은 일반적으로 휴대 전화 또는 특정 유형의 웨어러블 장치에 사용될 수 있습니다.
- 동작 지속 시간 감지 계보기 데이터와 동작 지속 시간 감지를 함께 사용하면 사용자가 활동한 시간(초)을 결정할 수 있습니다. 이 알고리즘은 일반적으로 피트니스 또는 건강 관리용 웨어러블 장치에 사용될 수 있습니다.
- 진동 또는 동작 강도 감지 사용자 동작의 강도에 대한 정보를 제공하며 동작의 강도를 0(정지)에서 10(전력 질주)의 범위로 구분할 수 있습니다. 이 알고리즘은 일반적으로 휴대 전화 또는 특정 유형의 웨어러블 피트니스 장치에 사용될 수 있습니다.
- 운반 위치 인식 사용자가 장치를 어떻게 운반 중인지에 대한 정보를 제공하며 책상 위, 손, 머리 근처, 셔츠 주머니, 바지 주머니, 재킷 주머니 및 흔들리는 손 등을 구분할 수 있습니다. 이 알고리즘은 일반적으로 휴대 전화 또는 활동 관련 감지를 위한 특정 유형의 휴대용 장치에 사용될 수 있습니다.
결론
IMU 데이터에서 움직임 및 제스처를 감지하고 위치 고정을 유지하기 위해 호스트 프로세서를 계속 실행하는 것은, 호스트 프로세서의 상대적으로 높은 전력 소비량 때문에 배터리 전력 내장형 설계에서는 달성이 까다로운 목표일 수 있습니다. 하지만 기계 학습을 수행할 수 있는 온보드 처리 성능을 갖춘 차세대 저전력 IMU를 사용하면 호스트 프로세서가 필요할 때까지 저전류 절전 모드에 있을 수 있으므로 이 문제의 해결이 가능합니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

