Prueba de posicionamiento en interiores ESP32 UWB

Prueba de posicionamiento en interiores ESP32 UWB

diciembre 22, 2021

ESP32-UWB-Indoor-Positioning-Test-Makerfabs
Hicimos una prueba de posicionamiento en interiores ESP32 UWB, utilizando 2 anclajes UWB y 1 etiqueta UWB, cuando la etiqueta se mueve, la posición en tiempo real de la etiqueta UWB se puede mostrar gráficamente en la PC.

1. Visión general

1.1 Introducir

DW1000es el primer transceptor inalámbrico de un solo chip del mundo basado en técnicas de banda ultra ancha. Proporciona un nuevo enfoque para la ubicación en tiempo real y los sistemas de posicionamiento en interiores, los servicios basados en la ubicación, las redes de sensores inalámbricos. Permite desarrollar soluciones RTLS rentables con un posicionamiento preciso en interiores y exteriores paradentro de 10 cm.

ElMakerfabs ESP32 UWBbasado en la solución ESP32 y DW1000, actúa como un radar de escaneo continuo, que se bloquea con precisión en otro dispositivo y se comunica con él, calculando así su propia ubicación, con el ESP32 WiFi / Bluetooth, podría ser una solución para el posicionamiento inalámbrico en interiores.

1.2 Acerca de UWB

La banda ultra ancha es una tecnología para transmitir información a través de un ancho de banda amplio (>500 MHz). Esto permite la transmisión de una gran cantidad de energía de señal sin interferir con la transmisión convencional de banda estrecha y onda portadora en la misma banda de frecuencia. Los límites reglamentarios en muchos países permiten este uso eficiente del ancho de banda de radio y permiten la conectividad inalámbrica de red de área personal (PAN) de alta velocidad de datos, aplicaciones de baja velocidad de datos de mayor alcance y sistemas de radar e imágenes, que coexisten de manera transparente con los sistemas de comunicaciones existentes.
Acerca de-UWB-Ancho de banda
Una diferencia significativa entre las transmisiones de radio convencionales y UWB es que los sistemas convencionales transmiten información variando el nivel de potencia, frecuencia y / o fase de una onda sinusoidal. Las transmisiones UWB transmiten información generando energía de radio a intervalos de tiempo específicos y ocupando un gran ancho de banda, lo que permite la posición del pulso o la modulación del tiempo. La información también se puede modular en señales UWB (pulsos) codificando la polaridad del pulso, su amplitud y/o utilizando pulsos ortogonales. Los pulsos UWB se pueden enviar esporádicamente a frecuencias de pulso relativamente bajas para admitir la modulación de tiempo o posición, pero también se pueden enviar a velocidades de hasta la inversa del ancho de banda de pulso UWB. Los sistemas UWB de pulso se han demostrado a velocidades de pulso de canal superiores a 1.300 millones de pulsos por segundo utilizando un flujo continuo de pulsos UWB (pulso continuo UWB o C-UWB), al tiempo que admiten velocidades de datos codificadas de corrección de errores hacia adelante superiores a 675 Mbit/s.

1.3 Rango UWB

Se puede utilizar un sistema de radio UWB para determinar el "tiempo de vuelo" de la transmisión en varias frecuencias. Por supuesto, la velocidad del "vuelo" es como la de la luz, por lo que el problema central es cómo verificar el tiempo de "vuelo" y, por lo tanto, calcular la distancia.

Distancia = Velocidad de la luz * TProt

Para el sistema más básico, hay al menos 2 elementos: Device_A (llamado A) y Device_B (llamado B), hay principalmente 2 formas de medición:
1. Rango bidireccional de un solo lado
2. Rango bidireccional de doble cara

1.3.1 Rango bidireccional de un solo lado

Esta es la forma más básica de medir:
De un solo lado y de dos vías
En primer lugar A enviar el mensaje(TX) y tener un registro de la marca de tiempo, Como B obtener el mensaje, y tener la recodificación de tiempo Mark, después del retraso (Trepetir), B envía el mensaje (TX) y tiene un registro de la marca de tiempo, y finalmente A recibe el mensaje, y tiene el registro de marca de tiempo.

Luego el tiempo de vuelo:
Tiempo de vuelo

Como la Tredondoy Trespuestase almacenan en el mismo dispositivo, por lo que la compensación de tiempo-error; por supuesto, hay un error entre A(eA) y B(eB), y el error es:
Error

Es decir, el error es lineal a la Trespuesta. Por lo tanto, esta forma no se usa popularmente, solo se adapta a la medición de distancias muy cortas.

1.3.2 Rango bidireccional de doble cara

Después del "Single-sided Two-way Ranging", si A vuelve a responder a B, será:
Modo de mensajes de doble cara de rango bidireccional 3
A esta medida la llamamos3 Modo de mensajes.

Después del "Single-sided Two-way Ranging", si B inicia de nuevo otro mensaje y A retroalimentación, será:
Modo de doble cara y dos sentidos, 4 mensajes
A esta medida la llamamos4 Modo de mensajes.

En el modo de 3 mensajes o en el modo de 4 mensajes, el tiempo de vuelo se calcula como:

Vuelo-Tiempo-3-Mensaje-Modo
ESP32-UWB-Distancia

2. Posicionamiento en interiores con ESP32 UWB

2.1 Vista

En esta aplicación, utilizamos 3 módulos Makerfabs ESP32 UWB, 2 módulos actúan como anclaje UWB y 1 como etiqueta UWB, que se mueve en la habitación. A medida que la etiqueta obtiene su posición, transmite su ubicación a los dispositivos (ya sea el navegador de la PC, o la aplicación en el teléfono), para mostrar la posición en tiempo real.
ESP32-UWB-Indoor-Positioning-Schematic

2.2 Algoritmo de orientación plana

Supongamos que los tres módulos UWB están a la misma altura horizontal. UWB puede obtener la distancia entre Tag y dos anclajes, más la distancia de dos anclajes establecidos de antemano, podemos obtener la longitud de tres lados de un triángulo.
Triángulo
Dos puntos "AB" son dos anclajes respectivamente, y "C" es el punto de etiqueta. "c" es la distancia de dos anclajes, y UWB obtendrá dos longitudes "a" y "b". La etiqueta está "b" lejos del punto "A" y "a" lejos del punto "B".
Ahora que conocemos la distancia entre los tres lados del triángulo, podemos calcular las coordenadas del punto "C".

Utilicé la ley de los cosenos para calcular el coseno del ángulo "A":
Coseno de ángulo A
Tengo el teorema de Pitágoras que me da el seno del ángulo "A":
Teorema de Pitágoras
cos_a = (b * b + c * c - a * a) / (2 * b * c)
sin_a = sqrt(1 - cos_a * cos_a)


Si establecemos el punto "A" como el origen del sistema de coordenadas (0,0), entonces obtenemospunto C (bcosα, bsinα).

3. Lista de equipos

ESP32 UWB*3
● Banco de energía
● Fuente de alimentación de 5V *2

4. Explicación del código

4.1 Biblioteca

UtilizamosBiblioteca Arduino-DW1000. Una biblioteca que ofrece funcionalidad básica para usar los chips/módulos DW1000 de Decawave con Arduino.(Biblioteca Arduino-DW1000)

Tenga en cuenta que debe modificar la biblioteca DW1000 de acuerdo con Github, de lo contrario no se compilará para ESP32. El guía enESP32 UWB GitHub

El código completo para esta aplicación en:Makerfabs GitHub***

4.2 Device_Anchor

Como hay 2 anclajes en el sistema, necesitamos establecer diferentes direcciones de anclaje para los dos anclajes.
#define ANCHOR_ADD "83:17:5B:D5:A9:9A:E2:9C"// modificar la dirección cuando varios anclajes, como 83/82.
La biblioteca usa direcciones cortas aleatorias de forma predeterminada, y debemos configurarla para usar las direcciones estáticas que establecemos. Por lo tanto, debemos configurar el módulo UWB en modo de anclaje, modo LONGDATA_RANGE_LOWPOWER y desactivar la dirección corta aleatoria, mediante el siguiente código:
DW1000Ranging.startAsAnchor(ANCHOR_ADD,
DW1000. MODE_LONGDATA_RANGE_LOWPOWER, falso);
El código de anclaje en://github.com/Makerfabs/Makerfabs-ESP32-UWB/tree/main/example/anchor

4.3 Device_Tag

La etiqueta necesita leer la distancia entre los dos anclajes y enviarla a la PC a través del protocolo UDP.

En primer lugar, configure WiFi y la dirección IP de destino (PC).
Set-WiFi-and-Target-IP-Address

En Windows cmd, usando "ipconfig" para comprobar la IP local del PC.
Check-PC-Local-IP

Y configure el trabajo de UWB en modo de etiqueta.
Set-UWB-Work-in-Tag-Mode

Utilicé una lista vinculada para almacenar los anclajes detectados, lo que encaja bien con la forma en que funciona UWB. El contenido de la lista vinculada se convierte al formato JSON.

El formato de cadena JSON obtenido es el siguiente:
Formato de cadena JSON obtenido

Finalmente, los datos se envían a la PC cada segundo a través del protocolo UDP.
Los datos se envían a PC cada segundo

El código de etiqueta en://github.com/Makerfabs/Makerfabs-ESP32-UWB/tree/main/example/IndoorPositioning/udp_uwb_tag

4.4 Código Python

Una demo sencilla para calcular la posición de la etiqueta y mostrarla gráficamente. Usando tortuga para dibujar.

Al principio quería usar Matplotlib, pero era un poco complicado. Tortuga es fácil, pero las funciones proporcionadas son rudimentarias. Yo mismo agregué algunas funciones de dibujo para dibujar rápidamente líneas, círculos, rectángulos, etc.
Visualización gráfica de la etiqueta UWB

Aquí está mi función de cálculo de posición.
Posición-Cálculo-Función

De hecho, al principio utilicé la fórmula de Helen para calcular las coordenadas, pero no pude decir si un triángulo era agudo u obtuso.

La función de demostración es recibir los datos de etiqueta transmitidos a través del protocolo UDP, calcular la posición de la etiqueta y dibujarla en la pantalla.

5. Prueba

Después de que todos los anclajes UWB y etiquetas programados OK, primero coloco los dos anclajes UWB a ambos lados de la mesa.
ESP32-UWB-Indoor-Positioning-Test-1

Y ejecute el programa Python en el lado de la PC. Conecte la etiqueta UWB al banco de energía y espere a que se conecte al WiFi de la habitación. Después de conectar la etiqueta a la PC, aparece la interfaz gráfica.
UWB-Posición-Gráfica-Display

Mueva la etiqueta UWB, la posición de la etiqueta se puede monitorear en tiempo real en la PC:
ESP32-UWB-Indoor-Positioning-Test-2ESP32-UWB-Indoor-Positioning-Test-3

Mira el video:

Si tiene más preguntas para esta aplicación sobre ESP32 UWB Posicionamiento en interiores, o necesita algunasservicio de ensamblaje de PCB personalizado, póngase en contacto conservice@makerfabs.com.guiño

>>> Nuevo: ESP32 UWB Calibración de retardo de antena

Nuevo video:ESP32 UWB Versión de alta potencia con amplificador, hasta 120m ~

Contáctenos