Innehållsförteckning:

Mars Roomba: 6 steg
Mars Roomba: 6 steg

Video: Mars Roomba: 6 steg

Video: Mars Roomba: 6 steg
Video: Крушение речного катера Hableány на реке Дунай. 2024, Juli
Anonim
Mars Roomba
Mars Roomba

Denna instruktionsbok guidar dig i riktningarna för att använda en Raspberry Pi -kontrollerad Roomba vakuumbot. Operativsystemet vi kommer att använda är via MATLAB.

Steg 1: Tillbehör

Vad du behöver samla för att genomföra detta projekt:

  • iRobots Create2 Roomba dammsugare bot
  • Raspberry Pi
  • Raspberry Pi -kamera
  • Den senaste versionen av MATLAB
  • Roomba installerar verktygslåda för MATLAB
  • MATLAB -applikation för en mobil enhet

Steg 2: Problemmeddelandet

Problemmeddelandet
Problemmeddelandet

Vi fick i uppgift att använda MATLAB för att utveckla en rover som kan användas på Mars för att hjälpa forskare att samla in planetdata. Funktionerna som vi tog upp i vårt projekt var fjärrkontroll, objektpåverkansigenkänning, vattenigenkänning, livsigenkänning och bildbehandling. För att uppnå dessa bedrifter kodade vi med hjälp av Roomba -verktygslådekommandon för att manipulera de många funktionerna i iRobots Create2 Roomba.

Steg 3: Bluetooth -fjärrkontroll

Bluetooth fjärrkontroll
Bluetooth fjärrkontroll

Denna bild kommer att gå igenom koden för att styra Roombas rörelse med hjälp av Bluetooth-funktioner på din smartphone-enhet. För att börja, ladda ner MATLAB -applikationen till din smartphone och logga in på ditt Mathworks -konto. När du har loggat in går du till "mer", "inställningar" och ansluter till din dator med dess IP -adress. När du är ansluten, gå tillbaka till "mer" och välj "sensorer". Knacka på den tredje sensorn i skärmens övre verktygsfält och tryck på start. Nu är din smartphone en fjärrkontroll!

Koden är följande:

medan 0 == 0

paus (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Sida = PhoneData (3);

gupp = r.getBumpers;

om sidan> 80 || Sida <-80

r. stopp

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

ha sönder

annarsif sida> 20 && sida <40

r.turnAngle (-5);

annars sidan> 40

r.turnAngle (-25);

annars sidan-40

r.turnAngle (5);

annarsif sida <-40

r.turnAngle (25);

slutet

om Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

slutet

slutet

Steg 4: Impact Recognition

Effektigenkänning
Effektigenkänning

En annan funktion som vi implementerade var att upptäcka påverkan av Roomba i ett objekt och sedan korrigera dess nuvarande väg. För att göra detta måste vi använda villkor med avläsningar från stötfångarsensorerna för att avgöra om ett föremål träffades. Om roboten träffar ett objekt kommer den att backa.2 meter och rotera i en vinkel som bestäms av vilken stötfångare som träffades. När ett objekt har träffats visas en meny som visar ordet "oof".

Koden visas nedan:

medan 0 == 0

gupp = r.getBumpers;

r.setDriveVelocity (.1)

if bumps.left == 1

msgbox ('Oj!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Oj!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Oj!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Oj!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Oj!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

slutet

slutet

Steg 5: Livsigenkänning

Livsigenkänning
Livsigenkänning

Vi kodade ett system för livsigenkänning för att läsa färgerna på föremål framför det. De tre sorters liv som vi kodade för är växter, vatten och utomjordingar. För att göra detta kodade vi sensorerna för att beräkna medelvärdena för rött, blått, grönt eller vitt. Dessa värden jämfördes med trösklarna som manuellt sattes för att bestämma färgen som kameran tittar på. Koden skulle också rita vägen till objektet och skapa en karta.

Koden är följande:

t = 10;

i = 0;

medan t == 10

img = r.getImage; imshow (img)

paus (0,167)

i = i + 1;

red_mean = medelvärde (medelvärde (img (:,:, 1)));

blue_mean = medelvärde (medelvärde (img (:,:, 3)));

green_mean = medelvärde (medelvärde (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %vill ha detta värde cirka 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

röd_tröskel = 115;

medan nine_plus_ten == 21 %grönt - liv

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

r.moveDistance (-. 1)

a = msgbox ('möjlig livskälla hittad, plats plottad');

paus (2)

radera (a)

[y2, Fs2] = ljudläsning ('z_speak2.wav');

ljud (y2, Fs2)

paus (2)

%plant = r.getImage; %imshow (växt);

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

%tomtplats i grönt

i = 5;

ha sönder

annan

nine_plus_ten = 19;

slutet

slutet

nine_plus_ten = 21;

medan nine_plus_ten == 21 %blå - woder

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

r.moveDistance (-. 1)

a = msgbox ('en vattenkälla har hittats, platsen ritad');

paus (2)

radera (a)

[y3, Fs3] = ljudläsning ('z_speak3.wav');

ljud (y3, Fs3);

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

%spara ('water_img.mat', woder)

%tomtplats i blått

i = 5;

ha sönder

annan

nine_plus_ten = 19;

slutet

slutet

nine_plus_ten = 21;

medan nine_plus_ten == 21 %vit - aliens monkaS

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

[y5, Fs5] = ljudläsning ('z_speak5.wav');

ljud (y5, Fs5);

paus (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = ljudläsning ('z_scream.mp3');

ljud (ys, Fss);

paus (3)

r. stopp

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

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

i = 5;

ha sönder

annan

nine_plus_ten = 19;

slutet

slutet

om jag == 5

a = 1; %vänder vinkel

t = 9; %avsluta stor slinga

i = 0;

slutet

slutet

Steg 6: Kör det !

När all koden har skrivits kombinerar du allt till en fil och voila! Din Roomba -bot kommer nu att fungera fullt ut och fungera som annonserat! Bluetooth -kontrollen bör dock antingen vara i en separat fil eller åtskild från resten av koden med %%.

Njut av att använda din robot !!

Rekommenderad: