Taula de continguts:

Localino Tracks Roomba IRobot, mapeja l'entorn i permet el control .: 4 passos
Localino Tracks Roomba IRobot, mapeja l'entorn i permet el control .: 4 passos

Vídeo: Localino Tracks Roomba IRobot, mapeja l'entorn i permet el control .: 4 passos

Vídeo: Localino Tracks Roomba IRobot, mapeja l'entorn i permet el control .: 4 passos
Vídeo: Mario + Rabbids Kingdom Battle - Easy Allies Review 2024, Desembre
Anonim
Image
Image

Per construir el pont WiFi-UART, podeu consultar aquest repositori de github:

Té una base agradable per començar. Assegureu-vos de llegir bé la pauta, perquè el Roomba VCC durant la càrrega augmenta fins a 20 volts. Si afegiu un ESP8266 sense un convertidor adequat que funcioni fins a 20V i es converteixi a 3,3V, danyareu el vostre ESP.

Assegureu-vos també d’utilitzar un canvi de nivell (per exemple, mitjançant un divisor de tensió) per canviar els nivells lògics UART de 5V del Roomba a 3,3V, que utilitzen l’ESP.

Un altre detall important és que el convertidor Buck hauria de tenir 300 mA, però molt menys o molt més (depenent del convertidor Buck en si). N’hi ha per aquí que poden fer molt més corrent, però poden provocar un bloqueig de Roomba perquè treuen massa corrent durant l’inici. Hem descobert que el regulador de tensió descendent (D24V3F3) de Pololu 3,3 V, 300 mA funciona perfectament. Les versions alternatives que tenen 500 mA / 600 mA van provocar un bloqueig de la interfície Roomba UART. Bàsicament, Roomba reaccionava en prémer el botó, però no en les ordres a través de la interfície UART. Un cop passat aquest esdeveniment, vam haver de treure la bateria de Roomba i reiniciar-lo en fred amb el pont WiFi-UART connectat. Tot i això, només el D24V3F3 funcionava bé.

A part d’aquest detall tècnic, heu d’afegir comandes addicionals al codi, que podeu trobar a les especificacions de la interfície oberta de Roomba. Haureu d'afegir totes les ordres a les quals voleu que reaccioni el vostre roomba (per exemple, cap enrere, cap endavant, velocitat, etc.).

exemples dins de l'IDE arduino:

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

void 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 escriviu en lua, sembla una mica diferent, un exemple per a un gir ESQUERRA seria així:

if (_GET.pin == "ESQUERRA"), llavors imprimeix ('\ 137'); --VOR

tmr.delay (100);

print ('\ 00'); - Velocitat = 200 = 0x00C8 -> 0 i 200

tmr.delay (100);

print ('\ 200'); - Velocitat

tmr.delay (100);

print ('\ 254'); - Radi = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

print ('\ 12'); - Gira

final

Assegureu-vos que heu de corregir la descripció de la interfície oberta del vostre Roomba. Hi ha disponibles almenys dues especificacions d'interfície oberta.

per a la sèrie Roomba 5xx:

per a la sèrie Roomba 6xx:

Un cop hàgiu construït el pont WiFi-UART i hàgiu provat les ordres, feu un pas més enllà. Aquest vídeo demostra que l'aplicació i l'enfocament funcionen. Érem una mica mandrosos, a la interfície web li falten totes les altres ordres de control, com ara endavant, enrere, velocitat, dreta, esquerra, etc., però podeu emetre les ordres mitjançant http. De totes maneres, és només una demostració que el control remot del Roomba funciona amb un fàcil maquinari i programari mitjançant un ESP8266.

Ara, ja que podeu controlar el Roomba remotament des d’una aplicació per a PC, l’únic que falta és la localització interior. Necessitem això per tancar el bucle de retroalimentació, perquè el nostre objectiu era dirigir el robot cap a una determinada direcció. Anem a fer-ho.

Pas 3: configureu el sistema de localització interior

Per tancar el bucle de retroalimentació fem servir un sistema de localització interior. Utilitzem Localino per a això. El sistema Localino està format per "ancoratges" i "etiquetes". Els ancoratges es col·loquen en llocs fixos dins de l’habitació i localitzen la posició de l’etiqueta mòbil (que es col·loca al Roomba). El processament de la ubicació es realitza en una aplicació de PC. Això suposa un gran avantatge, ja que també podeu controlar Roomba des del mateix PC. Hi ha codi font gratuït disponible al lloc web de Localino, està escrit en python i també hi ha un flux en temps real que ofereix les coordenades XYZ de l’etiqueta. El flux de dades està disponible a través de la xarxa UDP, però també podeu afegir MQTT o qualsevol altra cosa que vulgueu. Si coneixeu Python, hi ha un munt de biblioteques que us ajudaran.

En aquest vídeo es demostra la localització del Roomba. Per tant, tenim 4 ancoratges configurats a la sala en llocs fixos, que permeten el posicionament en 3D del Roomba. En general, només necessitaríem 3 ancoratges, ja que probablement Roomba no es mourà a l’eix Z, per tant, 2D seria suficient. Però com que els ancoratges es troben a l’alçada dels endolls principals de CA (que es troba a uns 30 cm sobre el terra), una configuració en 2D provocaria pocs errors d’estimació de posició. Així que vam decidir tenir 4 ancoratges i localitzar-los en 3D.

Ara, ja que tenim la posició del Roomba, el nostre següent pas és controlar Roomba des de la mateixa aplicació. La idea és utilitzar la veritat del terreny i estimar un camí de neteja perfecte per al robot. Amb l’ús de Localino podem tancar el bucle de retroalimentació i controlar el robot des de l’aplicació de PC.

Observacions sobre la configuració

Col·loqueu els ancoratges Localino dins de l'habitació en diferents posicions x, y i tres d'elles a la mateixa posició z. Col·loqueu un de cada quatre ancoratges a una alçada diferent z per habitació. Assegureu-vos que hi hagi una bona cobertura de l’etiqueta Localino, que es mourà amb Roomba.

Tots els ancoratges tenen un identificador d’ancoratge uniqe, que es mostra al codi de barres del Localino i es pot llegir amb l’eina de “configuració localino”.

Tingueu en compte les posicions de X, Y, Z i els identificadors d'ancoratge. Això és necessari per al programari del processador Localino i s’ha d’adaptar al fitxer “localino.ini” de la carpeta “LocalinoProcessor”

Els ancoratges haurien d’assenyalar cap amunt o cap avall en Z (quan la zona XY estigui coberta), però no en la direcció de la zona coberta. Els ancoratges tampoc no haurien de ser coberts per metall ni cap altre material pertorbador del senyal sense fils. Si això no és possible, també hi hauria d’haver un cert buit d’aire entre qualsevol material i l’ancoratge.

…més per venir.

Pas 4: adapteu el programari Python

estigueu atents. més per venir.

Recomanat: