Spisu treści:
- Krok 1: Materiały eksploatacyjne
- Krok 2: Stwierdzenie problemu
- Krok 3: Zdalne sterowanie Bluetooth
- Krok 4: Rozpoznawanie wpływu
- Krok 5: Rozpoznawanie życia
- Krok 6: Uruchom to
Wideo: Mars Roomba: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Ten instruktaż poprowadzi Cię w kierunku obsługi bota próżniowego Roomba sterowanego przez Raspberry Pi. System operacyjny, którego będziemy używać, to MATLAB.
Krok 1: Materiały eksploatacyjne
Co będziesz musiał zebrać, aby zrealizować ten projekt:
- Robot odkurzający iRobot Create2 Roomba
- Malina Pi
- Kamera Raspberry Pi
- Najnowsza wersja MATLAB
- Zestaw narzędzi do instalacji robota Roomba dla MATLAB
- Aplikacja MATLAB na urządzenie komórkowe
Krok 2: Stwierdzenie problemu
Otrzymaliśmy zadanie wykorzystania MATLAB do opracowania łazika, który mógłby być używany na Marsie, aby pomóc naukowcom w gromadzeniu danych o planecie. Funkcje, które zajęliśmy się w naszym projekcie, obejmowały zdalne sterowanie, rozpoznawanie wpływu obiektów, rozpoznawanie wody, rozpoznawanie życia i przetwarzanie obrazu. Aby osiągnąć te wyczyny, zakodowaliśmy za pomocą poleceń z zestawu narzędzi Roomba, aby manipulować wieloma funkcjami iRobot Create2 Roomba.
Krok 3: Zdalne sterowanie Bluetooth
Ten slajd przejdzie przez kod, aby sterować ruchem robota Roomba za pomocą funkcji Bluetooth Twojego smartfona. Aby rozpocząć, pobierz aplikację MATLAB na swój smartfon i zaloguj się na swoje konto Mathworks. Po zalogowaniu przejdź do „więcej”, „ustawienia” i połącz się z komputerem za pomocą jego adresu IP. Po połączeniu wróć do „więcej” i wybierz „czujniki”. Stuknij w trzeci czujnik na górnym pasku narzędzi ekranu i stuknij w Start. Teraz Twój smartfon jest pilotem!
Kod wygląda następująco:
podczas gdy 0 == 0
pauza (.5)
DaneTelefonu = M. Orientacja;
Azi = Dane Telefonu(1);
Skok = Dane Telefonu(2);
Strona = Dane Telefonu(3);
wstrząsy = r.getBumpers;
jeśli strona>80 || Strona <-80
r.stop
r.beep('C, E, G, C^, G, E, C')
przerwa
elseif Bok>20 i Bok<40
r.turnAngle(-5);
elseif Strona>40
r.turnAngle(-25);
elseif Side-40
r.turnAngle(5);
strona elseif <-40
r.turnAngle(25);
kończyć się
jeśli skok > 10 i skok <35
r.moveDistance(.03)
elseif Skok>-35 && Skok <-10
r.moveDistance(-.03)
kończyć się
kończyć się
Krok 4: Rozpoznawanie wpływu
Kolejną funkcją, którą wdrożyliśmy, było wykrywanie uderzenia robota Roomba w obiekt, a następnie korygowanie jego aktualnej ścieżki. Aby to zrobić, musieliśmy użyć warunków warunkowych z odczytami z czujników zderzaka, aby określić, czy obiekt został uderzony. Jeśli robot uderzy w obiekt, cofnie się o 0,2 metra i obróci się pod kątem określonym przez uderzony zderzak. Po trafieniu w element pojawia się menu wyświetlające słowo „oof”.
Kod pokazano poniżej:
podczas gdy 0 == 0
wstrząsy = r.getBumpers;
r.setDriveVelocity(.1)
jeśli bumps.left == 1
msgbox('Oof!');
r.moveDistance(-0,2)
r.setTurnVelocity(.2)
r.turnAngle(-35)
r.setDriveVelocity(.2)
elseif uderzenia.przód == 1
msgbox('Oof!');
r.moveDistance(-0,2)
r.setTurnVelocity(.2)
kąt obrotu(90)
r.setDriveVelocity(.2)
elseif bumps.right == 1
msgbox('Oof!');
r.moveDistance(-0,2)
r.setTurnVelocity(.2)
kąt obrotu(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)
kąt obrotu(35)
r.setDriveVelocity(.2)
kończyć się
kończyć się
Krok 5: Rozpoznawanie życia
Zakodowaliśmy system rozpoznawania życia, który odczytywał kolory obiektów przed nim. Trzy rodzaje życia, które zakodowaliśmy, to rośliny, woda i kosmici. W tym celu zakodowaliśmy czujniki tak, aby obliczały średnie wartości koloru czerwonego, niebieskiego, zielonego lub białego. Wartości te zostały porównane z progami, które zostały ręcznie ustawione w celu określenia koloru, na który patrzy kamera. Kod wykreśliłby również ścieżkę do obiektu i stworzył mapę.
Kod wygląda następująco:
t = 10;
i = 0;
podczas gdy t == 10
img = r.getImage; pokaż(obraz)
pauza (0,167)
ja = ja + 1;
czerwona_średnia = średnia(średnia(img(:,:, 1)));
niebieska_średnia = średnia(średnia(img(:,:, 3)));
zielona_średnia = średnia(średnia(img(:,:, 2)));
biała_średnia = (niebieska_średnia + zielona_średnia + czerwona_średnia) / 3; % chcesz tę wartość ok. 100
dziewięć plus dziesięć = 21;
zielony_próg = 125;
niebieski_próg = 130;
biały_próg = 124;
czerwony_próg = 115;
podczas gdy nine_plus_ten == 21% zielony - życie
jeśli zielona_średnia > zielona_próg && niebieska_średnia < niebieska_próg && czerwona_średnia < czerwona_próg
r.moveDistance(-.1)
a = msgbox('znaleziono możliwe źródło życia, wykreślono lokalizację');
pauza(2)
usuń(a)
[y2, Fs2] =audioread('z_speak2.wav');
dźwięk(y2, Fs2)
pauza(2)
%roślina = r.getImage; %imshow(roślina);
%save('roślina_img.mat', roślina');
%wykreśl lokalizację na zielono
i = 5;
przerwa
w przeciwnym razie
dziewięć_plus_dziesięć = 19;
kończyć się
kończyć się
dziewięć_plus_dziesięć = 21;
podczas gdy nine_plus_ten == 21% niebieski - woder
jeśli niebieska_średnia > niebieska_próg && zielona_średnia < zielona_próg && biała_średnia < biała_próg && czerwona_średnia < czerwona_próg
r.moveDistance(-.1)
a = msgbox('znaleziono źródło wody, nakreślono lokalizację');
pauza(2)
usuń(a)
[y3, Fs3] =audioread('z_speak3.wav');
dźwięk(y3, Fs3);
%woder = r.getImage; %imshow(woder)
%save('water_img.mat', woda)
%lokacja wydruku na niebiesko
i = 5;
przerwa
w przeciwnym razie
dziewięć_plus_dziesięć = 19;
kończyć się
kończyć się
dziewięć_plus_dziesięć = 21;
podczas gdy nine_plus_ten == 21%biały - obcy monkaS
jeśli biała_średnia > biały_próg && niebieska_średnia < niebieski_próg && zielona_średnia < zielona_próg
[y5, Fs5] =audioread('z_speak5.wav');
dźwięk(y5, Fs5);
pauza(3)
r.setDriveVelocity(0,.5)
[ys, Fss] =audioread('z_scream.mp3');
dźwięk (ys, Fss);
pauza(3)
r.stop
% obcy = r.getImage; %imshow(obcy);
% save('alien_img.mat', obcy);
i = 5;
przerwa
w przeciwnym razie
dziewięć_plus_dziesięć = 19;
kończyć się
kończyć się
jeśli ja == 5
a = 1; %skręt kąta
t = 9; %zakończ dużą pętlę
i = 0;
kończyć się
kończyć się
Krok 6: Uruchom to
Po napisaniu całego kodu połącz go w jeden plik i voila! Twój bot Roomba będzie teraz w pełni funkcjonalny i działał zgodnie z reklamą! Jednak formant Bluetooth powinien znajdować się w osobnym pliku lub oddzielony od reszty kodu za pomocą %%.
Miłego korzystania z robota!!
Zalecana:
Mars Rover przy użyciu Raspberry Pi: 5 kroków
Łazik marsjański korzystający z Raspberry Pi: Drogi wszystkim wspaniałym uczniu, zawsze jestem ciekaw, aby dowiedzieć się o łaziku marsjańskim, posiadającym 6 kół, które mogą jeździć po całej powierzchni Marsa i odkrywać rzeczy z Ziemi. Chcę też to zbadać, siedząc na laptopie. Więc teraz uważam, że nadszedł właściwy czas, aby to zrobić i
Roomba Bot Bulider: 5 kroków (ze zdjęciami)
Roomba Bot Bulider: Bot Budowniczy to Roomba z „grabbersami” przymocowany z przodu będzie mógł przesuwać przedmioty dookoła. Kod z nim jest ustawiony tak, aby rejestrować pierwszy ruch za pomocą pola GUI, które można kontrolować za pomocą jednego kliknięcia myszy. Po
Roomba sterowana przez MATLAB: 5 kroków
Roomba sterowana przez MATLAB: Celem tego projektu jest wykorzystanie MATLAB oraz zmodyfikowanego programowalnego robota iRobot. Nasza grupa połączyła nasze umiejętności kodowania, aby stworzyć skrypt MATLAB, który wykorzystuje wiele funkcji iRobota, w tym czujniki klifu, czujnik zderzaka
Projekt Mars Roomba UTK: 4 kroki
Projekt Mars Roomba UTK: OŚWIADCZENIE: TO DZIAŁA TYLKO JEŚLI ROOMBA JEST KONFIGUROWANA W BARDZO SZCZEGÓLNY SPOSÓB, TA INSTRUKCJA ZOSTAŁA STWORZONA I PRZEZNACZONA DO UŻYWANIA PRZEZ STUDENTÓW I WYDZIAŁÓW NA UNIWERSYTECIE TENESSEE Ten kod służy do konfigurowania robota Roomba do lokalnego działania napisane i s
IRobot Create-Mars Expedition Rover Mark I: 4 kroki
IRobot Create-Mars Expedition Rover Mark I: Ta instrukcja nauczy Cię, jak skonfigurować iRobot Create za pomocą kodowania MatLab. Twój robot będzie mógł wyszukiwać minerały poprzez rozróżnianie kształtów, manewrować nierównym terenem za pomocą czujników klifowych i ma zdolność