INHOUDSOPGAWE:

Mars Roomba: 6 stappe
Mars Roomba: 6 stappe

Video: Mars Roomba: 6 stappe

Video: Mars Roomba: 6 stappe
Video: Спасение новорожденного котенка. Полная версия (English subtitles) / SANI vlog 2024, November
Anonim
Mars Roomba
Mars Roomba

Hierdie instruksie sal u lei in die aanwysings vir die gebruik van 'n Raspberry Pi -beheerde Roomba -vakuumbot. Die bedryfstelsel wat ons gaan gebruik, is deur MATLAB.

Stap 1: Voorrade

Wat u moet versamel om hierdie projek uit te voer:

  • iRobot's Create2 Roomba stofsuier bot
  • Framboos Pi
  • Framboos Pi kamera
  • Die nuutste weergawe van MATLAB
  • Die Roomba -gereedskapskis vir MATLAB
  • MATLAB -toepassing vir 'n mobiele toestel

Stap 2: Die probleemstelling

Die probleemstelling
Die probleemstelling

Ons het die taak gekry om MATLAB te gebruik om 'n rover te ontwikkel wat op Mars gebruik kan word om wetenskaplikes te help om planeetdata te versamel. Die funksies wat ons in ons projek aangespreek het, was afstandsbediening, objek -impakherkenning, waterherkenning, lewensherkenning en beeldverwerking. Om hierdie prestasies te behaal, het ons gekodeer met behulp van die Roomba -gereedskapskisopdragte om die vele funksies van iRobot's Create2 Roomba te manipuleer.

Stap 3: Bluetooth -afstandsbediening

Bluetooth afstandsbediening
Bluetooth afstandsbediening

Hierdie skyfie gaan deur die kode om die beweging van Roomba te beheer met behulp van die Bluetooth-funksies van u slimfoon. Laai die MATLAB -toepassing op u slimfoon af en meld by u Mathworks -rekening aan. Nadat u aangemeld het, gaan na "meer", "instellings" en maak verbinding met u rekenaar met behulp van sy IP -adres. Sodra dit gekoppel is, gaan terug na "meer" en kies "sensors". Tik op die derde sensor in die boonste werkbalk van die skerm en tik op Start. Nou, u slimfoon is 'n afstandsbediening!

Die kode is soos volg:

terwyl 0 == 0

pouse (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Kant = PhoneData (3);

stampe = r.getBumpers;

as kant> 80 || Sy <-80

r.stop

r.biep ('C, E, G, C^, G, E, C')

breek

andersif Kant> 20 && Kant <40

r.turnAngle (-5);

anders kant> 40

r.turnAngle (-25);

anders as Side-40

r.turnAngle (5);

anders kant <-40

r.turnAngle (25);

einde

as Pitch> 10 && Pitch <35

r.moveDistance (.03)

anders as Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

einde

einde

Stap 4: Impakherkenning

Impakherkenning
Impakherkenning

'N Ander funksie wat ons geïmplementeer het, was om die impak van die Roomba op 'n voorwerp op te spoor en dan die huidige pad daarvan reg te stel. Om dit te kan doen, moes ons voorwaardes met die lesings van die buffersensors gebruik om te bepaal of 'n voorwerp getref word. As die robot 'n voorwerp raak, sal hy 'n rugsteun van 0,2 meter maak en draai teen 'n hoek wat bepaal word deur watter buffer getref is. Sodra 'n item getref is, verskyn 'n spyskaart met die woord "oof".

Die kode word hieronder getoon:

terwyl 0 == 0

stampe = r.getBumpers;

r.setDriveVelocity (.1)

as bults.links == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

einde

einde

Stap 5: Lewensherkenning

Lewensherkenning
Lewensherkenning

Ons het 'n lewensherkenningstelsel gekodeer om die kleure van voorwerpe voor dit te lees. Die drie soorte lewens waarvoor ons gekodeer het, is plante, water en vreemdelinge. Om dit te doen, het ons die sensors gekodeer om die gemiddelde waardes van rooi, blou, groen of wit te bereken. Hierdie waardes is vergelyk met die drempels wat met die hand gestel is om die kleur te bepaal waarna die kamera kyk. Die kode sal ook die pad na die voorwerp teken en 'n kaart skep.

Die kode is soos volg:

t = 10;

ek = 0;

terwyl t == 10

img = r.getImage; wys (img)

pouse (0.167)

i = i + 1;

red_mean = gemiddelde (gemiddelde (img (:,:, 1)));

blue_mean = gemiddelde (gemiddelde (img (:,:, 3))));

green_mean = gemiddelde (gemiddelde (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %wil hierdie waarde ongeveer 100 hê

nege_plus_ten = 21;

groen_drempel = 125;

blou_drempel = 130;

wit_drempel = 124;

rooi_drempel = 115;

terwyl nine_plus_ten == 21 %groen - lewe

as green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('moontlike lewensbron gevind, ligging geteken');

pouse (2)

skrap (a)

[y2, Fs2] = oudiolees ('z_speak2.wav');

klank (y2, Fs2)

pouse (2)

%plant = r.getImage; %imshow (plant);

%bespaar ('plant_img.mat', plant ');

%plot plek in groen

ek = 5;

breek

anders

nege_plus_ten = 19;

einde

einde

nege_plus_ten = 21;

terwyl nine_plus_ten == 21 %blou - woder

as blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox (''n bron van water is gevind, ligging is geteken');

pouse (2)

skrap (a)

[y3, Fs3] = oudiolees ('z_speak3.wav');

klank (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%bespaar ('water_img.mat', woder)

%plot plek in blou

ek = 5;

breek

anders

nege_plus_ten = 19;

einde

einde

nege_plus_ten = 21;

terwyl nine_plus_ten == 21 %wit - aliens monkaS

as white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = oudiolees ('z_speak5.wav');

klank (y5, Fs5);

pouse (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = oudiolees ('z_scream.mp3');

klank (ys, Fss);

pouse (3)

r.stop

% uitheemse = r.getImage; %imshow (uitheemse);

% save ('alien_img.mat', alien);

ek = 5;

breek

anders

nege_plus_ten = 19;

einde

einde

as ek == 5

a = 1; %draai hoek

t = 9; %beëindig groot lus

ek = 0;

einde

einde

Stap 6: Begin dit

Nadat al die kode geskryf is, kombineer dit alles in een lêer en voila! Jou Roomba -bot sal nou volledig funksioneer en werk soos geadverteer! Die Bluetooth -beheer moet egter in 'n aparte lêer wees of geskei word van die res van die kode met %%.

Geniet die gebruik van u robot !!

Aanbeveel: