IMU: deje su sistema en reposo con el aprendizaje automático integrado
Colaboración de Editores de DigiKey de América del Norte
2019-04-18
Las unidades de medición inercial (IMU) se usan ampliamente para proporcionar un flujo constante de información de posición multieje de acelerómetros, giroscopios y otros sensores. Con los muchos grados de libertad (DOF) que generan datos, los flujos de datos combinados de estos dispositivos pueden mantener a los procesadores del sistema en modo de activación constante e imponerles una carga a medida que filtran los datos en bruto de la IMU para extraer información útil sobre la ubicación del sistema y los gestos. Lo que los diseñadores necesitan es una forma de descargar esta función de filtrado del procesador principal. El aprendizaje automático puede ser la respuesta.
Después de una breve descripción general del uso de la IMU, este artículo presenta el 6DOF LSM6DSO de STMicroelectronics. Luego utiliza este dispositivo para mostrar cómo la adición e integración del aprendizaje automático y el procesamiento del árbol de decisiones en las IMU pueden descargar el procesamiento de movimiento y posición en tiempo real del procesador de la aplicación del servidor y cómo estas características se pueden usar en aplicaciones reales.
Una revisión rápida de la IMU
Las IMU integran varios sensores de movimiento en un dispositivo y pueden proporcionar información de posicionamiento de alta precisión. Se pueden usar para una variedad de aplicaciones que incluyen para el consumidor (teléfonos móviles), de uso médico (imágenes), industriales (robótica) y militares (seguimiento de cabezas). Reaccionan al movimiento del sensor e incorporan uno o más de los siguientes tipos de sensores de movimiento:
- Los sensores del giroscopio miden los cambios de posición angular, generalmente expresados en grados por segundo. La integración de la velocidad angular en el tiempo resulta en un ángulo de desplazamiento medido que se puede usar para rastrear cambios en la orientación. Los giroscopios rastrean el movimiento relativo independientemente de la gravedad, por lo que los errores de polarización o integración del sensor dan como resultado un error de posición llamado "deriva", que se puede compensar con el software.
- Los acelerómetros miden la aceleración lineal, incluidos los componentes de aceleración causados por el movimiento del dispositivo y la aceleración debida a la gravedad. La unidad de medida de aceleración es g, donde 1 g = la fuerza gravitacional de la Tierra = 9.8 metros/segundo2. Los acelerómetros están disponibles con uno, dos o tres ejes, que definen un sistema de coordenadas X, Y, Z.
- Los sensores magnéticos miden la intensidad del campo magnético, típicamente en unidades de microTeslas (µT) o Gauss (100 µT = 1 Gauss). El sensor magnético más común usado para la electrónica móvil es un magnetómetro de efecto Hall de tres ejes. Al calcular el ángulo del campo magnético de la Tierra detectado y al comparar ese ángulo medido con la gravedad medida por un acelerómetro, es posible medir el rumbo de un dispositivo con respecto al norte magnético con alta precisión.
El seguimiento de movimiento mediante las IMU emplea una fusión de sensores para obtener una estimación única y de alta precisión de la orientación y posición relativas del dispositivo a partir de un punto de inicio y orientación conocidos. La fusión de sensores generalmente emplea un software para combinar las distintas salidas de sensores de movimiento de la IMU mediante complejos algoritmos matemáticos desarrollados por el fabricante de la IMU o por el desarrollador de la aplicación.
Los cálculos de posición que utilizan la fusión de sensores pueden producir las siguientes mediciones:
- Gravedad: específicamente la gravedad de la Tierra, que excluye la aceleración causada por el movimiento que experimenta el dispositivo. Un acelerómetro mide el vector de gravedad cuando la IMU está estacionaria. Cuando la IMU está en movimiento, la medición de la gravedad requiere fusionar los datos de un acelerómetro y un giroscopio y restar la aceleración causada por el movimiento.
- Aceleración lineal: equivalente a la aceleración del dispositivo medida por el acelerómetro, pero con el vector de gravedad restado mediante el software. La aceleración lineal de la IMU se puede utilizar para medir el movimiento en el espacio tridimensional.
- Orientación (inclinación): el conjunto de ángulos de Euler, incluidos la deriva (azimut), el paso y el balanceo, medido en unidades de grados.
- Vector de rotación: derivado de una combinación de datos de sensores de acelerómetro, giroscopio y magnetómetro. El vector de rotación representa un ángulo de rotación alrededor de un eje específico.
Fuentes de error de IMU
Los giroscopios detectan la orientación a través de los cambios de velocidad angular, pero tienden a desviarse con el tiempo porque solo perciben los cambios y no tienen un marco de referencia fijo. La incorporación de datos del acelerómetro a los datos del giroscopio permite al software minimizar la polarización del giroscopio para una estimación de la ubicación más precisa. Los acelerómetros detectan cambios en la dirección con respecto a la gravedad, y esos datos pueden usarse para orientar un giroscopio.
Los acelerómetros son más precisos para los cálculos estáticos (en lugar de dinámicos). Los giroscopios son mejores para detectar la orientación cuando el sistema ya está en movimiento. Los acelerómetros reaccionan rápidamente, por lo que la fluctuación y el ruido del acelerómetro producen un error acumulado cuando esos datos se usan solos. Además, los acelerómetros tienden a distorsionar las aceleraciones debido a fuerzas externas como las fuerzas gravitacionales, que también se acumulan en el sistema como ruido. El filtrado de estos datos mejora la precisión.
La combinación de la precisión a corto plazo de un giroscopio con la precisión a largo plazo de un acelerómetro da como resultado lecturas de orientación más precisas, ya que las fortalezas de cada sensor pueden cancelar o al menos reducir las debilidades del otro sensor. Los dos tipos de sensores se complementan entre sí para ayudar a reducir los errores, pero hay otras formas en que se reducen los errores.
Filtración fundida necesaria para reducir el error.
El software de IMU utiliza el filtrado para minimizar el error de posicionamiento de los datos de IMU. Existen varios métodos de filtrado para fusionar los datos del sensor, cada uno con diferentes grados de complejidad. Un filtro complementario combina un filtro de giroscopio de paso alto y un filtro de acelerómetro de paso bajo. El ruido de alta frecuencia en los datos del acelerómetro, por lo tanto, se filtra a corto plazo y se suaviza con los datos del giroscopio.
La potencia computacional necesaria para realizar todo este procesamiento, filtrado y fusión del sensor consume energía, lo que puede ser un problema en los sistemas alimentados por batería, especialmente cuando la información de la IMU no es necesaria como una corriente continua. Para muchas aplicaciones integradas, se pueden lograr ahorros significativos de energía si la IMU puede generar una interrupción que despierta al procesador del servidor del modo de reposo para que pueda iniciar el procesamiento o tomar alguna acción como resultado de la interrupción. Para habilitar esta capacidad, algunos proveedores de IMU están comenzando a incorporar características de procesamiento y toma de decisiones en sus IMU.
Deje que la IMU piense
El 6DOF LSM6DSO de STMicroelectronics es una de esas IMU. Incorpora tres giroscopios de sistemas microelectromecánicos (MEMS) y tres acelerómetros de MEMS, y puede detectar cambios de orientación y gestos sin supervisión ni asistencia de un procesador del servidor, todo ello mediante el procesamiento integrado. La IMU consume 0.55 miliamperios (mA) en su modo de rendimiento más alto.
En este modo, el LSM6DSO puede monitorear continuamente su propia actitud y movimiento en el espacio y puede generar una interrupción en una condición preestablecida que despierta al procesador del servidor para realizar un procesamiento adicional en el flujo del sensor. El uso de una IMU de baja potencia que siempre puede permanecer operativa es beneficioso porque permite que el procesador del servidor se ponga en reposo y lo activa solo cuando es necesario. Este es un medio probado y confiable para ahorrar energía en los sistemas que funcionan con baterías.
Además de sus sensores de giroscopio y acelerómetro, la IMU LSM6DSO contiene un bloque de filtro y acondicionamiento de señales, una máquina de estado finito (FSM) que puede ejecutar hasta dieciséis programas —todos los cuales comparten una velocidad de datos de salida común y configurable— y un núcleo de aprendizaje automático. Usados juntos, estos recursos pueden generar interrupciones de detección de eventos para las siguientes condiciones:
- Caída libre
- Activación
- Orientación 6DOF
- Detección de un solo clic y doble clic
- Reconocimiento de actividad/inactividad
- Detección estacionaria/de movimiento
El bloque de acondicionamiento de señal aplica los factores de conversión almacenados en sus registros de sensibilidad para escalar los datos en bruto del sensor. Luego convierte el flujo de datos en bruto del sensor de IMU en un formato de bytes de coma flotante de media precisión (HFP) de 16 bits que la FSM puede comprender. Los sensores MEMS de la IMU (los acelerómetros y los giroscopios) junto con los dos conversores de analógico a digital (ADC) y los cuatro bloques de filtro se muestran en la Figura 1. Los bloques de filtro se utilizan para convertir las señales analógicas del sensor MEMS en flujos de datos digitales filtrados.

Figura 1: La IMU LSM6DSO utiliza dos ADC para convertir señales analógicas de sus acelerómetros y giroscopios MEMS internos a flujos digitales. A los ADC les siguen cuatro filtros digitales para condicionar las señales para la toma de decisiones mediante la FSM interna y el núcleo de aprendizaje automático, y el procesador del servidor. (Fuente de la imagen: STMicroelectronics)
La FSM programable consiste en un bloque de configuración y dieciséis bloques de programa. El bloque de configuración de la FSM configura y controla toda la FSM. Cada uno de los dieciséis bloques de programa de la FSM consta de un bloque selector de entrada y un bloque de código (Figura 2). Ambos bloques están controlados por valores escritos en registros dentro de la IMU.

Figura 2: Cada uno de los dieciséis bloques de programa del FSM en la IMU LSM6DSO consta de un bloque selector de entrada y un bloque de código. (Fuente de la imagen: STMicroelectronics)
El bloque selector de entrada enruta los datos de entrada seleccionados desde uno de los sensores internos de la IMU o desde un sensor externo conectado al concentrador de sensores de la IMU hasta el bloque de código. El concentrador de sensores de la IMU puede alojar hasta cuatro sensores externos adicionales, como los magnetómetros, que están conectados a la IMU a través de un puerto I2C.
El bloque de código de la FSM contiene un programa para la máquina de estado. La parte fija de la sección de datos del bloque del programa consta de seis bytes que definen el número de ajustes de umbrales, histéresis, máscara y temporizador para el programa. La sección de datos variables del bloque del programa contiene los ajustes reales de umbral, histéresis, máscara y temporizador para cada programa, según lo definido por los valores almacenados en la parte fija de la sección de datos.
La parte fija de la sección de datos también define el tamaño de la parte variable del espacio de memoria del bloque de código, un vector de reinicio programable y un contador de programa. Debido a que estos son todos los valores de 8 bits, cada programa de FSM está limitado a 256 bytes.
La sección de instrucciones del bloque de programa contiene el programa de FSM real. Las instrucciones del programa incluyen códigos de operación para verificar las entradas de los sensores contra los umbrales, verificar los cruces cero y verificar los valores del temporizador para las comparaciones de tiempo de espera. Los códigos de operación especifican la condición necesaria para pasar del estado de FSM actual al siguiente. Además, hay códigos de operación de comando para seleccionar umbrales y máscaras almacenados en la sección de datos variables del programa; para configurar el selector multiplexor del concentrador de sensores de la IMU para conectarse a uno de los cuatro sensores externos posibles; y para activar una interrupción.
Cada programa de FSM puede generar una interrupción y puede modificar el contenido de un valor de registro correspondiente en función de la señal de entrada seleccionada. Estos valores de registro se utilizan para pasar datos de la IMU al procesador del servidor.
Es útil pensar en la FSM como un microprocesador menos la unidad lógica aritmética. La FSM puede hacer selecciones, realizar comparaciones y tomar decisiones sobre su próximo estado basándose en esas comparaciones. No calcula valores distintos de los resultados booleanos de las comparaciones.
La FSM no es un microprocesador. Puede hacer comparaciones y realizar cambios simples al flujo del programa en función de estas comparaciones. Debido a que es una máquina simple, está programada directamente con los códigos de operación de FSM. No hay un compilador de lenguaje de alto nivel para la FSM, pero los programas son generalmente tan simples que no se necesita ningún compilador.
Uso de la FSM
La FSM de la IMU LSM6DSO se puede programar para generar señales de interrupción activadas por patrones de movimiento predefinidos. La FSM puede ejecutar hasta dieciséis programas simultáneos e independientes para detectar movimiento. Cada programa de FSM consta de una secuencia de pasos if-then-else y utiliza los flujos de sensores de los acelerómetros y giroscopios del LSM6DSO como entradas. Si alguno de los programas de FSM detecta una coincidencia con su patrón preprogramado, la FSM puede generar una interrupción en el procesador del servidor.
Cada uno de los dieciséis programas de FSM posibles contiene tres secciones de memoria para datos fijos, datos variables e instrucciones. En la Figura 3 se muestra un solo diagrama de bloques del programa de FSM.

Figura 3: La FSM en la IMU LSM6DSO de STMicroelectronics incorpora dieciséis bloques de código, cada uno de los cuales contiene tres secciones de memoria para datos fijos, datos variables e instrucciones. (Fuente de la imagen: STMicroelectronics)
La estructura de un solo programa en un bloque de código consta de tres secciones en un bloque de memoria:
- Una sección de datos fijos, que tiene el mismo tamaño para todos los programas de FSM.
- Una sección de datos variables, que puede variar en tamaño.
- Una sección de instrucciones, que contiene condiciones y comandos.
Programar cada bloque de código FSM implica cargar las tres secciones de memoria con valores de programación que determinan el comportamiento de la FSM. STMicroelectronics proporciona una herramienta de programación de FSM dentro de su software de desarrollo de evaluación y entorno de desarrollo Unico descargable. STMicroelectronics también ha incluido varios programas de FSM de ejemplo con las herramientas de desarrollo de Unico como ayuda para aprender a programar la FSM. Estos programas de ejemplo muestran varios escenarios de interrupción basados en una IMU que incluyen lo siguiente:
- Un podómetro básico
- Sistema en caída libre
- Detección de movimiento simple
- El sistema se ha recogido
- El sistema se ha sacudido
- El sistema se ha dejado de mover (estacionario)
- Inclinación de la muñeca
Los ejemplos del programa de FSM de muestra demuestran el uso de las diversas funciones de la FSM. Cualquiera de estos programas de muestra puede instalarse en una plataforma de demostración IMU como la tarjeta de evaluación eMotion STM32 STEVAL-MKI109V3, que tiene un socket de 28 pines que acepta la tarjeta adaptadora de IMU LSM6DSO STEVAL-MKI197V1. La programación de la tarjeta STEVAL-MKI109V2 con uno de los programas de ejemplo requiere solo unos pocos clics en el entorno de desarrollo de Unico.
Sin embargo, hay algo más en la LSM6DSO de lo que parece.
El núcleo del aprendizaje automático
La IMU LSM6DSO también incorpora un motor de coincidencia de patrones más sofisticado y programable denominado núcleo de aprendizaje automático. Esto puede identificar clases de movimiento utilizando los flujos de datos de múltiples sensores de los sensores de IMU internos y cualquier sensor externo conectado. Las clases de eventos reconocibles incluyen estacionarias (sin movimiento), caminar, trotar, andar en bicicleta y conducir. La clasificación toma la forma de árboles de decisión dentro del núcleo de aprendizaje automático.
El núcleo de aprendizaje automático consta de tres bloques: el bloque de datos del sensor, el bloque de cálculo y el árbol de decisión (Figura 4). El bloque de datos del sensor del núcleo de aprendizaje automático agrega flujos de datos desde los acelerómetros y giroscopios internos de la IMU y desde cualquier sensor externo conectado a la IMU a través de la interfaz I2C. El bloque de cómputo puede filtrar los datos del sensor usando parámetros de filtrado predefinidos y calcular estadísticas en ventanas que incluyen la media, la varianza, la amplitud pico a pico, el mínimo, el máximo y el cruce cero para los datos del sensor. El árbol de decisión compara las estadísticas de datos del sensor calculadas contra los umbrales para clasificar los datos de entrada.

