Sommario:
- Passaggio 1: materiali di consumo
- Passaggio 2: la dichiarazione del problema
- Passaggio 3: telecomando Bluetooth
- Passaggio 4: riconoscimento dell'impatto
- Passaggio 5: riconoscimento della vita
- Passaggio 6: eseguilo
Video: Mars Roomba: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo Instructable ti guiderà nelle direzioni di funzionamento di un robot aspirapolvere Roomba controllato da Raspberry Pi. Il sistema operativo che utilizzeremo è tramite MATLAB.
Passaggio 1: materiali di consumo
Cosa dovrai raccogliere per realizzare questo progetto:
- Robot per aspirapolvere Create2 Roomba di iRobot
- Lampone Pi
- Fotocamera Raspberry Pi
- L'ultima versione di MATLAB
- La cassetta degli attrezzi di installazione di Roomba per MATLAB
- Applicazione MATLAB per un dispositivo cellulare
Passaggio 2: la dichiarazione del problema
Siamo stati incaricati di utilizzare MATLAB per sviluppare un rover che potrebbe essere utilizzato su Marte per aiutare gli scienziati a raccogliere dati sul pianeta. Le funzioni che abbiamo affrontato nel nostro progetto erano il controllo remoto, il riconoscimento dell'impatto degli oggetti, il riconoscimento dell'acqua, il riconoscimento della vita e l'elaborazione delle immagini. Per realizzare queste imprese, abbiamo codificato utilizzando i comandi della casella degli strumenti di Roomba per manipolare le numerose funzioni di Create2 Roomba di iRobot.
Passaggio 3: telecomando Bluetooth
Questa diapositiva guiderà attraverso il codice per controllare il movimento di Roomba utilizzando le funzionalità Bluetooth del tuo dispositivo smartphone. Per iniziare, scarica l'applicazione MATLAB sul tuo smartphone e accedi al tuo account Mathworks. Una volta effettuato l'accesso, vai su "altro", "impostazioni" e connettiti al tuo computer utilizzando il suo indirizzo IP. Una volta connesso, torna su "altro" e seleziona "sensori". Tocca il terzo sensore nella barra degli strumenti in alto sullo schermo e tocca Start. Ora il tuo smartphone è un telecomando!
Il codice è il seguente:
mentre 0 == 0
pausa(.5)
PhoneData = M. Orientamento;
Azi = DatiTelefono(1);
Passo = DatiTelefono(2);
Side = PhoneData(3);
bumps = r.getBumpers;
se Lato>80 || Lato<-80
r.stop
r.beep('C, E, G, C^, G, E, C')
rottura
elseif Side>20 && Side<40
r.turnAngle(-5);
altrimenti se Lato>40
r.turnAngle(-25);
altrimenti Lato-40
r.angolo di rotazione(5);
altrimenti se Lato <-40
r.angolo di svolta(25);
fine
se Pitch >10 && Pitch<35
r.moveDistanza(.03)
elseif Passo>-35 && Passo<-10
r.moveDistanza(-.03)
fine
fine
Passaggio 4: riconoscimento dell'impatto
Un'altra funzione che abbiamo implementato è stata quella di rilevare l'impatto di Roomba su un oggetto e quindi correggere il suo percorso attuale. Per fare ciò, abbiamo dovuto utilizzare i condizionali con le letture dei sensori del paraurti per determinare se un oggetto è stato colpito. Se il robot colpisce un oggetto, indietreggerà di 0,2 metri e ruoterà con un angolo determinato da quale paraurti è stato colpito. Una volta che un elemento è stato colpito, viene visualizzato un menu che mostra la parola "oof".
Il Codice è mostrato di seguito:
mentre 0 == 0
bumps = r.getBumpers;
r.setDriveVelocity(.1)
se urti.sinistra == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.angolo di virata (-35)
r.setDriveVelocity(.2)
elseif bumps.front == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.angolo di virata(90)
r.setDriveVelocity(.2)
elseif bumps.right == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.angolo di virata(35)
r.setDriveVelocity(.2)
elseif bumps.leftWheelDrop ==1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.angolo di virata (-35)
r.setDriveVelocity(.2)
elseif bumps.rightWheelDrop ==1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.angolo di virata(35)
r.setDriveVelocity(.2)
fine
fine
Passaggio 5: riconoscimento della vita
Abbiamo codificato un sistema di riconoscimento della vita per leggere i colori degli oggetti davanti ad esso. I tre tipi di vita per cui abbiamo codificato sono le piante, l'acqua e gli alieni. Per fare ciò, abbiamo codificato i sensori per calcolare i valori medi di rosso, blu, verde o bianco. Questi valori sono stati confrontati con le soglie impostate manualmente per determinare il colore che la telecamera sta guardando. Il codice traccia anche il percorso dell'oggetto e crea una mappa.
Il codice è il seguente:
t = 10;
io = 0;
mentre t == 10
img = r.getImage; imshow(img)
pausa(0.167)
io = io + 1;
red_mean = mean(mean(img(:,:, 1)));
blue_mean = mean(mean(img(:,:, 3)));
green_mean = mean(mean(img(:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; % vogliono questo valore circa 100
nove_più_dieci = 21;
soglia_verde = 125;
blue_threshold = 130;
white_threshold = 124;
red_threshold = 115;
mentre nine_plus_ten == 21 %verde - vita
if media_verde > soglia_verde && media_blu < soglia_blu && media_rossa < soglia_rossa
r.moveDistanza(-.1)
a = msgbox('possibile fonte di vita trovata, posizione tracciata');
pausa(2)
cancellare(a)
[y2, Fs2] =audioread('z_speak2.wav');
suono (y2, Fs2)
pausa(2)
%pianta = r.getImage; %imshow(pianta);
%save('plant_img.mat', pianta');
% posizione della trama in verde
io = 5;
rottura
altro
nove_più_dieci = 19;
fine
fine
nove_più_dieci = 21;
mentre nine_plus_ten == 21 %blue - woder
if media_blu > soglia_blu && media_verde < soglia_verde && media_bianca < soglia_bianca && media_rossa < soglia_rossa
r.moveDistanza(-.1)
a = msgbox('è stata trovata una fonte d'acqua, posizione tracciata');
pausa(2)
cancellare(a)
[y3, Fs3] =audioread('z_speak3.wav');
suono(y3, Fs3);
%woder = r.getImage; %imshow(woder)
%save('water_img.mat', woder)
% posizione della trama in blu
io = 5;
rottura
altro
nove_più_dieci = 19;
fine
fine
nove_più_dieci = 21;
mentre nine_plus_ten == 21 %bianco - alieni monacoS
if white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold
[y5, Fs5] =audioread('z_speak5.wav');
suono (y5, Fs5);
pausa(3)
r.setDriveVelocity(0,.5)
[ys, Fss] =audioread('z_scream.mp3');
suono(s, Fss);
pausa(3)
r.stop
% alien = r.getImage; %imshow(alieno);
% save('alien_img.mat', alien);
io = 5;
rottura
altro
nove_più_dieci = 19;
fine
fine
se io == 5
un = 1; % angolo di rotazione
t = 9; %termina il grande ciclo
io = 0;
fine
fine
Passaggio 6: eseguilo
Dopo che tutto il codice è stato scritto, combinalo tutto in un unico file e voilà! Il tuo bot Roomba sarà ora completamente funzionante e funzionerà come pubblicizzato! Tuttavia, il controllo Bluetooth dovrebbe essere in un file separato o separato dal resto del codice con %%.
Divertiti a usare il tuo robot!!
Consigliato:
Trasformare il Roomba in un Mars Rover: 5 passaggi
Trasformare il tuo Roomba in un Mars Rover:
Mars Rover con Raspberry Pi: 5 passaggi
Mars Rover con Raspberry Pi: cari tutti grandi studenti, sono sempre curioso di conoscere il rover su Marte, con 6 ruote che possono andare su tutta la superficie di Marte ed esplorare le cose dalla Terra. Voglio anche esplorare la cosa sedendomi sul mio laptop. Quindi ora penso che sia il momento giusto per farlo e
Raspberry Pi - Mars Rover autonomo con tracciamento di oggetti OpenCV: 7 passaggi (con immagini)
Raspberry Pi - Mars Rover autonomo con tracciamento di oggetti OpenCV: alimentato da un Raspberry Pi 3, riconoscimento di oggetti Open CV, sensori a ultrasuoni e motori CC con riduttore. Questo rover può tracciare qualsiasi oggetto per cui è addestrato e muoversi su qualsiasi terreno
Mars Roomba Project UTK: 4 passaggi
Mars Roomba Project UTK: DISCLAIMER: FUNZIONA SOLO SE IL ROOMBA È CONFIGURATO IN UN MODO SPECIFICO, QUESTO ISTRUZIONI È STATO CREATO E DESTINATO AD ESSERE UTILIZZATO DA STUDENTI E FACOLTÀ DELL'UNIVERSITÀ DEL TENNESSEE Questo codice viene utilizzato per configurare un Roomba per l'esecuzione locale scritto e s
IRobot Create-Mars Expedition Rover Mark I: 4 passaggi
IRobot Create-Mars Expedition Rover Mark I: questa istruzione ti insegnerà come configurare iRobot Create utilizzando la codifica MatLab. Il tuo robot avrà la capacità di cercare minerali distinguendo forme, manovrare terreni accidentati attraverso l'uso di sensori di dislivello e ha la capacità