Indholdsfortegnelse:

Mars Roomba: 6 trin
Mars Roomba: 6 trin

Video: Mars Roomba: 6 trin

Video: Mars Roomba: 6 trin
Video: 10 лет на Марсе: Curiosity находит пластиковый мусор! 2024, Juli
Anonim
Mars Roomba
Mars Roomba

Denne instruks vil guide dig i retning af betjening af en Raspberry Pi kontrolleret Roomba vakuumbot. Det operativsystem, vi vil bruge, er via MATLAB.

Trin 1: Forbrugsvarer

Hvad du skal samle for at gennemføre dette projekt:

  • iRobot's Create2 Roomba støvsuger bot
  • Hindbær Pi
  • Hindbær Pi kamera
  • Den nyeste version af MATLAB
  • Roomba -installationsværktøjskassen til MATLAB
  • MATLAB -applikation til en mobilenhed

Trin 2: Problemformuleringen

Problemformuleringen
Problemformuleringen

Vi fik til opgave at bruge MATLAB til at udvikle en rover, der kunne bruges på Mars for at hjælpe forskere med at indsamle planetdata. De funktioner, vi behandlede i vores projekt, var fjernbetjening, genkendelse af genstande, vandgenkendelse, livsgenkendelse og billedbehandling. For at opnå disse bedrifter kodede vi ved hjælp af Roomba -værktøjskassekommandoer til at manipulere de mange funktioner i iRobots Create2 Roomba.

Trin 3: Bluetooth fjernbetjening

Bluetooth fjernbetjening
Bluetooth fjernbetjening

Dette dias vil gennemgå koden for at styre Roombas bevægelse ved hjælp af Bluetooth-funktioner på din smartphone-enhed. For at begynde skal du downloade MATLAB -applikationen til din smartphone og logge ind på din Mathworks -konto. Når du er logget ind, skal du gå til "mere", "indstillinger", og oprette forbindelse til din computer ved hjælp af dens IP -adresse. Når du er tilsluttet, skal du gå tilbage til "mere" og vælge "sensorer". Tryk på den tredje sensor på den øverste værktøjslinje på skærmen, og tryk på start. Nu er din smartphone en fjernbetjening!

Koden er som følger:

mens 0 == 0

pause (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = PhoneData (3);

bump = r.getBumpers;

hvis Side> 80 || Side <-80

r. stop

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

pause

elseif Side> 20 && Side <40

r.turnAngle (-5);

ellers side> 40

r.turnAngle (-25);

ellers side-40

r.turnAngle (5);

elseif Side <-40

r.turnAngle (25);

ende

hvis Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

ende

ende

Trin 4: Impact Recognition

Virkningsgenkendelse
Virkningsgenkendelse

En anden funktion, som vi implementerede, var at registrere Roomba's indvirkning på et objekt og derefter korrigere dets nuværende sti. For at gøre dette måtte vi bruge betingelser med aflæsninger fra kofangersensorerne til at afgøre, om et objekt blev ramt. Hvis robotten rammer et objekt, vil den bakke op.2 meter og rotere i en vinkel bestemt af hvilken kofanger der blev ramt. Når et element er blevet ramt, vises en menu med ordet "oof".

Koden er vist herunder:

mens 0 == 0

bump = r.getBumpers;

r.setDriveVelocity (.1)

hvis bumps.left == 1

msgbox ('Åh!');

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 ('Åh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

ende

ende

Trin 5: Livsgenkendelse

Livsgenkendelse
Livsgenkendelse

Vi kodede et livsgenkendelsessystem til at læse farverne på objekter foran det. De tre slags liv, som vi kodede for, er planter, vand og rumvæsner. For at gøre dette kodede vi sensorerne for at beregne gennemsnitsværdierne rød, blå, grøn eller hvid. Disse værdier blev sammenlignet med de tærskler, der manuelt blev indstillet for at bestemme den farve, kameraet ser på. Koden ville også plotte stien til objektet og oprette et kort.

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 = middelværdi (middelværdi (img (:,:, 1)));

blue_mean = middelværdi (middelværdi (img (:,:, 3)));

green_mean = middelværdi (middelværdi (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %vil have denne værdi cirka 100

ni_plus_ten = 21;

grøn_grænse = 125;

blue_threshold = 130;

hvid_grænse = 124;

rød_grænse = 115;

mens nine_plus_ten == 21 %grøn - liv

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

r.moveDistance (-. 1)

a = msgbox ('mulig livskilde fundet, placering plottet');

pause (2)

slet (a)

[y2, Fs2] = lydlæsning ('z_speak2.wav');

lyd (y2, Fs2)

pause (2)

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

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

%grundplacering i grønt

i = 5;

pause

andet

ni_plus_ten = 19;

ende

ende

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 ('der er fundet en vandkilde, afbildet placering');

pause (2)

slet (a)

[y3, Fs3] = lydlæsning ('z_speak3.wav');

lyd (y3, Fs3);

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

%spar ('water_img.mat', woder)

%grundplacering i blåt

i = 5;

pause

andet

ni_plus_ten = 19;

ende

ende

ni_plus_ten = 21;

mens nine_plus_ten == 21 %hvid - aliens monkaS

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

[y5, Fs5] = lydlæsning ('z_speak5.wav');

lyd (y5, Fs5);

pause (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = lydlæsning ('z_scream.mp3');

lyd (ys, Fss);

pause (3)

r. stop

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

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

i = 5;

pause

andet

ni_plus_ten = 19;

ende

ende

hvis jeg == 5

a = 1; %drejer vinkel

t = 9; %afslutter stor sløjfe

i = 0;

ende

ende

Trin 6: Kør det

Når al koden er skrevet, kombineres det hele til en fil og voila! Din Roomba -bot vil nu være fuldt funktionsdygtig og fungere som annonceret! Bluetooth -kontrollen skal dog enten være i en separat fil eller adskilt fra resten af koden med %%.

Nyd at bruge din robot !!

Anbefalede: