Obsah:

Mars Roomba: 6 kroků
Mars Roomba: 6 kroků

Video: Mars Roomba: 6 kroků

Video: Mars Roomba: 6 kroků
Video: Zavřete oči a poslouchejte 😂😂😂 2024, Listopad
Anonim
Mars Roomba
Mars Roomba

Tento Instructable vás provede pokyny k ovládání vakuového robota Roomba ovládaného Raspberry Pi. Operační systém, který budeme používat, je prostřednictvím MATLABu.

Krok 1: Spotřební materiál

Co budete potřebovat k realizaci tohoto projektu:

  • Robot vysavače iRobot Create2 Roomba
  • Raspberry Pi
  • Fotoaparát Raspberry Pi
  • Nejnovější verze MATLABu
  • Sada nástrojů pro instalaci Roomba pro MATLAB
  • MATLAB aplikace pro mobilní zařízení

Krok 2: Prohlášení o problému

Prohlášení o problému
Prohlášení o problému

Měli jsme za úkol použít MATLAB k vývoji roveru, který by mohl být použit na Marsu, aby pomohl vědcům při shromažďování dat o planetách. Funkce, které jsme v našem projektu řešili, byly dálkové ovládání, rozpoznávání nárazů na objekty, rozpoznávání vody, rozpoznávání života a zpracování obrazu. Abychom těchto výkonů dosáhli, zakódovali jsme pomocí příkazů sady nástrojů Roomba manipulaci s mnoha funkcemi iRobot's Create2 Roomba.

Krok 3: Dálkové ovládání Bluetooth

Bluetooth dálkové ovládání
Bluetooth dálkové ovládání

Tento snímek bude procházet kódem k ovládání pohybu robota Roomba pomocí funkcí Bluetooth vašeho chytrého zařízení. Nejprve si stáhněte aplikaci MATLAB do smartphonu a přihlaste se ke svému účtu Mathworks. Po přihlášení přejděte na „více“, „nastavení“a připojte se k počítači pomocí jeho IP adresy. Po připojení se vraťte zpět na „více“a vyberte „senzory“. Klepněte na třetí senzor na horním panelu nástrojů na obrazovce a klepněte na Spustit. Nyní je váš smartphone dálkovým ovládáním!

Kód je následující:

zatímco 0 == 0

pauza (.5)

PhoneData = M. Orientace;

Azi = PhoneData (1);

Rozteč = Data telefonu (2);

Strana = Data telefonu (3);

hrboly = r.getBumpers;

pokud Strana> 80 || Strana <-80

r.stop

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

přestávka

elseif Strana> 20 && Strana <40

r.turnAngle (-5);

elseif Strana> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif Strana <-40

r.turnAngle (25);

konec

pokud Rozteč> 10 && Rozteč <35

r.moveDistance (.03)

elseif Rozteč> -35 && Rozteč <-10

r.moveDistance (-. 03)

konec

konec

Krok 4: Rozpoznání nárazu

Rozpoznávání nárazů
Rozpoznávání nárazů

Další funkcí, kterou jsme implementovali, bylo detekovat dopad Roomby do objektu a poté opravit jeho aktuální cestu. K tomu jsme museli použít podmíněné hodnoty od snímačů nárazníku, abychom zjistili, zda došlo k zasažení objektu. Pokud robot narazí na předmět, zálohuje 0,2 metru a otáčí se v úhlu určeném nárazníkem. Jakmile je položka zasažena, objeví se nabídka se slovem „oof“.

Kód je uveden níže:

zatímco 0 == 0

hrboly = r.getBumpers;

r.setDriveVelocity (.1)

pokud bumps.left == 1

msgbox ('Uff!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Uff!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Uff!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Uff!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Uff!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

konec

konec

Krok 5: Rozpoznání života

Poznání života
Poznání života

Zakódovali jsme systém rozpoznávání života, abychom přečetli barvy objektů před ním. Tři druhy života, pro které jsme kódovali, jsou rostliny, voda a mimozemšťané. Za tímto účelem jsme zakódovali senzory pro výpočet průměrných hodnot červené, modré, zelené nebo bílé. Tyto hodnoty byly porovnány s prahovými hodnotami, které byly ručně nastaveny pro určení barvy, na kterou se fotoaparát dívá. Kód by také vykreslil cestu k objektu a vytvořil mapu.

Kód je následující:

t = 10;

i = 0;

zatímco t == 10

img = r.getImage; imshow (obr.)

pauza (0,167)

i = i + 1;

red_mean = průměr (průměr (obr (:,:: 1)));

blue_mean = průměr (průměr (obrázek (:,:; 3)));

green_mean = průměr (průměr (obrázek (:,:; 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %chce tuto hodnotu přibližně 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

zatímco nine_plus_ten == 21 %zeleně - život

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

r.moveDistance (-. 1)

a = msgbox ('možný zdroj života nalezen, umístění vykresleno');

pauza (2)

odstranit (a)

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

zvuk (y2, Fs2)

pauza (2)

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

%save ('plant_img.mat', závod ');

%umístění pozemku zeleně

i = 5;

přestávka

jiný

nine_plus_ten = 19;

konec

konec

nine_plus_ten = 21;

zatímco nine_plus_ten == 21 %modrá - woder

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

r.moveDistance (-. 1)

a = msgbox ('byl nalezen zdroj vody, umístění vykresleno');

pauza (2)

odstranit (a)

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

zvuk (y3, Fs3);

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

%save ('water_img.mat', woder)

%umístění pozemku modře

i = 5;

přestávka

jiný

nine_plus_ten = 19;

konec

konec

nine_plus_ten = 21;

zatímco nine_plus_ten == 21 %bílý - mimozemšťané monkaS

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

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

zvuk (y5, Fs5);

pauza (3)

r.setDriveVelocity (0,.5)

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

zvuk (ys, Fss);

pauza (3)

r.stop

% alien = r.getImage; %imshow (mimozemšťan);

% save ('alien_img.mat', vetřelec);

i = 5;

přestávka

jiný

nine_plus_ten = 19;

konec

konec

pokud i == 5

a = 1; %úhlu otočení

t = 9; %ukončit velkou smyčku

i = 0;

konec

konec

Krok 6: Spusťte to

Jakmile je celý kód napsán, spojte to všechno do jednoho souboru a voila! Váš robot Roomba bude nyní plně funkční a bude fungovat podle reklamy! Ovládací prvek Bluetooth by však měl být buď v samostatném souboru, nebo oddělen od zbytku kódu pomocí %%.

Užijte si používání svého robota !!

Doporučuje: