Sommario:

Roomba Scout Explorer: 8 passaggi
Roomba Scout Explorer: 8 passaggi

Video: Roomba Scout Explorer: 8 passaggi

Video: Roomba Scout Explorer: 8 passaggi
Video: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Dicembre
Anonim
Roomba Esploratore esploratore
Roomba Esploratore esploratore

Essendo uno dei progetti americani più attesi e più ricercati, i progetti del rover su Marte sono diventati realizzazioni umane nella produzione in continua evoluzione di sistemi autonomi ad alta tecnologia al solo scopo di indagare e interpretare le masse continentali e le superfici del pianeta rosso dietro la terra. Come parte di un progetto più personale in omaggio alle missioni su Marte, il nostro obiettivo era creare un robot roomba che potesse agire autonomamente in un determinato lasso di tempo e reagire di conseguenza a determinati criteri nelle sue vicinanze.

Per quanto riguarda l'unicità, ci siamo concentrati sulla creazione di un diagramma che mostrasse ogni percorso che il robot segue dalle sue origini. Inoltre, il robot sarà in grado di contare il numero di oggetti nelle sue vicinanze in uno stile panoramico.

Passaggio 1: attrezzatura

-Roomba con fotocamera collegabile (con nome specifico noto)

-Server connesso

-Windows 10/Mac con connettività Internet

-Piattaforma luminosa

-Pavimento scuro

-Qualsiasi oggetto randagio di design monocromatico

Passaggio 2: configurazione di MATLAB

Configurazione MATLAB
Configurazione MATLAB

Per creare attività e funzioni per roomba, è necessario disporre di codici e toolkit specifici contenenti i comandi roomba.

Con MATLAB 2016a e versioni successive scaricate, crea una cartella per contenere questi file robot e inserisci il seguente file MATLAB nella cartella ed eseguilo per installare i restanti file roomba necessari.

Successivamente, fai clic con il pulsante destro del mouse nella finestra Cartella corrente, passa il mouse su "Aggiungi un percorso" e fai clic su "Cartella corrente". Ora, dovrebbe essere impostato un percorso in modo che ciascuno di questi file venga utilizzato per attivare roomba.

Ora, usa il comando qui sotto nella finestra di comando per configurare il roomba:

r=roomba(#).

Il simbolo # è il 'numero' del roomba specificato; tuttavia, se desideri semplicemente un simulatore di roomba, digita semplicemente il seguente comando:

r=roomba(0).

La simulazione sarebbe consigliata per testare i modelli di movimento.

Se sei curioso di sapere quali comandi può seguire roomba, digita quanto segue nella finestra di comando:

doc roomba.

Per maggiori dettagli, visitare il seguente sito Web:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Passaggio 3: funzione: movimento

Funzione: movimento
Funzione: movimento
Funzione: movimento
Funzione: movimento

Per quanto riguarda il movimento, il roomba dovrebbe muoversi automaticamente per un determinato periodo di tempo indicato negli ingressi. L'obiettivo del movimento del robot è reagire correttamente quando i suoi sensori (paraurti, paraurti leggeri e sensori di dislivello) cambiano in presenza di vari ostacoli. Questa parte fungerà da base per tutti i comandi di roomba poiché più funzionalità al codice verranno aggiunte in seguito. Erano necessarie alcune precisazioni:

-Per ridurre i danni, il robot deve ridurre la velocità a una velocità inferiore.

-Quando si avvicina a una scogliera oa un muro, il robot si sposterà all'indietro e modificherà il suo angolo a seconda del punto di impatto

-Dopo un po' di tempo alla guida, il roomba si fermerà e scatterà immagini dell'area circostante

Si noti che i valori utilizzati erano in relazione al simulatore; valori come gli angoli di virata, le velocità di virata e le preimpostazioni del sensore del robot dovrebbero essere modificati quando si utilizza il robot effettivo per garantire la stabilità e la contabilizzazione degli errori dell'attrezzatura.

Passaggio 4: funzione: elaborazione delle immagini

Funzione: elaborazione delle immagini
Funzione: elaborazione delle immagini

Come da richiesta, siamo stati incaricati di modificare i dati di un'immagine (o più immagini) che è stata ricevuta dalla fotocamera del robot, a cui abbiamo deciso di far "contare" il roomba il numero di oggetti che vede nell'immagine.

Abbiamo seguito la tecnica di far tracciare a MATLAB i confini attorno agli oggetti anneriti che contrastano con uno sfondo bianco. Tuttavia, questa funzione è soggetta ad avere difficoltà in un'area aperta a causa delle diverse forme e colori percepiti dalla fotocamera, risultando in conteggi insolitamente elevati.

Si noti che questa funzione non può funzionare nel simulatore poiché non è fornita una telecamera; se tentato, si verificherà un errore che dichiarerà che è possibile utilizzare solo una matrice (:,:, 3).

Passaggio 5: funzione: mappatura

Funzione: mappatura
Funzione: mappatura
Funzione: mappatura
Funzione: mappatura
Funzione: mappatura
Funzione: mappatura
Funzione: mappatura
Funzione: mappatura

Una caratteristica aggiuntiva che volevamo che il robot avesse è stata la mappatura delle sue posizioni poiché interagisce direttamente con l'ambiente. Pertanto, il codice seguente cerca di aprire una mappa e impostare un sistema di coordinate che dettaglia ciascuna posizione in cui vengono premuti i sensori del paraurti del robot. Questa si è rivelata la parte più lunga delle tre parti da testare individualmente, ma si è rivelata molto più semplice quando applicata alla sceneggiatura finale.

Per aggiungere un limite alla lunghezza del tempo di esecuzione della funzione, è stato utilizzato il limite n<20 del ciclo while a scopo di test.

Tieni presente che, a causa della complessità del codice, si verificano più errori poiché il segmento di codice viene eseguito per lungo tempo; dai test precedenti, dieci rilievi sembrano essere il numero di punti prima che si verifichino errori significativi.

Passaggio 6: giustapposizione

Giustapposizione
Giustapposizione
Giustapposizione
Giustapposizione
Giustapposizione
Giustapposizione
Giustapposizione
Giustapposizione

Poiché tutto questo verrà inserito in un unico file, abbiamo creato una funzione utilizzando ciascuno dei due passaggi precedenti come sue sottofunzioni. Una bozza finale è stata fatta con la seguente modifica alla funzione redux chiamata "recon". Per evitare confusione per MATLAB, gli script "counter" e "rombplot3" sono stati rinominati rispettivamente come funzioni incorporate "CountR" e "plotr".

Diverse modifiche dovevano essere apportate nella versione finale rispetto agli script precedenti:

-L'origine sarà sempre contrassegnata da un cerchio rosso

-Ogni volta che il roomba si ferma dai suoi paraurti, la posizione è contrassegnata da un cerchio nero

-Ogni volta che il roomba si ferma dai suoi sensori di dislivello, la posizione è contrassegnata da un cerchio blu

-Ogni volta che il roomba smette di esplorare l'area, la posizione è contrassegnata da un cerchio verde

-Le immagini vengono modificate per rimuovere la parte superiore a causa del timestamp che potrebbe interferire con i risultati

-I bordi non verranno conteggiati come oggetto a causa di numeri acquisiti piuttosto elevati

-Diverse variabili sono state modificate, quindi per evitare confusione utilizzare le versioni sopra come riferimento.

Passaggio 7: test

test
test

Le prove per ogni singolo componente si sono rivelate a volte piuttosto contrastanti, motivo per cui sono state necessarie modifiche a determinati valori preimpostati. Lo sfondo tematico su cui abbiamo voluto testare le capacità del robot in un'area chiusa consisteva semplicemente in una lavagna posta su un pavimento molto più scuro. Puoi disperdere gli oggetti intorno all'area; farli agire come oggetti da urtare o oggetti distanti dall'area di movimento del robot.

Dopo aver impostato il tempo regolato e la velocità di base, il roomba ha dimostrato un comportamento di movimento adeguato, fermandosi e indietreggiando da ogni "scoglio" o oggetto in cui si scontra e rallentando quando rileva qualcosa vicino. Una volta raggiunta la distanza di viaggio di tre metri desiderata, il robot procederà a fermarsi e valutare l'area, scattando immagini di ciascuna regione di 45 gradi e procedendo se il tempo lo consente. Tuttavia, i suoi turni apparivano più grandi di quanto richiesto, il che significava che i dati delle coordinate sarebbero stati oscurati.

Ogni volta che si ferma, un nuovo punto è stato posizionato nella regione approssimativa della sua posizione sul sistema di coordinate; tuttavia, si nota che la direzione iniziale in cui inizia il roomba gioca un ruolo fondamentale nella progettazione della mappa. Se fosse stato possibile implementare una funzione bussola, sarebbe stata utilizzata come parte cruciale del design della mappa.

Il tempo effettivo impiegato dalla funzione per l'esecuzione completa supera sempre il tempo richiesto, il che ha senso considerando che non può fermarsi nel mezzo di uno dei suoi ripristini. Sfortunatamente, questa versione del conteggio delle immagini ha i suoi problemi, specialmente nelle aree che sono per lo più monocromatiche o con luminosità variabile; poiché tenta di distinguere tra due sfumature, tende a percepire oggetti che non sono desiderati, quindi conta sempre fino a numeri follemente alti.

Passaggio 8: conclusione

Conclusione
Conclusione

Sebbene questo compito fosse un lavoro molto avventuroso e creativo che ha portato gioia e sollievo, io, dalle mie osservazioni personali, ho potuto vedere un gran numero di errori che potrebbero essere problematici, sia nel codice che nel comportamento del robot.

La limitazione dell'uso della specificazione del tempo nel ciclo while fa sì che la quantità totale di tempo sia più lunga di quella desiderata; il processo della tecnica del panorama e dell'elaborazione delle immagini potrebbe infatti richiedere più tempo se eseguito da un computer lento o non utilizzato in precedenza. Inoltre, il roomba che è stato utilizzato nella nostra presentazione ha agito con un gran numero di errori, soprattutto in movimento, rispetto al simulatore. Il robot utilizzato sfortunatamente aveva la tendenza a inclinarsi leggermente a sinistra poiché guidava dritto e faceva curve più ampie del previsto. Per questo motivo e per molti altri, è altamente raccomandato che, per compensare questi errori, sia necessario apportare modifiche ai suoi angoli di virata.

Tuttavia, questo è un progetto lungo ma intellettualmente stimolante che ha agito come un'interessante esperienza di apprendimento per l'applicazione di codici e comandi per influenzare direttamente il comportamento di un robot reale.

Consigliato: