Innholdsfortegnelse:

Mars Roomba: 6 trinn
Mars Roomba: 6 trinn

Video: Mars Roomba: 6 trinn

Video: Mars Roomba: 6 trinn
Video: The Blues Brothers (1980) - Everybody Needs Somebody to Love Scene (6/9) | Movieclips 2024, Juli
Anonim
Mars Roomba
Mars Roomba

Denne instruksen vil guide deg i instruksjonene for bruk av en Raspberry Pi -kontrollert Roomba vakuumbot. Operativsystemet vi skal bruke er gjennom MATLAB.

Trinn 1: Rekvisita

Hva du må samle for å gjennomføre dette prosjektet:

  • iRobot's Create2 Roomba støvsuger bot
  • Bringebær Pi
  • Raspberry Pi -kamera
  • Den siste versjonen av MATLAB
  • Roomba installasjonsverktøykasse for MATLAB
  • MATLAB -applikasjon for en mobilenhet

Trinn 2: Problemerklæringen

Problemerklæringen
Problemerklæringen

Vi fikk i oppgave å bruke MATLAB til å utvikle en rover som kan brukes på Mars for å hjelpe forskere med å samle inn planetdata. Funksjonene vi tok for oss i prosjektet vårt var fjernkontroll, gjenkjenning av gjenstander, gjenkjenning av vann, livsgjenkjenning og bildebehandling. For å oppnå disse bragdene, kodet vi ved hjelp av Roomba -verktøykassekommandoene for å manipulere de mange funksjonene i iRobots Create2 Roomba.

Trinn 3: Bluetooth fjernkontroll

Bluetooth fjernkontroll
Bluetooth fjernkontroll

Dette lysbildet vil gå gjennom koden for å kontrollere Roombas bevegelse ved hjelp av Bluetooth-funksjonene til smarttelefonenheten. For å begynne, last ned MATLAB -applikasjonen til smarttelefonen din og logg inn på Mathworks -kontoen din. Når du er logget inn, går du til "mer", "innstillinger" og kobler til datamaskinen din ved hjelp av IP -adressen. Når du er tilkoblet, går du tilbake til "mer" og velger "sensorer". Trykk på den tredje sensoren på den øverste verktøylinjen på skjermen, og trykk på start. Nå er smarttelefonen din en fjernkontroll!

Koden er som følger:

mens 0 == 0

pause (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = PhoneData (3);

støt = r.getBumpers;

hvis side> 80 || Side <-80

r. stopp

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

gå i stykker

elseif Side> 20 && Side <40

r.turnAngle (-5);

annet side> 40

r.turnAngle (-25);

annet side-40

r.turnAngle (5);

elseif Side <-40

r.turnAngle (25);

slutt

hvis Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

slutt

slutt

Trinn 4: Virkningsgjenkjenning

Virkningsgjenkjenning
Virkningsgjenkjenning

En annen funksjon vi implementerte var å oppdage virkningen av Roomba i et objekt og deretter korrigere den nåværende banen. For å gjøre dette måtte vi bruke betingelser med avlesningene fra støtfangersensorene for å avgjøre om et objekt ble truffet. Hvis roboten treffer et objekt, vil den sikkerhetskopiere.2 meter og rotere i en vinkel bestemt av hvilken støtfanger som ble truffet. Når et element har blitt truffet, dukker det opp en meny som viser ordet "oof".

Koden er vist nedenfor:

mens 0 == 0

støt = r.getBumpers;

r.setDriveVelocity (.1)

if bumps.left == 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)

slutt

slutt

Trinn 5: Livsgjenkjenning

Livsgjenkjenning
Livsgjenkjenning

Vi kodet et system for livsgjenkjenning for å lese fargene på objektene foran det. De tre livsstilene vi koder for er planter, vann og romvesener. For å gjøre dette, kodet vi sensorene for å beregne gjennomsnittsverdiene for rødt, blått, grønt eller hvitt. Disse verdiene ble sammenlignet med tersklene som ble satt manuelt for å bestemme fargen som kameraet ser på. Koden vil også plotte banen til objektet og lage et kart.

Koden er som følger:

t = 10;

i = 0;

mens t == 10

img = r.getImage; imshow (img)

pause (0.167)

i = i + 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; %vil ha denne verdien ca 100

ni_plus_ten = 21;

grønn_grense = 125;

blue_threshold = 130;

hvit_grense = 124;

rød_grense = 115;

mens nine_plus_ten == 21 %grønt - liv

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

r.moveDistance (-. 1)

a = msgbox ('mulig livskilde funnet, plassering plottet');

pause (2)

slett (a)

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

lyd (y2, Fs2)

pause (2)

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

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

%tomtsted i grønt

i = 5;

gå i stykker

ellers

ni_plus_ten = 19;

slutt

slutt

ni_plus_ten = 21;

mens nine_plus_ten == 21 %blå - woder

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

r.moveDistance (-. 1)

a = msgbox ('en vannkilde er funnet, plassering plottet');

pause (2)

slett (a)

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

lyd (y3, Fs3);

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

%spare ('water_img.mat', woder)

%tomtplassering i blått

i = 5;

gå i stykker

ellers

ni_plus_ten = 19;

slutt

slutt

ni_plus_ten = 21;

mens nine_plus_ten == 21 %hvite - aliens monkaS

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

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

lyd (y5, Fs5);

pause (3)

r.setDriveVelocity (0,.5)

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

lyd (ys, Fss);

pause (3)

r. stopp

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

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

i = 5;

gå i stykker

ellers

ni_plus_ten = 19;

slutt

slutt

hvis jeg == 5

a = 1; %svinger vinkel

t = 9; %avslutter stor sløyfe

i = 0;

slutt

slutt

Trinn 6: Kjør det

Etter at koden er skrevet, kombinerer du alt i en fil og voila! Roomba -boten din vil nå være fullt funksjonell og fungere som annonsert! Bluetooth -kontrollen bør imidlertid enten være i en egen fil eller atskilt fra resten av koden med %%.

Kos deg med roboten din !!

Anbefalt: