IMU para obtener una ubicación precisa: Parte 2: cómo utilizar el software de IMU para obtener una mayor precisión

Por Steve Leibson

Colaboración de Editores de Digi-Key de América del Norte

Muchos sistemas integrados deben rastrear su propia ubicación o posición y rumbo, y los diseñadores a menudo recurren al GNSS (sistema global de navegación por satélite) como primer recurso (consulte “Diseñe sistemas de seguimiento de la ubicación rápidamente utilizando módulos GNSS”). Sin embargo, el GPS (sistema de posicionamiento global) no siempre se puede utilizar exclusivamente para obtener información de posición y rumbo por varias razones, comenzando con el consumo de energía.

Los sistemas de GPS consumen grandes cantidades de energía. Muchos sistemas integrados, especialmente los que funcionan con baterías, no pueden soportar el presupuesto de energía necesario para mantener una posición de GPS el 100 por ciento del tiempo. Además, los GPS sufren bloqueos de señal, velocidades de actualización lentas y una precisión de 1 metro (m) que puede no ser suficiente para algunas aplicaciones.

Estos problemas se pueden superar mediante el uso de unidades de medición inercial (IMU) para complementar los datos de posición del GNSS.

En un artículo anterior sobre las IMU se analizó el uso de IMU relativamente baratas basadas en la tecnología de MEMS (sistemas microelectromecánicos) para determinar la posición y el rumbo; consulte “Utilice las IMU para la obtención precisa de datos de ubicación cuando el GPS no es suficiente”. Sin embargo, los datos del sensor de IMU por sí solos no pueden proporcionar una posición absoluta. Si bien los receptores del GNSS proporcionan simplemente datos de ubicación, se requiere una importante cantidad de software para convertir los datos de movimiento relativo de IMU en una posición y rumbo absolutos mediante el uso del filtrado, la fusión y la doble integración.

Este artículo describe el uso integrado de las IMU, las fuentes de error en los datos de varios sensores de IMU y el software necesario para calcular la información precisa de ubicación y rumbo de los sensores de IMU. Además, en este artículo se analiza la biblioteca de MotionFX de STMicroelectronics y cómo utilizar este software para transformar los datos del sensor de IMU en la posición y el rumbo dentro de un sistema incorporado.

Cómo las IMU complementan los receptores del GNSS

Los problemas con el GNSS son cuatro:

  1. Las señales del GNSS son muy direccionales y los edificios las bloquean fácilmente. Por lo tanto, la operación del GNSS en espacios cerrados o en la profundidad de desfiladeros de hormigón urbano puede ser problemática.
  2. Los receptores del GNSS tienen tiempos de arranque en frío y en caliente medidos en decenas de segundos o más. Si el receptor del GNSS no se opera de manera continua, para ahorrar energía, por ejemplo, entonces cada lectura de una nueva posición puede tomar múltiples segundos.
  3. La tasa de actualización de posición del GNSS está limitada a una vez por segundo. Esta tasa de actualización no es lo suficientemente frecuente para aplicaciones integradas que involucran movimientos rápidos. Hay una larga lista de ese tipo de aplicaciones que van desde la realidad virtual hasta la manipulación de materiales y la robótica.
  4. La precisión del GNSS se mide en metros. Esa resolución es lo suficientemente precisa como para utilizarla en muchas aplicaciones integradas.

Las IMU proporcionan la resolución de posicionamiento más precisa y las tasas de actualización más rápidas requeridas por muchas aplicaciones integradas. Además, las IMU proporcionan datos de posición relativa desde un punto de inicio conocido en oposición a la información de posicionamiento absoluta proporcionada por un receptor del GNSS, por lo que los dos tipos de sensores de posición se complementan entre sí. Estas características de las IMU las convierten en muy útiles para argumentar la información de posicionamiento obtenida directamente de los receptores del GNSS; consulte “Diseñe sistemas de seguimiento de la ubicación rápidamente utilizando módulos GNSS”.

Las IMU existen en la industria aeroespacial desde hace décadas. Sin embargo, estas IMU aeroespaciales de precisión se basan en costosos giroscopios y otros sensores grandes y son difíciles de aplicar a sistemas más sensibles a los costos.

Las IMU electrónicas modernas están altamente integradas y pueden contener una mezcla de tipos de sensores (acelerómetros, giroscopios y magnetómetros) que se basan en la tecnología de sistemas microelectromecánicos (MEMS), por lo que son pequeñas, ligeras y relativamente resistentes. Estas nuevas generaciones de IMU están disponibles como componentes para montaje en placa y se está demostrando que son ideales para las aplicaciones integradas.

Las IMU traen diferentes capacidades en lo que respecta a los grados de libertad (DOF) y, a diferencia de los receptores del GNSS, las IMU no dependen de las señales de radio para obtener los datos de posición. También consumen muy poca energía y están disponibles en una variedad de fuentes con una amplia gama de especificaciones de resolución y precisión.

Con estas características, las IMU pueden utilizarse para aumentar la información de posicionamiento de los módulos del receptor del GNSS (consulte “Diseñe sistemas de seguimiento de la ubicación rápidamente utilizando módulos GNSS”), pero no sin una importante cantidad de software para filtrar los datos del sensor de IMU, para fusionar los datos del sensor de diversos tipos de sensores dentro de la IMU y para calcular la posición desde esos datos del sensor fusionados utilizando doble integración.

Fuentes de error de IMU

La combinación de sensores para mejorar la precisión ha sido durante mucho tiempo una práctica común en la industria aeroespacial, donde los acelerómetros y giroscopios se utilizan ampliamente en los sistemas de navegación inercial. En estos sistemas, 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 minimizar la polarización del giroscopio, lo que resulta en 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.

La combinación de la precisión a largo plazo de un giroscopio con la precisión a corto plazo de un acelerómetro da como resultado lecturas de orientación más precisas, ya que las fortalezas de cada sensor puede cancelar o al menos reducir las debilidades del otro sensor. Los dos tipos de sensores se complementan entre sí.

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 es una forma sencilla de combinar datos de varios sensores. El filtrado complementario es una función lineal que 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.

Si bien el filtro complementario es computacionalmente simple, ahora se prefieren las técnicas más complejas, como el filtro de Kalman, para que el IMU logre una mayor precisión. El filtro de Kalman es un algoritmo de fusión de sensor recursivo muy popular porque no requiere de mucha potencia de procesamiento para crear un sistema de posicionamiento más preciso. Hay diferentes tipos de filtrado de Kalman, incluidos el filtro estándar de Kalman, el filtro extendido de Kalman (EKF) y el filtro "unscented" de Kalman (UKF).

Un filtro de Kalman predice valores utilizando diversas ecuaciones matemáticas basadas en la suposición de que los datos que se filtran toman la forma de una distribución gaussiana, a la que el filtro aplica ecuaciones lineales. Sin embargo, el movimiento en el mundo real no es tan limpio como la suposición del filtro de Kalman. El movimiento en el mundo real se adhiere a ecuaciones que a menudo involucran funciones de seno y coseno que no son lineales, por lo que el EKF emplea una serie de Taylor y aproximaciones de punto único de la distribución gaussiana para linealizar las funciones no lineales. Estas aproximaciones pueden constituir importantes fuentes de error.

El UKF resuelve este problema de error mediante el uso de un enfoque de muestreo determinista que genera un conjunto de puntos de muestra cuidadosamente seleccionados para representar la distribución gaussiana esperada de los datos en lugar de la aproximación única utilizada por el EKF. Estos puntos de muestra capturan completamente la media y la covarianza verdaderas de los valores gaussianos esperados y dan como resultado un filtrado más preciso.

Fuentes de error del magnetómetro

Una IMU típica contiene tres sensores diferentes: un giroscopio para medir la velocidad y la tasa angular, un acelerómetro para medir la aceleración lineal y un magnetómetro para medir la intensidad del campo magnético. Más específicamente, los magnetómetros de la IMU miden la intensidad del campo magnético de la tierra para determinar un rumbo relativo al norte magnético de la tierra. Una IMU diseñada para aplicaciones de navegación generalmente contendrá tres de cada tipo de sensor, para cubrir los tres ejes de movimiento ortogonales.

Sin embargo, los magnetómetros son susceptibles a las distorsiones del hierro blando y del hierro duro. Las distorsiones del campo magnético terrestre que resultan de influencias magnéticas externas generalmente se clasifican como efectos de hierro duro y blando. Si no existen efectos distorsionantes, al rotar un magnetómetro 360° y sondear los datos resultantes se obtendrán datos que forman un círculo centrado alrededor de (0, 0) (Figura 1).

Gráfico de rotación de un magnetómetro 360° y sondeo de los datos resultantes

Figura 1: Si se gira un magnetómetro 360° y se sondean los datos resultantes, los datos formarán un círculo centrado en la ubicación (0, 0), si no hay distorsiones de campo locales causadas por la cercanía de hierro. (Fuente de la imagen: sensorsmag.com)

Los efectos de la presencia de hierro duro o blando pueden distorsionar el círculo. Los efectos de hierro duro causan un desplazamiento simple de la ubicación (0, 0) (Figura 2).

Imagen de efecto de distorsión de hierro duro desplaza los datos magnéticos

Figura 2: Un efecto de distorsión de hierro duro desplaza los datos magnéticos de la ubicación (0, 0). (Fuente de la imagen: sensorsmag.com)

Los efectos de hierro blando deforman el círculo y se forma una elipse (Figura 3).

Imagen de efecto de hierro blando distorsiona los datos magnéticos de 360°

Figura 3: Un efecto de distorsión de hierro blando distorsiona los datos magnéticos de 360°, cambiando la forma de círculo a elipse. (Fuente de la imagen: sensorsmag.com)

Tenga en cuenta que los efectos de hierro duro y blando pueden aparecer simultáneamente.

Los cálculos que compensan la distorsión de hierro blando tienen requisitos de procesamiento más intensivos que los requeridos para compensar la distorsión de hierro duro, por lo que puede ser más eficiente y rentable simplemente alejar los materiales de hierro blando de los magnetómetros de la IMU. Sin embargo, en muchos casos esto no es posible y se requerirán cálculos de compensación.

Integrar, luego integrar nuevamente

Finalmente, debido a que los acelerómetros y giroscopios solo brindan información sobre las fuerzas de aceleración (lineal y rotativa) en un objeto, esos datos deben integrarse dos veces para producir la ubicación porque la aceleración es la tasa de cambio de la velocidad de un objeto y la velocidad es la tasa de cambio de posición de un objeto. En otras palabras, los datos del giroscopio y el acelerómetro de la IMU proporcionan las derivadas dobles de la ubicación absoluta de un objeto.

La doble integración por sí sola requiere un poco de procesamiento, pero para el posicionamiento 3D, los efectos de aceleración de la gravedad también deben anularse. La gravedad parece una aceleración constante de un acelerómetro, lo que resulta en un desplazamiento en sus datos. Por lo general, los efectos de aceleración de la gravedad deben calibrarse fuera del sistema mientras la IMU y el objeto que contiene la IMU están en reposo.

Tenga en cuenta que habrá errores debido a esta doble integración ocasionada por el error de muestreo. Cuanto más lenta sea la tasa de muestreo, mayor será el error.

Consideraciones de diseño para el software de IMU

Tenga en cuenta los siguientes pasos y recomendaciones al implementar este tipo de algoritmos para el software de IMU del mundo real:

  • Las señales del sensor de IMU no carecen de ruido y requerirán un filtrado digital. Normalmente, se utiliza algún tipo de filtrado de Kalman en las aplicaciones de IMU.
  • Aun con el filtrado, habrá fuentes de error adicionales, como ruidos mecánicos acoplados a la IMU, y las distorsiones de hierro duro y blando analizadas anteriormente. Este ruido debe filtrarse o eliminarse de los datos.
  • Al inicio de la aplicación se requerirá una rutina de calibración que se realice mientras la IMU está en reposo porque, para obtener la mayor precisión posible, el software necesitará saber cuáles son las lecturas del sensor cuando el objeto no está en movimiento. El valor de aceleración real para un objeto en movimiento es la muestra actual de un sensor de aceleración menos el valor de calibración.
  • Después de la calibración, los valores del sensor pueden ser positivos o negativos. Por lo tanto, las variables para mantener estos valores deben contener señales.
  • Una frecuencia de muestreo más rápida para los datos del sensor produce resultados más precisos, pero más muestras requerirán más memoria, requisitos de tiempo más estrictos y quizás otras consideraciones de hardware.
  • El período de muestreo debe ser siempre precisamente el mismo. Períodos de muestra desiguales causarán errores en los datos.
  • La aproximación de datos lineales entre muestras (interpolación) produce resultados más precisos, pero también requiere más tiempo de procesamiento.

Ante el análisis anterior, es evidente que los cálculos necesarios para determinar el rumbo, la posición y el movimiento de los datos de la IMU no son sencillos. Por esa razón, los proveedores de IMU a menudo ofrecen paquetes de aplicaciones de software para realizar estos cálculos para sus productos. Por ejemplo, STMicroelectronics ha desarrollado la biblioteca MotionFXque amplía las capacidades del software descargable X-CUBE-MEMS1 de la empresa para abarcar las funciones de la IMU.

El software de esta biblioteca adquiere datos de los acelerómetros, giroscopios y magnetómetros y proporciona una fusión de datos de sensores de movimiento en tiempo real para los sensores del MEMS de STMicroelectronics, incluidas las IMU. El software de filtrado y predicción MotionFX utiliza algoritmos avanzados para integrar de forma inteligente los resultados de múltiples sensores MEMS, independientemente de las condiciones ambientales. Esta biblioteca solo está diseñada para las IMU de MEMS de STMicroelectronics, por lo que la funcionalidad y el desempeño del software no se asegura si se utilizan IMU de otros proveedores.

La biblioteca MotionFX se ejecuta en una variedad de microcontroladores de STMicroelectronics basados en los núcleos de procesador Arm® Cortex®-M0 +, Cortex-M3 y Cortex-M4. Las implementaciones de muestra están disponibles para la placa de expansión X-NUCLEO-IKS01A2 (Figura 4) cuando se la instala en:

  • la placa de desarrollo NUCLEO-F401RE basada en una MCU STM32F4 que incorpora un núcleo procesador Arm Cortex-M4;
  • la placa de desarrollo NUCLEO-L476RG basada en un MCU STM32L4 que incorpora un núcleo procesador Arm Cortex-M4;
  • la placa de desarrollo NUCLEO-L152RE basada en un MCU STM32L1 que incorpora un núcleo procesador Arm Cortex-M3;
  • o la placa de desarrollo NUCLEO-L073RZ basada en un MCU STM32L0, que incorpora un núcleo procesador Arm Cortex-M0+.

La biblioteca MotionFX de STMicroelectronics gestiona y fusiona los datos adquiridos de los acelerómetros, giroscopios y magnetómetros de una IMU. La biblioteca proporciona rutinas para lo siguiente:

  • Fusión de datos del sensor de movimiento en tiempo real de 9 ejes (acelerómetro, giroscopio, magnetómetro)
  • Fusión de datos de sensores de movimiento en tiempo real de 6 ejes (acelerómetro, giroscopio)
  • Cálculo de datos de aceleración lineal, gravedad, cuaterniones y rotación
  • Calibración de la polarización del giroscopio
  • Calibración del hierro duro del magnetómetro

STMicroelectronics recomienda una frecuencia de muestreo de datos del sensor de 100 Hz cuando se utiliza el software MotionFX.

Imagen de la placa de expansión X-NUCLEO-IKS01A2 de STMicroelectronics

Figura 4: La placa de expansión X-NUCLEO-IKS01A2 de STMicroelectronics es compatible con el software MotionFX para IMU de la empresa. (Fuente de la imagen: STMicroelectronics)

La biblioteca MotionFX implementa un algoritmo de fusión de sensores para la estimación de la orientación 3D en el espacio. Filtra y fusiona los datos de varios sensores para compensar las limitaciones de los sensores individuales de la IMU.

El Listado 1 proporciona un código de demostración que muestra lo que se necesita para que la IMU de STMicroelectronics funcione.

Copiar […]
#define VERSION_STR_LENG 35 #define MFX_DELTATIME 10 […]
/*** Inicialización ***/ char lib_version[VERSION_STR_LENG]; char acc_orientation[3]; MFX_knobs_t iKnobs; /* Función de inicialización de API de función del sensor */ MotionFX_initialize(); /* Opcional: Obtener versión */ MotionFX_GetLibVersion(lib_version); MotionFX_getKnobs(&iKnobs); /* Modificar la configuración de las perillas */ MotionFX_setKnobs(&iKnobs); /* Habilitar la fusión del sensor de 9 ejes */ MotionFX_enable_9X(MFX_ENGINE_ENABLE); […]
/*** Uso del algoritmo de fusión del sensor ***/ Timer_OR_DataRate_Interrupt_Handler() { MFX_input_t data_in; MFX_output_t data_out; /* Obtener la aceleración de X/Y/Z en g */ MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]); /* Obtener la tasa angular X/Y/Z en dps */ MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]); /* Obtener el campo magnético X/Y/Z en uT/50 */ MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]); /* Ejecutar el algoritmo de fusión del sensor */ MotionFX_propagate(&data_out, &data_in, MFX_DELTATIME); MotionFX_update(&data_out, &data_in, MFX_DELTATIME, NULL); } 

Listado 1: El código de demostración muestra el uso de la biblioteca MotionFX para extraer información de los componentes de la IMU en la placa de expansión X-NUCLEO-IKS01A2 de la empresa. (Fuente del código: STMicroelectronics)

También se muestra un diagrama de flujo del software de demostración (Figura 5).

Imagen de diagrama de flujo que ilustra la secuencia de pasos utilizados por el código de demostración de MotionFX

Figura 5: Este diagrama de flujo ilustra la secuencia de pasos utilizados por el código de demostración MotionFX en el Listado 1 para extraer datos de la placa de expansión X-NUCLEO-IKS01A2 de STMicroelectronics y fusionarla en una orientación espacial en 3D. (Fuente de la imagen: STMicroelectronics)

Tenga en cuenta que los datos del giroscopio pueden desviarse, lo que puede degradar la estimación de la orientación espacial en 3D. El software MotionFX puede compensar esta degradación utilizando datos del magnetómetro, que proporcionan información de orientación absoluta. Al mismo tiempo, los magnetómetros no producen datos de rumbo a altas velocidades y sufren perturbaciones magnéticas, pero los datos del giroscopio pueden compensar estas debilidades del magnetómetro.

Los cálculos de fusión del sensor de 9 ejes del software MotionFX utilizan datos del acelerómetro, el giroscopio y el magnetómetro para proporcionar orientación absoluta en el espacio en 3D, incluido el rumbo (relativo al norte magnético).

Los cálculos de fusión del sensor de 6 ejes del software MotionFX solo utilizan datos del acelerómetro y del giroscopio. Este nivel operativo tiene menores requisitos de procesamiento y no proporciona información sobre la orientación absoluta, pero las rutinas se ejecutan más rápido que las rutinas de 9 ejes. La fusión del sensor de 6 ejes es adecuada para medir movimientos rápidos, como para juegos o para robots estacionarios, y también se puede usar cuando no es necesaria la orientación absoluta.

Conclusión

Las IMU son muy útiles en aplicaciones integradas para proporcionar información de ubicación y rumbo por sí mismas. También son útiles cuando se utilizan para aumentar la información del receptor del GNSS cuando se requieren tasas de actualización aún más precisas o más altas. Sin embargo, la incorporación de una IMU en un sistema integrado requiere una cantidad significativa de software, que los proveedores de las IMU a menudo suministran para ayudar en la aplicación en el mundo real de estos dispositivos.

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 Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Información sobre el autor

Steve Leibson

Steve Leibson fue ingeniero de sistemas para HP y Cadnetix, editor en jefe de EDN y Microprocessor Report, blogger tecnológico de Xilinx y Cadence (entre otros), y se desempeñó como experto en tecnología en dos episodios de "The Next Wave with Leonard Nimoy". Ha ayudado a los ingenieros de diseño a desarrollar sistemas mejores, más rápidos y más confiables durante 33 años.

Información sobre la editorial

Editores de Digi-Key de América del Norte