Ruido, sensores, fusión y drones perdidos
La tecnología asociada a sensores ambientales y de movimiento ha recorrido un largo camino durante los últimos años. Aun así, nada es perfecto, y los vehículos autónomos no pueden trabajar de forma segura con una visión borrosa del mundo.
Un requisito imprescindible para cualquier sistema autónomo es que conozca su ubicación precisa dentro de su entorno de funcionamiento. Esta precisión depende de su ámbito de operación. Un pequeño robot móvil puede estar diseñado para funcionar dentro de los confines de una habitación pequeña y necesitar solo las coordenadas a unos pocos milímetros. Un automóvil podría necesitar una resolución espacial de unos centímetros; un avión, de unos metros, y una sonda espacial, de cientos de metros. La sonda necesitará unas cifras más precisas si está previsto que gire en órbita a, o incluso aterrice en, un planeta. Por lo general, cualquier cosa que se mueva requerirá sensores capaces de seguir el movimiento, a menudo muy rápido. Aplicaciones estáticas, en las que los sensores toman lecturas a un ritmo más reposado, incluyen el control meteorológico y la automatización doméstica.
- Sensores dinámicos: acelerómetro, girómetro, magnetómetro y rotación óptica
- Sensores estáticos: temperatura, humedad, luz y presión barométrica
Una cosa que estos prácticos dispositivos tienen en común es que todos ellos tienen "ruido" inherente en mayor o menor grado. Y ruido equivale a error. El uso de los datos del sensor sin procesar puede dar lugar a observaciones meteorológicas (y pronósticos) imprecisos o, peor aún, a la pérdida del control de un vehículo autónomo que provoque un accidente mortal.
Definición de ruido
El ruido es, pues eso, ruido. Es el silbido en los momentos de silencio mientras escuchamos una grabación. Es la "nieve" en un antiguo televisor de la era predigital, y es la falta de nitidez aleatoria en la salida de un sensor de distancia en el que confía el ordenador de un vehículo autónomo para evitar una colisión. Para diseñar un filtro apropiado capaz de reducir el ruido, se debe programar matemáticamente. El ruido es imprevisible (no determinista), por lo que las ecuaciones lineales quedan fuera y entra en juego la estadística. Con el fin de evaluar el rendimiento de un nuevo diseño de filtro, es necesario contar con algún tipo de modelo matemático de ruido. El más común es el denominado ruido blanco gaussiano aditivo (AWGN, por sus siglas en inglés). No es perfecto, pero está lo suficientemente cerca como para demostrar si un diseño funcionaría con ruido "real". Estas son sus características principales:
- Se añade a la señal. De ahí el término ruido aditivo.
- Tiene una distribución normal en el dominio temporal, con una media o valor medio de cero (Fig.1). Por tanto, al integrar señal más ruido durante un largo período de tiempo, se elimina el ruido.
- En teoría, el dominio de la frecuencia va de -∞ a +∞, y la densidad de potencia es plana en todo el recorrido. De ahí, el término ruido blanco.
Por suerte para el diseñador, programas de simulación como MATLAB disponen de generadores de ruido AWGN.
Lo que es más importante observar de la ecuación AWGN anterior es que define la cantidad general de ruido en una señal: no proporciona la desviación de tensión de ruido en un instante. La variable σ es la desviación estándar y define cómo es de "malo" el ruido. El gráfico principal de la Fig.1 se ha calculado con un valor de σ = 1, y muestra cuál es la probabilidad "P(n)" de que la señal se desvíe en una cantidad específica "n" en un instante determinado en el tiempo. Se puede ver inmediatamente que hay una probabilidad del 40% (P = 0,4) de que en un determinado instante la señal no se desvíe de su valor verdadero. A medida que nos desplazamos hacia abajo en la curva, el ruido afecta a la señal, pero la probabilidad de largas excursiones (positivas o negativas) desciende rápidamente. La curva, en realidad, nunca alcanza el eje horizontal, por lo que siempre hay una ligera posibilidad de que aparezca un "pico" mayor de 3 σ de vez en cuando. El gráfico en recuadro muestra el efecto de incrementar el valor de σ: la curva se aplana, la probabilidad de no desviación desciende y el tamaño de una excursión de ruido aumenta. En otras palabras, a medida que σ aumenta, el ruido general empeora.
Ruido de sensores estáticos
Una vez identificado el "enemigo", veamos algunos de los sistemas integrados que se basan en la exactitud de las mediciones del sensor para funcionar de forma fiable. Los sensores "estáticos" utilizados generalmente para supervisión ambiental a menudo sólo tienen que producir una lectura a intervalos poco frecuentes. Por ejemplo, una estación meteorológica quizás solo tenga que tomar lecturas de la temperatura del aire, la humedad y la presión barométrica cada 15 minutos. Entre estas lecturas, funciona en un modo de muy baja potencia o de reposo. Dichas estaciones de detección remota se alimentan con baterías o por energía solar y utilizan un enlace inalámbrico para la comunicación. La velocidad de medición es tan baja que hay mucho tiempo para tomar una "ráfaga" de muestras, quizás durante varios segundos, y se utiliza un simple algoritmo de promedio para eliminar el ruido aleatorio mediante integración. Técnicamente, sigue siendo un sistema en tiempo real, pero uno que funciona en un intervalo de tiempo propio de "secado de pintura". Aquí no se requiere un filtrado elaborado.
Reducción del ruido en sensores dinámicos con fusión de sensores
No hace mucho, los acelerómetros y giroscopios que hacían posible la navegación inercial eran piezas de maquinaria específicas, muy grandes, pesadas y costosas. Las unidades de navegación inercial solo podían permitírselas las fuerzas armadas o el sector aeroespacial y de construcción de aeronaves civiles. El desarrollo de la tecnología MEMS (sistemas-micro-electro-mecánicos) lo cambió todo. Prácticamente, de la noche a la mañana, las unidades de navegación inercial (INU) pasaron de tener el tamaño y el peso de un frigorífico a medir 5 cm cuadrados y costar 30 euros. Esto significaba que las naves radiocontroladas de aeromodelismo podían tener el tipo de sistema de guía solo posible en un caza pocos años antes. Los robots móviles terrestres podían beneficiarse también. En la Fig.2, se muestra la colocación de un giroscopio en dos tipos de robot móvil. Un sistema ayuda a mantener el equilibrio vertical del robot midiendo su ángulo de "inclinación". El otro se utiliza para guiar al robot por un rumbo deseado.
En cada caso, es necesario medir un ángulo θ. La opción obvia de sensor es el girómetro (o giroscopio de velocidad de giro), que mide la velocidad de rotación alrededor de un eje en grados/seg. La integración de la salida da el ángulo en grados. El giroscopio responde rápidamente a los cambios y no es sensible al ruido de vibración a lo largo de sus ejes, pero tiene un importante defecto: ligeras desviaciones en la velocidad se integran en un error de ángulo que aumenta con el tiempo. En otras palabras, se desvía, y un filtro diseñado para ruido cero de media no puede corregir o compensar el error incremental. Aquí es donde entra en juego el segundo sensor. Para el robot de equilibrio, se utilizan dos acelerómetros con ejes orientados 90° uno con respecto al otro. Con el robot vertical, el acelerómetro del eje z produce una salida de +1g debido a la gravedad. El ángulo de inclinación θ se puede calcular introduciendo los valores medidos para azy ay en esta ecuación:
θ = arctan(ay/az) donde az, ay están normalizados para un rango de ±1g
El problema es que los acelerómetros son relativamente lentos en responder a los cambios, y pueden producir salidas muy ruidosas en presencia de vibración, como la de los motores. Así que ahora tenemos dos sensores de ángulo, cada uno de los cuales proporciona nominalmente los mismos datos, pero con distintos defectos. La respuesta está en combinar o "fusionar" los dos para eliminar los defectos y generar una única señal de salida limpia.
Filtrado complementario para el robot de equilibrio
El ángulo de inclinación θa se deriva de az y ay como anteriormente. A continuación, se utiliza un filtro paso bajo para deshacerse de todo el ruido de alta frecuencia, dejando un valor estático o de cambio lento para θa. Al mismo tiempo, la salida de velocidad del giroscopio se integra para dar el valor de θg. A continuación, se utiliza un filtro paso alto para bloquear la señal de deriva. Las dos señales se ponderan y suman dando una medición de "inclinación" sin deriva. Los factores de ponderación son constantes en el momento de la programación, quizás 0,95 para el giroscopio con un 0,05 complementario para el acelerómetro. Este tipo de fusión asume que el rendimiento de los sensores no cambia con el tiempo ni sufre ráfagas temporales de fuerte interferencia. Hay otros algoritmos, como el filtro de Kalman, que pueden adaptarse a condiciones de ruido cambiantes mediante la reducción de la ponderación asignada a un sensor si su salida se degrada.
El filtro de Kalman
El algoritmo de filtro de Kalman se desarrolló a principios de la década de los 60 con el fin de eliminar el ruido de media cero que perturba una señal, y se aplica a cualquier tipo de sistema que pueda describirse con una ecuación lineal. Alcanzó la fama (al menos, en el mundo de la ingeniería) gracias a su uso en los programas de navegación inercial que se ejecutaban en el ordenador de guía del módulo Apollo de la NASA. Es tan bueno que la mayoría de las aplicaciones basadas en sensores en tiempo real en entornos sometidos a ruido lo siguen utilizando hoy. ¿Qué hace que el filtro Kalman sea tan inteligente? Utiliza un proceso aparentemente simple en dos pasos para predecir la salida; a continuación, compara esta predicción con una medición para actualizar la siguiente predicción. Mantiene una cifra de "incertidumbre" relativa a la medición del sensor que también se actualiza. Si la salida de un sensor comienza a ser más ruidosa, el algoritmo de Kalman reduce la influencia de la medición en la salida y aumenta la importancia de su propia estimación. Por desgracia, el algoritmo, es demasiado complicado para describirlo en pocas palabras, pero este artículo es el mejor que he visto hasta el momento sobre el tema, ilustrándolo con un ejemplo "real" con código de simulación de MATLAB y resultados. Es complicado en términos de matemáticas de matrices, por lo que sugiero a quienes no estén familiarizados con el tema que se pongan al día en la materia. Aspectos clave que hay que saber sobre el algoritmo para decidir si puede/debe utilizarse:
- El proceso por medir debe describirse según un sistema lineal. Un ejemplo es un sencillo sistema de movimiento lineal basado en la aceleración, velocidad y posición. El personal de la NASA desarrolló un filtro de Kalman "ampliado" para el caso de los sistemas no lineales, pero las matemáticas son aún más complicadas.
- Una medición de sensor consta de un valor medio y su variación. Para un rendimiento óptimo, no solo debe ser preciso el modelo del sistema, sino también las variaciones en las entradas de señal. Se pueden encontrar valores correctos en una hoja de datos, pero podría ser necesario hacer algunas pruebas de laboratorio.
- El ruido debe tener una media cero (como en AWGN). El filtro asumirá que cualquier parte de la medición que no tenga de media cero, como la deriva del giroscopio mencionada anteriormente, es la señal deseada y no se reconocerá como ruido ni se minimizará.
El filtro de Kalman a menudo se ilustra en los textos utilizando solo una entrada de sensor, pero puede admitir dos o más siempre que haya fusión de sensores. Por supuesto, el requisito de procesamiento en tiempo real, incluso para una sola entrada, es bastante pesado, y se vuelve mucho peor con más. Hasta hace relativamente poco, esto representaba una importante limitación, pero mucho menos ahora gracias a los microcontroladores de 32 bits con unidades matemáticas de coma flotante, procesadores de señales digitales (DSP) e incluso manipulación de datos en paralelo mediante hardware SIMD (una instrucción, múltiples datos), como ARM NEON. El propio algoritmo puede simplificarse declarando algunas de sus muchas variables igual a 1 o 0 "con fines prácticos", pero esto debe realizarse con mucho cuidado para no poner en peligro su extraordinario poder de reducción del ruido adaptativo. La fusión de sensores con filtrado de Kalman ofrece algo más: mayor fiabilidad gracias a redundancia inteligente.
Aumento de la fiabilidad con fusión de sensores
Los pequeños helicópteros multirrotor teledirigidos (o drones) han ganado gran popularidad entre los entusiastas de las aeronaves radiocontroladas y fotógrafos aéreos comerciales en los últimos años. La mayor parte de esto se debe a los sistemas de control de vuelo a bordo que han hecho posibles la miniaturización de los sensores de movimiento, la brújula electrónica (magnetómetro) y potentes microcontroladores. Sin estabilización por ordenador "fly-by-wire", los cuadrópteros y hexacópteros no resultan prácticos. Dicho esto, el entorno en que operan estos nuevos sensores es bastante hostil, e incluso los "pilotos" más expertos pueden perder el control, dando lugar a "estabilización con trayectoria descendente en vertical'. Esto puede suceder cuando la vibración del motor y las maniobras con altas fuerzas G saturan el acelerómetro y los giroscopios. Los datos de GPS con frecuencia se fusionan con datos de IMU (unidades de medición inercial) para mejorar la navegación y mantener la estabilidad de vuelo si no se puede confiar en estos últimos. Las unidades GPS, sin embargo, pueden perder precisión en un momento crítico, así que a menudo los drones profesionales llevan dos receptores GPS de distintas marcas. Las salidas de dos módulos GPS e IMU se "fusionan" con un filtro de Kalman, que hace uso de su capacidad adaptativa para seleccionar los datos del mejor sensor e ignorar los del peor. Esta redundancia puede provocar una degradación del perfil de vuelo, pero es mucho mejor que "un contacto no controlado con el terreno".
Unidades de medida inerciales
Aunque los acelerómetros y los giroscopios están disponibles como chips individuales con salidas analógicas, la tendencia ahora es comprarlos juntos como un solo dispositivo integrado, a menudo con filtros paso bajo y ADC que proporcionan datos en serie a pines de salida en formato de bus SPI o I2C. Se trata, normalmente, de dispositivos 3D que proporcionan datos de movimiento en tres ejes e incluyen procesamiento de señales interno, principalmente para corregir la deriva del giroscopio. Algunos incluyen también magnetómetros 3D, y se describen como dispositivos "9-DOF" (9 grados de libertad). Como ocurre siempre con el diseño en electrónica, el diseño de pistas de PCB y el posicionamiento relativo de los chips en la placa son cruciales para un correcto funcionamiento. Estos chips MEMS añaden una dimensión extra: la de las consideraciones mecánicas. Por ejemplo, una mala soldadura o colocación de orificios de fijación pueden causar tensiones mecánicas no deseadas y perturbar la calibración, o peor. Consulta estas directrices de diseño del fabricante.
Y por último…
En este artículo, solo hemos arañado la superficie en lo que respecta al tema de fusión de sensores: no he mencionado alternativas a los filtros de Kalman, como las de Madgwick y Mahony, ni tratado la fusión de datos de cámara de vídeo con lidar y radar para vehículos autónomos. Una cosa es clara: la fusión de sensores de movimiento nunca ha sido un tema tan candente, tanto si trabajas en fábricas automatizadas, vehículos autónomos o sondas espaciales.
Si te has quedado con ganas de más, puedes seguir mi cuenta de Twitter, donde publico enlaces a artículos interesantes sobre electrónica y tecnologías relacionadas, y retuiteo información sobre robots, exploración espacial y otros temas.
Bill Marshall
Engineer, PhD, lecturer, freelance technical writer, blogger & tweeter interested in robots, AI, planetary explorers and all things electronic. STEM ambassador. Designed, built and programmed my first microcomputer in 1976. Still learning, still building, still coding today.