Tabla de contenido:

Localino rastrea Roomba IRobot, mapea el entorno y permite el control .: 4 pasos
Localino rastrea Roomba IRobot, mapea el entorno y permite el control .: 4 pasos

Video: Localino rastrea Roomba IRobot, mapea el entorno y permite el control .: 4 pasos

Video: Localino rastrea Roomba IRobot, mapea el entorno y permite el control .: 4 pasos
Video: Лучший робот-пылесос (2019) ☑️ ТОП-10 лучших 2024, Mes de julio
Anonim
Image
Image

Para construir el puente WiFi-UART, puede consultar este repositorio de github:

Tiene una buena base para empezar. ¡Asegúrese de leer bien la guía, porque el Roomba VCC durante la carga aumenta hasta 20 voltios! Si agrega un ESP8266 sin un convertidor reductor adecuado que funcione incluso hasta 20 V y se reduzca a 3.3 V, dañará su ESP.

También asegúrese de usar un cambiador de nivel (por ejemplo, usando un divisor de voltaje) para cambiar los niveles lógicos UART de 5V del Roomba a 3.3V, que son usados por el ESP.

Otro detalle importante es que el convertidor reductor debe tener 300 mA, pero mucho menos o mucho más (dependiendo del convertidor reductor en sí). Hay algunos que pueden hacer mucha más corriente, pero hacen que el Roomba se bloquee porque consumen demasiada corriente durante el inicio. Descubrimos que el regulador de voltaje reductor Pololu 3.3V, 300mA (D24V3F3) funciona perfectamente. Las versiones alternativas que tienen 500mA / 600mA provocaron que la interfaz Roomba UART se bloqueara. Básicamente, el Roomba reaccionaba al presionar un botón, pero no a los comandos a través de la interfaz UART. Una vez que esto sucedió, tuvimos que quitar la batería del Roomba y reiniciar en frío el Roomba con el puente WiFi-UART adjunto. Sin embargo, solo el D24V3F3 funcionó bien.

Aparte de ese detalle técnico, debe agregar comandos adicionales al código, que puede encontrar en las especificaciones de la interfaz abierta de Roomba. Deberá agregar todos los comandos a los que desee que reaccione su roomba (por ejemplo, hacia atrás, hacia adelante, velocidad, etc.).

ejemplos dentro del IDE de arduino:

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }

anular goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }

si escribe en lua se ve un poco diferente, un ejemplo para un giro a la IZQUIERDA se vería así:

si (_GET.pin == "LEFT") entonces print ('\ 137'); --VOR

tmr.delay (100);

imprimir ('\ 00'); - Velocidad = 200 = 0x00C8 -> 0 und 200

tmr.delay (100);

imprimir ('\ 200'); - velocidad

tmr.delay (100);

imprimir ('\ 254'); - Radio = 500 = 0x01F4 = 0x01 0xF4 = 1244

tmr.delay (100);

imprimir ('\ 12'); -- Girar

fin

Asegúrese de tener que corregir la descripción de la interfaz abierta para su Roomba. Hay al menos dos especificaciones de interfaz abierta disponibles.

para la serie Roomba 5xx:

para la serie Roomba 6xx:

Una vez que haya construido su puente WiFi-UART y haya probado los comandos, dio un gran paso adelante. Este video demuestra que la aplicación y el enfoque funcionan. Éramos un poco vagos, a la interfaz web le faltan todos los demás comandos de control, como avance, retroceso, velocidad, derecha, izquierda, etc., pero puede emitir los comandos a través de http. De todos modos, es solo una demostración de que el control remoto del Roomba funciona con una sencilla pieza de hardware y software usando un ESP8266.

Ahora que puede controlar su Roomba de forma remota desde una aplicación de PC, lo único que falta es la localización para interiores. Necesitamos esto para cerrar el ciclo de retroalimentación, porque nuestro objetivo era dirigir el robot en una dirección determinada. Hagámoslo.

Paso 3: Configure su sistema de localización para interiores

Para cerrar el circuito de retroalimentación utilizamos un sistema de localización interior. Usamos Localino para esto. El sistema Localino consta de "anclajes" y "etiquetas". Los anclajes se colocan en ubicaciones fijas dentro de la habitación y ubican la posición de la etiqueta móvil (que se coloca en el Roomba). El procesamiento de la ubicación se realiza en una aplicación para PC. ¡Eso es una gran ventaja, porque también puede controlar el Roomba desde la misma PC! Hay un código fuente gratuito disponible en el sitio web de Localino, está escrito en Python y también hay una secuencia disponible en tiempo real que ofrece las coordenadas XYZ de la etiqueta. El flujo de datos está disponible a través de la red UDP, pero también puede agregar MQTT o cualquier otra cosa elegante que desee. Si conoce Python, hay un montón de bibliotecas que le ayudarán.

En este video, se demuestra la localización del Roomba. Por lo tanto, tenemos 4 anclajes instalados en la habitación en ubicaciones fijas, que permiten el posicionamiento 3D del Roomba. En general, solo necesitaríamos 3 anclajes, porque el Roomba probablemente no se moverá en el eje Z, por lo que 2D sería suficiente. Pero debido a que los anclajes están ubicados a la altura de los enchufes principales de CA (que está aproximadamente a 30 cm sobre el suelo), una configuración 2D causaría pequeños errores de estimación de posición. Entonces decidimos tener 4 anclas y localizar en 3D.

Ahora que tenemos la posición del Roomba, nuestro siguiente paso es controlar el Roomba desde la misma aplicación. La idea es utilizar la verdad del terreno y estimar una ruta de limpieza perfecta para el robot. Con el uso del Localino podemos cerrar el circuito de retroalimentación y controlar el robot desde la aplicación para PC.

Comentarios de configuración

Coloque los anclajes Localino dentro de la habitación en diferentes posiciones x, y y tres de ellos en la misma posición z. Coloque uno de cada cuatro anclajes a una altura z diferente por habitación. Asegúrese de que haya una buena cobertura de la etiqueta Localino, que se moverá con el Roomba.

Todos los anclajes tienen un ID de ancla único, que se muestra en el código de barras del Localino y se puede leer con la herramienta de "configuración del localino".

Tenga en cuenta las posiciones en X, Y, Z y los identificadores de anclaje. Esto es necesario para el software del procesador Localino y debe adaptarse en el archivo "localino.ini" en la carpeta "LocalinoProcessor"

Los anclajes deben apuntar hacia arriba o hacia abajo en Z (cuando se cubre el área XY), pero no en la dirección del área cubierta. Los anclajes tampoco deben estar cubiertos por metal o cualquier otro material que perturbe la señal inalámbrica. Si esto no es posible, también debe haber un cierto espacio de aire entre cualquier material y el anclaje.

…más por venir.

Paso 4: Adapte el software Python

Manténganse al tanto. más por venir.

Recomendado: