Sommario:
- Passaggio 1: materiali
- Passaggio 2: connessione
- Passaggio 3: creazione logica di un codice MATLAB per utilizzare i sensori
- Passaggio 4: test del codice e del robot
- Passaggio 5: riconoscimento dell'errore
- Passaggio 6: conclusione
Video: Roomba Parking Pal: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo progetto utilizza un iRobot Create roomba programmabile, MATLAB r2018a e MATLAB mobile. Utilizzando questi tre mezzi e la nostra conoscenza della codifica, abbiamo programmato iRobot Create per interpretare i colori e utilizzare i sensori di bordo per completare le attività. Questo progetto dipende dalla comunicazione Raspberry Pi e MATLAB per eseguire queste attività.
Passaggio 1: materiali
1. iRobot Crea Robot
2. MATLAB r2018a
3. Raspberry Pi
4. Modulo telecamera
5. Supporto stabilizzatore per fotocamera stampato in 3D
6. Smartphone con MATLAB mobile installato
7. Laptop/Computer con MATLAB installato
Passaggio 2: connessione
Questo passaggio riguarda il collegamento del Raspberry Pi al robot, in secondo luogo il collegamento del robot al computer e il collegamento dello smartphone al computer.
La parte più semplice di questo processo è collegare il Raspberry Pi al tuo robot, poiché il Raspberry Pi è montato sulla parte superiore del robot. C'è un cavo dal robot che tutto ciò che devi fare è collegare al lato del Raspberry Pi.
Il passaggio successivo consiste nel connettere il robot al computer in modo da poter eseguire i comandi che il robot deve eseguire. La prima cosa che devi fare è connettere il tuo computer alla rete wireless che il tuo roomba sta creando. Ora, si consiglia di utilizzare l'icona Imposta percorso in MATLAB per impostare il percorso in modo da poter utilizzare le funzioni nella casella degli strumenti Roomba da MATLAB. Ogni volta che inizi e termini l'utilizzo con il robot, devi eseguire un "Saluto con due dita" ripristinando il robot, il che significa che tieni premuti i pulsanti dock e spot per dieci secondi fino a quando la luce si affievolisce indicando di rilasciare. Hai avuto successo con questo hard reset se senti il robot suonare una scala corta. Successivamente devi connetterti a roomba usando una riga di codice come questa "r=roomba(x)" dove 'x' è il numero designato al robot che hai.
Infine, devi scaricare MATLAB mobile su qualsiasi dispositivo mobile che utilizzerai per questo progetto e questa applicazione è disponibile su dispositivi Android e Apple. Una volta installata l'applicazione, dovrai effettuare il login utilizzando le tue credenziali. Quindi è necessario collegare questo dispositivo al computer, utilizzando la scheda denominata "Altro" -> quindi fare clic su "Impostazioni" -> quindi fare clic su "Aggiungi un computer" questo dovrebbe far apparire la schermata mostrata nelle immagini sopra. Dopo aver visto questo il il prossimo passo che devi compiere è semplicemente collegare e chugging le informazioni che richiede. Una volta connesso con successo, sarai in grado di chiamare le funzioni che definisci sul tuo computer sul tuo telefono per controllare il tuo robot.
Passaggio 3: creazione logica di un codice MATLAB per utilizzare i sensori
Il codice sarà più facile da creare quando la maggior parte di esso è all'interno di un ciclo while, in modo che roomba possa aggiornare costantemente i valori validi che sta esaminando. Se c'è un errore, MATLAB visualizzerà un errore e dove appare nel codice, rendendo la risoluzione dei problemi relativamente semplice.
Progettato in r2018a MATLAB, questo codice utilizza i toolbox standard, il toolbox iRobot Create e il toolbox mobile MATLAB. Il roomba utilizzato in questo esempio è designato come 26 e r=roomba(26) deve essere eseguito solo una volta per comunicare completamente con roomba.
Codice:
funzione parkassist(x)if x==1
r=roomba(26) % si connette a roomba
mentre vero
r.setDriveVelocity(.05,.05) % imposta roomba su una velocità di guida più lenta
bump=r.getBumpers % ottiene i dati dai sensori di bump
cliff=r.getCliffSensors % ottiene i dati dai sensori di dislivello
light=r.getLightBumpers % ottiene i dati dai sensori di urto luminoso
img=r.getImage;% legge la telecamera dal robot
red_mean = mean(mean(img(:,:, 1))) % legge la quantità media di pixel rossi
green_mean = mean(mean(img(:,:, 2))) % legge la quantità media di pixel verdi
blue_mean = mean(mean(img(:,:, 3))) % legge la quantità media di pixel blu
if bump.front == 1 %legge i sensori di urto anteriori
r.stop %ferma roomba
msgbox('Path Obscured!', 'Parking Assistant Message') %visualizza il messaggio che dice che il percorso è oscurato break % termina il ciclo
altrimenti se media_verde >150
r.stop %ferma roomba
cont = questdlg('Continue?', 'Path Completed') %visualizza la casella delle domande che chiede di continuare
se cont == 'Sì'
parkassist(1) %riavvia il codice
altro
fine
break % termina il ciclo
altrimenti se red_mean > 140
r.turnAngle(45) %ruota roomba di 45 gradi
r.timeStart % avvia un contatore di tempo
mentre vero
r.setDriveVelocity(.05,.05) %imposta la velocità del roomba
time=r.timeGet % assegna l'ora a una variabile
bump=r.getBumpers % ottiene i dati dai sensori di bump
cliff=r.getCliffSensors % ottiene i dati dai sensori di dislivello
light=r.getLightBumpers % ottiene i dati dai sensori di urto luminoso
img=r.getImage;% legge la telecamera dal robot
red_mean = mean(mean(img(:,:, 1))) % legge la quantità media di pixel rossi
green_mean = mean(mean(img(:,:, 2))) % legge la quantità media di pixel verdi
blue_mean = mean(mean(img(:,:, 3))) % legge la quantità media di pixel blu
se blue_mean > 120
r.moveDistance(-0.01) %sposta il roomba indietro di una distanza impostata songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % riproduce una scala musicale crescente
msgbox('Water Found!', 'Parking Assistant Message') % visualizza un messaggio che dice che è stata trovata acqua r.turnAngle(-80) %ruota roomba di 80 gradi
break % termina il loop di corrente
elseif light.rightFront > 25 || light.leftFront > 25% legge i sensori di urto luminoso
r.moveDistance(-0.01) % sposta il roomba indietro di una distanza impostata
r.turnAngle(-35) % ruota il roomba di 35 gradi
interruzione % termina il ciclo di corrente
elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %legge entrambi i sensori di dislivello
r.moveDistance(-0.1) % sposta roomba indietro di una distanza impostata
r.turnAngle(-80) %ruota roomba di 80 gradi
break % termina il loop di corrente
altrimenti tempo >= 3
r.stop %ferma roomba
contin=questdlg('Stazione libera, continuare?', 'Messaggio assistente parcheggio') %chiede se il roomba deve continuare se contin == 'Sì'
r.turnAngle(-90) % ruota il roomba di 90 gradi
parkassist(1) %riavvia la funzione
altro
r.stop % ferma il roomba
fine
altro
fine
fine
elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %legge entrambi i sensori di dislivello
r.moveDistance(-0.1) %sposta roomba indietro di una distanza impostata
r.turnAngle(-90) %ruota roomba di 90 gradi
elseif cliff.rightFront < 2500 %legge il sensore di dislivello destro
r.turnAngle(-5) %ruota leggermente il roomba nella direzione opposta al sensore di dislivello
elseif cliff.leftFront < 2500 %legge il sensore di dislivello sinistro
r.turnAngle(5) %ruota leggermente il roomba nella direzione opposta al sensore di dislivello
altro
fine
fine
fine
Passaggio 4: test del codice e del robot
Dopo che il codice è stato sviluppato, il passo successivo è stato testare il codice e il robot. Poiché nel codice è possibile effettuare molte regolazioni diverse, come l'angolo di rotazione del robot, la velocità di spostamento e le soglie per ciascun colore, il modo migliore per calcolare questi valori per il robot è testare loro e cambia mentre procedi. Per ogni giornata lavorativa che abbiamo avuto, cambiavamo costantemente questi valori poiché alcuni di essi si basano sull'ambiente in cui opera il tuo robot. Il modo migliore che abbiamo trovato è stato quello di posizionare il roomba sul percorso che desideri che seguisse e di avere una barriera abbastanza alta in modo che la fotocamera non possa rilevare i colori che non si desidera. Il prossimo passo è lasciarlo funzionare e mostrargli i colori che desideri, quando vuoi che completi quell'attività. Mentre procedi, se vedi un problema, la cosa migliore da fare è spingere il paraurti anteriore, facendolo fermare, quindi modificare il parametro con cui hai avuto problemi.
Passaggio 5: riconoscimento dell'errore
Con ogni progetto completato, ci sono sempre fonti di errore. Per noi, abbiamo riscontrato un errore con il semplice fatto che il robot non è preciso con l'angolo di rotazione, quindi se gli dici di ruotare di 45 gradi non sarà esatto. Un'altra fonte di errore per noi è stata che a volte il robot non funziona correttamente e lo hai ripristinato prima che funzioni di nuovo. L'ultima principale fonte di errore per noi era che lo stesso codice non avrebbe avuto lo stesso effetto su robot diversi, quindi potresti dover essere paziente con esso e adattarti di conseguenza.
Passaggio 6: conclusione
Ora hai tutti gli strumenti per giocare con il tuo roomba, il che significa che puoi manipolare il codice in qualsiasi modo desideri raggiungere gli obiettivi che desideri. Questa dovrebbe essere la parte migliore della tua giornata, quindi divertiti e guida in sicurezza!
Consigliato:
Arduino Parking Assistant - Parcheggia la tua auto nel posto giusto ogni volta: 5 passaggi (con immagini)
Arduino Parking Assistant - Parcheggia la tua auto nel posto giusto ogni volta: in questo progetto, ti mostrerò come costruire il tuo assistente di parcheggio usando un Arudino. Questo assistente di parcheggio misura la distanza dalla tua auto e ti guida a parcheggiarla nel punto corretto utilizzando un display LCD e un LED, che progressivamente
Arduino Smart Parking: 4 passaggi
Arduino Smart Parking: Bill Blankenship, Willam Bailey, Hannah HargroveCon l'uso di una scheda Arduino, il nostro gruppo è riuscito a creare un sistema che consentisse ai sensori di luce di rilevare quando un'auto occupava uno spazio o se lo spazio è libero. Dopo sessantotto righe, e
Arduino Parking Assistant: 17 passaggi (con immagini)
Arduino Parking Assistant: quelli di noi che hanno piccoli garage conoscono la frustrazione di parcheggiare un po' troppo dentro o un po' troppo fuori e non essere in grado di camminare intorno al veicolo. Di recente abbiamo acquistato un veicolo più grande e deve essere parcheggiato perfettamente in garage per
MIDI Pod-Pal: 4 passaggi
MIDI Pod-Pal: ***AGGIORNAMENTO 22/04/'21****** Ho aggiunto uno schema completo che mostra tutti i cablaggi per aiutare nella costruzione.***Non entrerò in una quantità ridicola di profondità qui sulla parte build, la mia intenzione era quella di mostrare un altro esempio di costruzione di un MI basato su Arduino
Garage Parking Helper con Arduino: 5 passaggi (con immagini)
Garage Parking Helper con Arduino: la sfidaQuando parcheggio nel mio garage lo spazio è molto limitato. Veramente. La mia auto (un monovolume familiare) è circa 10 cm più corta dello spazio disponibile. Ho i sensori di parcheggio nella mia macchina ma sono molto limitati: sotto i 20 cm mostrano l'allarme rosso quindi è