Sommario:

Roomba Parking Pal: 6 passaggi
Roomba Parking Pal: 6 passaggi

Video: Roomba Parking Pal: 6 passaggi

Video: Roomba Parking Pal: 6 passaggi
Video: ERICK SI È FATTO MALE TOGLIENDO UNA PELLICINA… 💀#shorts 2024, Novembre
Anonim
Roomba Parcheggio Pal
Roomba Parcheggio Pal

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

Materiali
Materiali
Materiali
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

Creazione logica di un codice MATLAB per utilizzare i sensori
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

Testare il codice e il robot
Testare il codice e il robot
Testare il codice e il robot
Testare il codice e il robot
Testare il codice e il robot
Testare il codice e il 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: