Sommario:

Localino tiene traccia di Roomba IRobot, mappa l'ambiente e consente il controllo.: 4 passaggi
Localino tiene traccia di Roomba IRobot, mappa l'ambiente e consente il controllo.: 4 passaggi

Video: Localino tiene traccia di Roomba IRobot, mappa l'ambiente e consente il controllo.: 4 passaggi

Video: Localino tiene traccia di Roomba IRobot, mappa l'ambiente e consente il controllo.: 4 passaggi
Video: Kai’s Clan: realtà virtuale e aumentata in chiave robotica! 2024, Novembre
Anonim
Image
Image

Per costruire il bridge WiFi-UART, puoi controllare questo repository github:

Ha una buona base per iniziare. Assicurati di leggere bene le linee guida, perché Roomba VCC durante la ricarica aumenta fino a 20 Volt! Se aggiungi un ESP8266 senza un convertitore buck adeguato che funziona anche fino a 20 V e converte fino a 3,3 V, danneggerai il tuo ESP.

Assicurati inoltre di utilizzare un traslatore di livello (ad esempio utilizzando un divisore di tensione) per spostare i livelli logici UART a 5 V dal Roomba a 3,3 V, che vengono utilizzati dall'ESP.

Un altro dettaglio importante è che il convertitore buck dovrebbe avere 300 mA, ma non molto meno o molto di più (a seconda del convertitore buck stesso). Ce ne sono alcuni là fuori che possono fare molta più corrente, ma causano il crash di Roomba perché assorbono troppa corrente durante l'avvio. Abbiamo scoperto che il regolatore di tensione step-down Pololu 3.3V, 300mA (D24V3F3) funziona perfettamente. Le versioni alternative che hanno 500 mA / 600 mA hanno causato l'arresto anomalo dell'interfaccia UART di Roomba. Fondamentalmente il Roomba reagiva alla pressione del pulsante, ma non ai comandi tramite l'interfaccia UART. Una volta che ciò è accaduto, abbiamo dovuto rimuovere la batteria di Roomba e riavviare a freddo Roomba con il bridge WiFi-UART collegato. Tuttavia, solo il D24V3F3 ha funzionato bene.

A parte questo dettaglio tecnico, devi aggiungere ulteriori comandi al codice, che puoi trovare nelle specifiche dell'interfaccia aperta di Roomba. Dovrai aggiungere tutti i comandi a cui vuoi far reagire il tuo roomba (ad esempio, indietro, avanti, velocità, ecc.).

esempi all'interno dell'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); }

se scrivi in lua sembra un po' diverso, un esempio per una svolta a SINISTRA sarebbe simile a questo:

if(_GET.pin == "LEFT")allora print ('\137'); --VOR

tmr.delay(100);

stampa ('\00'); -- Velocità = 200 = 0x00C8 -> 0 e 200

tmr.delay(100);

stampa ('\200'); -- Velocità

tmr.delay(100);

stampa ('\254'); -- Raggio = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay(100);

stampa ('\12'); -- Giro

fine

Assicurati di dover correggere la descrizione dell'interfaccia aperta per Roomba. Sono disponibili almeno due specifiche dell'interfaccia aperta.

per la serie Roomba 5xx:

per la serie Roomba 6xx:

Dopo aver costruito il tuo bridge WiFi-UART e testato i comandi, hai fatto un grande passo avanti. Questo video dimostra che l'applicazione e l'approccio funzionano. Eravamo un po' pigri, all'interfaccia web mancano tutti gli altri comandi di controllo, come avanti, indietro, velocità, destra, sinistra e così via, ma puoi impartire i comandi tramite http. Ad ogni modo, è solo una dimostrazione che il telecomando di Roomba funziona con un semplice componente hardware e software utilizzando un ESP8266.

Ora che puoi controllare il tuo Roomba in remoto da un'applicazione per PC, l'unica cosa che manca è la localizzazione interna. Ne abbiamo bisogno per chiudere il ciclo di feedback, perché il nostro obiettivo era guidare il robot in una certa direzione. Facciamolo.

Passaggio 3: configura il tuo sistema di localizzazione per interni

Per chiudere il ciclo di feedback ci avvaliamo di un sistema di localizzazione indoor. Usiamo Localino per questo. Il sistema Localino è composto da "ancore" e "tag". Gli ancoraggi sono posizionati in posizioni fisse all'interno della stanza e individuano la posizione dell'etichetta mobile (che è posizionata sul Roomba). L'elaborazione della posizione viene eseguita in un'applicazione per PC. Questo è un grande vantaggio, perché puoi controllare Roomba anche dallo stesso PC! C'è un codice sorgente gratuito disponibile dal sito web di Localino, è scritto in python e c'è anche un flusso in tempo reale disponibile che offre le coordinate XYZ del tag. Il flusso di dati è disponibile tramite la rete UDP, ma puoi anche aggiungere MQTT o qualsiasi altra cosa fantasiosa che ti piace. Se conosci Python, ci sono un sacco di librerie che ti aiutano.

In questo video viene dimostrata la localizzazione di Roomba. Pertanto abbiamo 4 ancore installate nella stanza in posizioni fisse, che consentono il posizionamento 3D del Roomba. In generale, avremmo bisogno solo di 3 ancoraggi, perché il Roomba probabilmente non si sposterà sull'asse Z, quindi 2D sarebbe sufficiente. Ma poiché gli ancoraggi si trovano all'altezza della presa principale CA (che è a circa 30 cm dal suolo), una configurazione 2D causerebbe piccoli errori di stima della posizione. Quindi abbiamo deciso di avere 4 ancore e localizzare in 3D.

Ora che abbiamo la posizione di Roomba, il nostro prossimo passo è controllare Roomba dalla stessa applicazione. L'idea è quella di utilizzare la verità del terreno e stimare un percorso di pulizia perfetto per il robot. Con l'utilizzo del Localino possiamo chiudere l'anello di retroazione e controllare il robot dall'applicazione PC.

Note di installazione

Posizionare gli ancoraggi Localino all'interno della stanza in diverse posizioni x, y e tre di essi nella stessa posizione z. Posizionare uno dei quattro ancoraggi a un'altezza z diversa per stanza. Assicurati che ci sia una buona copertura dal tag Localino, che si sposterà con Roomba.

Tutte le ancore hanno un ID di ancoraggio univoco, che viene visualizzato sul codice a barre del Localino e può essere letto con lo strumento “configurazione localino”.

Annotare le posizioni in X, Y, Z e gli ID di ancoraggio. Questo è necessario per il Software Processore Localino e deve essere adattato nel file “localino.ini” nella cartella “LocalinoProcessor”

Gli ancoraggi devono puntare verso l'alto o verso il basso in Z (quando l'area XY è coperta), ma non nella direzione dell'area coperta. Inoltre, gli ancoraggi non devono essere coperti da metallo o altro materiale che disturba il segnale wireless. Se ciò non è possibile, dovrebbe esserci anche un certo spazio d'aria tra qualsiasi materiale e l'ancoraggio.

…e c'è dell'altro.

Passaggio 4: adattare il software Python

rimani sintonizzato. e c'è dell'altro.

Consigliato: