Sommario:

Mars Roomba: 6 passaggi
Mars Roomba: 6 passaggi

Video: Mars Roomba: 6 passaggi

Video: Mars Roomba: 6 passaggi
Video: 16 Minute Dance Workout - 3 Dances, 6 Songs - Hips, Knees and Footwork 2024, Luglio
Anonim
Mars Roomba
Mars Roomba

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

La dichiarazione del problema
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

Telecomando Bluetooth
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

Riconoscimento dell'impatto
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

Riconoscimento della vita
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: