Qué es Sensor Fusion: cómo funciona y sus aplicaciones
Actualmente, los sensores se utilizan en una amplia gama de aplicaciones que van desde teléfonos inteligentes, control industrial, sistemas automotrices, monitoreo climático, atención médica y exploración petrolera. Generalmente, un sensor individual tiene tanto ventajas como desventajas. Para superar las limitaciones de los sensores individuales mediante la recopilación de información de diferentes sensores para generar datos más consistentes con menos dudas, se utiliza la fusión de sensores. Por lo tanto, estos datos robustos se pueden utilizar para tomar ciertas acciones y tomar decisiones. vamos a discutir fusión de sensores y sus tipos con el trabajo.
¿Qué es Sensor Fusion?
Definición de fusión de sensores: El proceso de fusionar datos de diferentes sensores para hacer una conceptualización más precisa del objeto u objetivo se conoce como fusión de sensores. Por lo tanto, este proceso simplemente le permite fusionar entradas de múltiples sensores para obtener una comprensión más precisa y completa de la dirección, el entorno y la ubicación del objetivo.
La fusión de sensores se necesita principalmente para resolver desafíos entre diferentes sensores, sincronización de sensores, expectativa de posiciones de objetos futuros, utilización de fuerzas heterogéneas de sensores, detección de mal funcionamiento de sensores y cumplimiento de requisitos de seguridad de conducción automatizada.
¿Cómo funciona la fusión de sensores?
La fusión de sensores funciona al reunir todas las entradas de muchos sensores para formar una sola imagen o modelo del entorno alrededor de una plataforma. Por lo tanto, la salida es muy precisa ya que equilibra las fuerzas de los diferentes sensores. El proceso de fusión de sensores utiliza algoritmos de software para proporcionar un modelo ambiental más completo y preciso. Es un método complejo de recopilar, filtrar y agregar información de sensores para mantener la conciencia ambiental necesaria para la toma de decisiones inteligente:
Tipos de fusión de sensores
Hay tres tipos de sensores de fusión competitivos, complementarios y cooperativos, donde cada tipo se analiza a continuación.
En una fusión de sensores complementarios, si los sensores no dependen directamente unos de otros, pueden fusionarse para proporcionar una imagen completa del fenómeno observado. Esto decide la incompletitud de la información del sensor.
El mejor ejemplo de esta configuración es el uso de múltiples cámaras donde cada una monitorea partes separadas de una habitación. Por lo general, la fusión de datos complementarios es muy simple, mientras que los datos de los sensores se pueden agregar entre sí.
En los sensores de fusión de la competencia, cada tipo de sensor proporciona mediciones independientes de una propiedad similar. Estos tipos de sensores de fusión se utilizan principalmente para sistemas robustos y tolerantes a fallas. El mejor ejemplo de esto es la reducción de ruido mediante la fusión de dos imágenes de cámara superpuestas.
Una red cooperativa de sensores de fusión utiliza datos proporcionados por dos sensores separados para derivar información que no se podría obtener solo de los sensores. El mejor ejemplo de esto es la visión estereoscópica que mezcla imágenes bidimensionales usando dos cámaras. En puntos de vista ligeramente diferentes, se puede derivar una imagen tridimensional de la escena observada.
Algoritmos de fusión de sensores
Los científicos de datos utilizan principalmente los algoritmos de fusión de sensores para combinar datos en aplicaciones de fusión de sensores. Por lo tanto, estos algoritmos procesarán todas las entradas de los sensores y generarán resultados con alta confiabilidad y precisión, incluso cuando las mediciones individuales sean defectuosas. Hay diferentes tipos de algoritmos de fusión de sensores que se describen a continuación.
Teorema del límite central
El CLT o Teorema del Límite Central es un concepto aritmético que establece que en matemáticas y estadística, la distribución muestral de la media es un concepto importante. En general, una media se refiere al valor promedio o más común en un conjunto de enfoques de una distribución normal a medida que aumenta el tamaño de la muestra, fuera de la forma de la distribución de población original.
Por ejemplo: si tenemos dos tipos de sensores como el sensor ultrasónico y el sensor infrarrojo. Una vez que obtengamos más muestras de sus lecturas, la distribución de las medias de las muestras se parecerá más a una curva de campana y, por lo tanto, se acercará al valor medio preciso del conjunto. Una vez que nos acerquemos a un valor medio preciso, el ruido bajo dará como resultado algoritmos de fusión de sensores.
filtro Kalman
Un filtro de Kalman es un tipo de algoritmo de fusión de sensores que utiliza entradas de datos de diferentes fuentes para estimar valores desconocidos que se utilizan con frecuencia en la tecnología de navegación y control. Estos filtros pueden calcular valores desconocidos con mucha precisión frente a predicciones individuales con técnicas de medición únicas.
Los algoritmos de filtro de Kalman son la aplicación de fusión de sensores más utilizada y proporcionan la base para comprender la teoría en sí. Las aplicaciones más comunes de los filtros de Kalman son, es aplicable en tecnología de posicionamiento y navegación. Dado que el filtrado de Kalman es repetitivo, necesitamos conocer la última posición reconocida de un automóvil y su velocidad es capaz de anticipar su estado presente y futuro.
Redes neuronales convolucionales
Este tipo de algoritmo de fusión puede procesar simultáneamente múltiples canales de datos de sensores. Al combinar estos datos, pueden producir resultados de clasificación basados en el reconocimiento de imágenes. Por ejemplo, un robot utiliza datos de sensores para informar señales de tráfico a una distancia que depende de algoritmos basados en redes neuronales convolucionales. Se utiliza un sistema de fusión de sensores con una red neuronal convolucional (CNN) para monitorear los movimientos de transición en aplicaciones de atención médica.
red bayesiana
En la fusión de sensores, un algoritmo de red bayesiano es un modelo gráfico que representa un conjunto de variables y sus dependencias condicionales a través de un gráfico acíclico dirigido. Por ejemplo, una red bayesiana representa las principales relaciones probabilísticas entre enfermedades y síntomas. Así, la red puede utilizarse simplemente para calcular las probabilidades de existencia de diferentes enfermedades.
Los algoritmos eficientes pueden realizar inferencias y aprender dentro de las redes bayesianas. Estas redes que forman una serie de variables como secuencias de proteínas o señales de voz se denominan redes bayesianas dinámicas. Las simplificaciones de estas redes pueden significar y resolver problemas de decisión bajo incertidumbre se conocen como diagramas de influencia.
Interfaz del sensor MPU6050 con Arduino Uno
Aquí, la interfaz del sensor MPU6050 con la placa Arduino UNO se analiza a continuación.
El MPU6050 es un sensor de unidad de medida inercial (IMU) que incluye un acelerómetro MEMS y un giroscopio MEMS en un chip. La IMU incluye tres sensores, como un acelerómetro, un giroscopio y magnetómetros. La función principal de un sensor IMU es medir la fuerza particular usando un acelerómetro, la velocidad angular con giroscopio y el campo magnético usando magnetómetros.
Estos sensores son aplicables en aviones, robots autoequilibrados, naves espaciales, satélites, drones, tabletas, teléfonos móviles, vehículos aéreos no tripulados (UAV) para detección de posición, guía, orientación de detección, control de vuelo y seguimiento de movimiento.
Los sensores IMU comunes son el acelerómetro MPU 6050 y ADXL 335. El sensor IMU ADXL 335 incluye un acelerómetro de 3 ejes, mientras que el sensor MPU-6050 es un dispositivo de seguimiento de movimiento de 6 ejes que combina un acelerómetro y un giroscopio en tres ejes en un chip .
Los componentes necesarios para conectar Arduino UNO con el sensor MPU6050 incluyen principalmente un sensor MPU 6050, cables de puente y una placa Arduino Uno. Las conexiones de esta interfaz siguen como;
- Conecte el pin VCC del sensor MPU6050 al VCC de Arduino.
- Conecte el pin SDA del sensor MPU6050 al pin IN (A4) de Arduino.
- Conecte el pin SCL del sensor MPU6050 al pin Analog IN (A5) de Arduino.
- Conecte el pin GND del sensor MPU6050 al pin GND de Arduino.
- Conecte el pin INT del sensor MPU6050 al PWM digital (pin 2) de Arduino.
Después de eso, los datos del sensor MPU6050 se pueden obtener instalando la biblioteca wire.h. Ambas bibliotecas se pueden descargar de Internet.
A partir de este código de biblioteca, podemos obtener tres parámetros principales como balanceo, cabeceo y guiñada. Al viajar en automóvil, el movimiento se puede medir hacia la derecha, hacia la izquierda, hacia adelante y hacia atrás. Sin embargo, para vehículos voladores o drones, no se considerará lo mismo. Porque las terminologías de los tableros de control voladores son diferentes, como cabeceo, guiñada y balanceo.
El eje Pitch se puede definir como el eje que va del lado izquierdo al lado derecho del dron. Por lo tanto, la revolución alrededor de este eje se conoce como movimiento de cabeceo.
El eje de balanceo se puede definir como el eje que va desde la parte delantera hasta la trasera del dron. Por lo tanto, la revolución alrededor de este eje se conoce como movimiento de balanceo.
El eje de guiñada se puede definir como el eje que va desde la parte superior a la inferior del dron. Por lo tanto, la revolución alrededor de este eje se conoce como movimiento de guiñada.
Código de proyecto
#comprender
const entero MPU = 0x68; // Dirección I2C MPU6050
flotante AccX, AccY, AccZ;
flotar GyroX, GyroY, GyroZ;
float accAngleX, accAngleY, gyroAngleX, gyroAngleY, gyroAngleZ;
balanceo flotante, cabeceo, guiñada;
float AccErrorX, AccErrorY, GyroErrorX, GyroErrorY, GyroErrorZ;
float tiempo transcurrido, tiempo actual, tiempo anterior;
entero c = 0;
configuración vacía () {
Serie.begin(19200);
Alambre.begin(); // Inicializar la comunicación
Wire.beginTransmission(MPU); // Iniciar comunicación con MPU6050 // MPU=0x68
Alambre.escribir(0x6B); // Habla con el registro 6B
Alambre.escribir(0x00); // Hacer reinicio - poner un 0 en el registro 6B
Wire.endTransmission(verdadero); // finaliza la transmisión
/*
// Configurar la sensibilidad del acelerómetro: rango de escala completa (predeterminado +/- 2 g)
Wire.beginTransmission(MPU);
Alambre.escribir(0x1C); //Habla para registrar ACCEL_CONFIG (1C hex)
Alambre.escribir(0x10); // Establecer bits de registro en 00010000 (+/- rango de escala completa de 8 g)
Wire.endTransmission(verdadero);
// Configure la sensibilidad del giroscopio: rango de escala completa (predeterminado +/- 250 grados / s)
Wire.beginTransmission(MPU);
Alambre.escribir(0x1B); // Hablar para registrar GYRO_CONFIG (1B hex)
Alambre.escribir(0x10); // Establecer bits de registro en 00010000 (1000 grados/s de escala completa)
Wire.endTransmission(verdadero);
retraso (20);
*/
// Llame a esta función si necesita obtener los valores de error de IMU para su módulo
calcular_IMU_error();
retraso (20);
}
bucle vacío() {
// === Leer datos del acelerómetro === //
Wire.beginTransmission(MPU);
Alambre.escribir(0x3B); // Empezar con el registro 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(falso);
Wire.requestFrom(MPU, 6, verdadero); // Leer 6 registros en total, cada valor de eje se almacena en 2 registros
//Para un rango de +-2g, divida los valores brutos por 16384, de acuerdo con la hoja de datos
AccX = (Cable.leer() << 8 | Cable.leer()) / 16384.0; // valor del eje X
AccY = (Cable.leer() << 8 | Cable.leer()) / 16384.0; // valor del eje Y
AccZ = (Cable.leer() << 8 | Cable.leer()) / 16384.0; // valor del eje Z
// Calcular balanceo y cabeceo a partir de datos del acelerómetro
accAngleX = (atan(AccY / sqrt(pow(AccX, 2) + pow(AccZ, 2))) * 180 / PI) – 0.58; // AccErrorX ~(0.58) Consulte la función personalizada compute_IMU_error() para obtener más detalles
accAngleY = (atan(-1 * AccX / sqrt(pow(AccY, 2) + pow(AccZ, 2))) * 180 / PI) + 1.58; // ACCERROR ~(-1.58)
// === Leer datos del giroscopio === //
hora anterior = hora actual; // El tiempo anterior se almacena antes de la lectura en tiempo real
hora_actual = milisegundos(); // Lectura en tiempo real en tiempo actual
Tiempo transcurrido = (tiempo actual – tiempo anterior) / 1000; // Divide por 1000 para obtener los segundos
Wire.beginTransmission(MPU);
Alambre.escribir(0x43); // Datos del giroscopio primera dirección de registro 0x43
Wire.endTransmission(falso);
Wire.requestFrom(MPU, 6, verdadero); // Leer 4 registros en total, cada valor de eje se almacena en 2 registros
GyroX = (Cable.leer() << 8 | Cable.leer()) / 131.0; // Para un rango de 250 grados/s, primero debemos dividir el valor bruto por 131,0, según la hoja de datos
GyroY = (Cable.leer() << 8 | Cable.leer()) / 131.0;
GyroZ = (Cable.leer() << 8 | Cable.leer()) / 131.0;
// Corrija las salidas con los valores de error calculados
GyroX=GyroX+0,56; // Error GyroX~(-0.56)
GyroY = GyroY – 2; // ErrorGyroY ~(2)
GiroZ=GiroZ+0,79; // ErrorGyroZ~(-0.8)
// Actualmente los valores brutos están en grados por segundo, grados/s, por lo que debemos multiplicar por envío(s) para obtener el ángulo en grados
gyroAngleX = gyroAngleX + GyroX * tiempo transcurrido; // grado/s * s = grado
gyroAngleY = gyroAngleY + GyroY * tiempo transcurrido;
guiñada = guiñada + GyroZ * tiempo transcurrido;
// Filtro complementario: combina valores de ángulo de acelerómetro y giroscopio
balanceo = 0.96 * gyroAngleX + 0.04 * accAngleX;
paso = 0.96 * gyroAngleY + 0.04 * accAngleY;
// Imprime los valores en el monitor serial
Serial.print(rollo);
Serial.print("/");
Serial.print(tono);
Serial.print("/");
Serial.println(guiñada);
}
anular calcular_IMU_error() {
// Podemos llamar a esta función en la sección de configuración para calcular el error de datos del acelerómetro y giroscopio. A partir de ahí obtendremos los valores de error utilizados en las ecuaciones anteriores impresas en el monitor serie.
// Tenga en cuenta que tenemos que colocar la IMU plana para obtener los valores correctos, de modo que podamos obtener los valores correctos
// Lee los valores del acelerómetro 200 veces
mientras (c < 200) {
Wire.beginTransmission(MPU);
Alambre.escribir(0x3B);
Wire.endTransmission(falso);
Wire.requestFrom(MPU, 6, verdadero);
AccX = (Cable.leer() << 8 | Cable.leer()) / 16384.0;
AccY = (Cable.leer() << 8 | Cable.leer()) / 16384.0;
AccZ = (Cable.leer() << 8 | Cable.leer()) / 16384.0;
// Suma de todas las lecturas
AccErrorX = AccErrorX + ((atan((AccY) / sqrt(pow((AccX), 2) + pow((AccZ), 2))) * 180 / PI));
AccErrorY = AccErrorY + ((atan(-1 * (AccX) / sqrt(pow((AccY), 2) + pow((AccZ), 2))) * 180 / PI));
c++;
}
// Divide la suma por 200 para obtener el valor del error
AccErrorX = AccErrorX / 200;
AccErrorY = AccErrorY / 200;
c=0;
// Lee los valores del giroscopio 200 veces
mientras que (c < 200) {
Wire.beginTransmission(MPU);
Alambre.escribir(0x43);
Wire.endTransmission(falso);
Wire.requestFrom(MPU, 6, verdadero);
GyroX = Alambre.leer() << 8 | Alambre.read();
GyroY = Alambre.leer() << 8 | Alambre.read();
GyroZ = Alambre.leer() << 8 | Alambre.read();
// Suma de todas las lecturas
GyroErrorX = GyroErrorX + (GyroX / 131.0);
GyroErrorY = GyroErrorY + (GyroY / 131.0);
GyroErrorZ = GyroErrorZ + (GyroZ / 131.0);
c++;
}
// Divide la suma por 200 para obtener el valor del error
GyroErrorX = GyroErrorX / 200;
GyroErrorY = GyroErrorY / 200;
GyroErrorZ = GyroErrorZ / 200;
// Imprime valores de error al Serial Monitor
Serial.print("AccErrorX: ");
Serial.println(AccErrorX);
Serial.print("AccErrorY: ");
Serial.println(AccErrorY);
Serial.print("Error GyroX: ");
Serial.println(GyroErrorX);
Serial.print("ErrorGyroY: ");
Serial.println(GyroErrorY);
Serial.print("Error GyroZ: ");
Serial.println(GyroErrorZ);
}
Producción
De la programación anterior, podemos obtener los datos de balanceo, cabeceo o guiñada. Estos son los datos manipulados obtenidos usando los ángulos del giroscopio MPU6050.
Las aplicaciones del sensor MPU6050 incluyen principalmente controlador de mouse 3D, control remoto 3D, control de brazo robótico, dispositivos de control de gestos con las manos, robots autoequilibrados, etc.
Ventajas
los beneficios de la fusión de sensores Incluya lo siguiente.
- El sensor de fusión se utiliza para proporcionar precisión en una amplia gama de condiciones de funcionamiento.
- Los datos sensoriales integrados proporcionan dispositivos de reconocimiento multilaterales, fiables y de alto nivel.
- La fusión de sensores tiene la capacidad de reunir entradas de múltiples LIDAR, cámaras y radares para formar un solo modelo del entorno en la región de un vehículo. El modelo resultante es más preciso porque equilibra las fuerzas de los diferentes sensores.
- La fusión de sensores proporciona datos más completos y fiables en comparación con los sensores individuales
La fusión de sensores reducirá los costos operativos al expandir la gama de diferentes dispositivos, como drones (vehículos aéreos no tripulados) y robótica, incluida la funcionalidad autónoma. - La fusión de sensores tiene como objetivo principal superar las limitaciones de los sensores individuales.
- Un sistema de fusión de sensores mejora la fuerza del sistema de detección de carril para que el sistema sea más consistente.
Aplicaciones
los Aplicaciones de la fusión de sensores. Incluya lo siguiente.
- La fusión de sensores se utiliza en el Sistema de posicionamiento global (GPS) y el Sistema de navegación inercial (INS), donde los datos de estos sistemas se pueden fusionar con diferentes técnicas. Por ejemplo, el filtro Kalman ampliado se usa para determinar la actitud de la aeronave con sensores de bajo costo.
- La fusión de sensores permite la conciencia del contexto, que tiene un enorme potencial para el IoT (Internet de las cosas).
- Mejora significativamente el rendimiento de detección de carril cuando se utilizan varios sensores y se aumenta la capacidad de percepción.
Así, se trata de una descripción general de la fusión de sensores que incluye diferentes algoritmos, así como herramientas utilizadas para diseñar, probar y simular sistemas que combinan información de múltiples sensores para mantener la ubicación y el conocimiento de la situación, como radar activo y pasivo, LIDAR, EO/IR, sonar, GPS e IMU. Aquí hay una pregunta para usted, ¿cuáles son las desventajas de la fusión de sensores?
Si quieres conocer otros artículos parecidos a Qué es Sensor Fusion: cómo funciona y sus aplicaciones puedes visitar la categoría Generalidades.
Deja una respuesta
¡Más Contenido!