Figura 4: El núcleo de aprendizaje automático en la IMU LSM6DSO de STMicroelectronics consta de tres bloques: un bloque de datos de sensor que agrega flujos de datos de sensores internos y externos, un bloque de cálculo que filtra los datos del sensor y calcula estadísticas sobre los datos de ese sensor, y un árbol de decisión que clasifica eventos basados en las estadísticas computadas. (Fuente de la imagen: STMicroelectronics)
Al igual que con la FSM del LSM6DSO, se utiliza una herramienta dedicada en el entorno de desarrollo Unico para programar el núcleo de aprendizaje automático de la IMU.
La máquina de estado finito y el núcleo de aprendizaje automático también se pueden usar junto con un procesador del servidor para implementar algoritmos de seguimiento de posición más sofisticados. El paquete de software descargable X-CUBE-MEMS1 de STMicroelectronics para el sistema de desarrollo STM32Cube de la compañía incluye las siguientes rutinas de software de ejemplo:
- Reconocimiento de actividad: proporciona información sobre el tipo de actividad que realiza el usuario, lo que incluye quedarse quieto, caminar, caminar rápido, trotar, andar en bicicleta o conducir. Este algoritmo se puede usar normalmente en un teléfono móvil o en algún tipo de dispositivo portátil.
- Detección de la duración del movimiento: cuando se combina con los datos del podómetro, la detección de la duración del movimiento se puede usar para determinar la cantidad de segundos que un usuario está activo. Este algoritmo se puede usar normalmente en un dispositivo portátil para la condición física o el seguimiento de la salud.
- Detección de la intensidad de movimiento o vibración: proporciona información sobre la intensidad del movimiento del usuario y puede distinguir la intensidad del movimiento en un rango de 0 (inmóvil) a 10 (a toda velocidad). Este algoritmo puede usarse normalmente en un teléfono móvil o en algún tipo de dispositivo portátil para la condición física.
- Reconocimiento de posición de transporte: proporciona información sobre cómo el usuario lleva un dispositivo y puede distinguir entre las siguientes posiciones: en un escritorio, en una mano, cerca de la cabeza, en el bolsillo de una camisa, en el bolsillo de un pantalón, en el bolsillo de una chaqueta y sostenido en un brazo oscilante. Este algoritmo puede usarse normalmente en un teléfono móvil o en algún otro tipo de dispositivo transportado para la detección de contexto relacionada con la actividad.
Conclusión
La necesidad de mantener un procesador del servidor en funcionamiento para mantener una posición fija y detectar movimientos y gestos a partir de los datos de la IMU puede ser un objetivo difícil de lograr con los diseños integrados alimentados por batería debido al consumo de energía relativamente alto del procesador del servidor. Sin embargo, una nueva generación de IMU de baja potencia con suficiente procesamiento interno para realizar el aprendizaje automático puede resolver este problema al permitir que el procesador del servidor entre en modo de baja corriente hasta que sea necesario.
Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.



