Spisu treści:

Roomba Parking Pal: 6 kroków
Roomba Parking Pal: 6 kroków

Wideo: Roomba Parking Pal: 6 kroków

Wideo: Roomba Parking Pal: 6 kroków
Wideo: Ludzie, którzy zamienili się w zwierzęta 😲🤔 2024, Lipiec
Anonim
Roomba Parking
Roomba Parking

Ten projekt wykorzystuje programowalną Roombę iRobot Create, MATLAB r2018a i MATLAB mobile. Korzystając z tych trzech mediów i naszej wiedzy na temat kodowania, zaprogramowaliśmy iRobot Create tak, aby interpretował kolory i wykorzystywał wbudowane czujniki do wykonywania zadań. Ten projekt zależy od komunikacji Raspberry Pi i MATLAB w celu wykonania tych zadań.

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały

1. iRobot Utwórz robota

2. MATLAB r2018a

3. Raspberry Pi

4. Moduł kamery

5. Drukowany w 3D stojak stabilizatora kamery

6. Smartfon z zainstalowanym telefonem komórkowym MATLAB

7. Laptop/komputer z zainstalowanym MATLAB

Krok 2: Połączenie

Ten krok dotyczy podłączenia Raspberry Pi do robota, następnie podłączenia robota do komputera i podłączenia smartfona do komputera.

Najłatwiejszą częścią tego procesu jest podłączenie Raspberry Pi do robota, ponieważ Raspberry Pi jest zamontowane na górze robota. Od robota jest przewód, który wystarczy podłączyć z boku Raspberry Pi.

Następnym krokiem jest podłączenie robota do komputera, aby można było uruchamiać polecenia, które robot ma wykonać. Pierwszą rzeczą, którą musisz zrobić, to podłączyć komputer do sieci bezprzewodowej, którą tworzy Twój Roomba. Teraz zaleca się użycie ikony Ustaw ścieżkę w MATLAB, aby ustawić ścieżkę, aby móc korzystać z funkcji w przyborniku Roomba z MATLAB. Za każdym razem, gdy zaczynasz i kończysz pracę z robotem, musisz wykonać „Salute dwoma palcami” twardy reset robota, co oznacza, że przytrzymujesz przyciski stacji dokującej i punkt przez dziesięć sekund, aż lampka zgaśnie wskazując na zwolnienie. Udało Ci się wykonać ten twardy reset, jeśli usłyszysz, że robot gra krótką skalę. Następnie musisz połączyć się z Roomba za pomocą wiersza kodu takiego jak „r=roomba(x)”, gdzie „x” jest numerem przypisanym do robota, którego masz.

Na koniec musisz pobrać MATLAB mobile na dowolne urządzenie mobilne, z którego będziesz korzystać w tym projekcie, a ta aplikacja jest dostępna zarówno na urządzenia z systemem Android, jak i Apple. Po zainstalowaniu aplikacji będziesz musiał zalogować się przy użyciu swoich danych uwierzytelniających. Następnie należy podłączyć to urządzenie do komputera, korzystając z zakładki „Więcej” -> następnie kliknąć „Ustawienia” -> następnie kliknąć „Dodaj komputer” powinno to wywołać ekran pokazany na powyższych zdjęciach. Następnym krokiem, który musisz przejść, jest po prostu podłączenie i przesłanie żądanych informacji. Po pomyślnym połączeniu będziesz mógł wywoływać funkcje, które zdefiniujesz na swoim komputerze w telefonie, aby sterować robotem.

Krok 3: Logiczne tworzenie kodu MATLAB do korzystania z czujników

Logiczne tworzenie kodu MATLAB do korzystania z czujników
Logiczne tworzenie kodu MATLAB do korzystania z czujników

Kod będzie najłatwiejszy do utworzenia, gdy jego większość znajduje się w pętli while, dzięki czemu Roomba może stale aktualizować prawidłowe wartości, na które patrzy. Jeśli wystąpi błąd, MATLAB wyświetli błąd i miejsce jego pojawienia się w kodzie, dzięki czemu rozwiązywanie problemów jest stosunkowo proste.

Zaprojektowany w r2018a MATLAB, kod ten wykorzystuje standardowe zestawy narzędzi, zestaw narzędzi iRobot Create, a także zestaw narzędzi mobilnych MATLAB. Roomba użyta w tym przykładzie jest oznaczona jako 26, a r=roomba(26) wystarczy uruchomić tylko raz, aby w pełni skomunikować się z Roombą.

Kod:

funkcja parkassist(x)jeśli x==1

r=roomba(26) % łączy się z Roomba

podczas gdy prawda

r.setDriveVelocity(.05,.05) % ustawia wolniejszą prędkość jazdy Roomby

bump=r.getBumpers % pobiera dane z czujników uderzeń

Cliff=r.getCliffSensors % pobiera dane z czujników klifu

light=r.getLightBumpers % pobiera dane z czujników uderzenia światła

img=r.getImage;% odczytuje kamerę z robota

red_mean = mean(mean(img(:,:, 1))) % odczytuje średnią ilość czerwonych pikseli

green_mean = mean(mean(img(:,:, 2))) % odczytuje średnią ilość zielonych pikseli

blue_mean = mean(mean(img(:,:, 3))) % odczytuje średnią ilość niebieskich pikseli

if bump.front == 1 %odczytuje przednie czujniki uderzeniowe

r.stop % zatrzymuje Roomba

msgbox('Ścieżka zasłonięta!', 'Wiadomość asystenta parkowania') %wyświetla wiadomość mówiącą, że ścieżka jest zasłonięta przerwa % kończy pętlę

elseif green_mean >150

r.stop % zatrzymuje Roomba

cont = questdlg('Kontynuować?', 'Ścieżka zakończona') %wyświetla okno pytania z pytaniem o kontynuację

if cont == 'Tak'

parkassist(1) %restartuje kod

w przeciwnym razie

kończyć się

przerwa % kończy pętlę

elseif red_mean > 140

r.turnAngle(45) %obraca Roombę o 45 stopni

r.timeStart %uruchamia licznik czasu

podczas gdy prawda

r.setDriveVelocity(.05,.05) %ustawia prędkość Roomba

time=r.timeGet % przypisuje czas do zmiennej

bump=r.getBumpers % pobiera dane z czujników uderzeń

Cliff=r.getCliffSensors % pobiera dane z czujników klifu

light=r.getLightBumpers % pobiera dane z czujników uderzenia światła

img=r.getImage;% odczytuje kamerę z robota

red_mean = mean(mean(img(:,:, 1))) % odczytuje średnią ilość czerwonych pikseli

green_mean = mean(mean(img(:,:, 2))) % odczytuje średnią ilość zielonych pikseli

blue_mean = mean(mean(img(:,:, 3))) % odczytuje średnią ilość niebieskich pikseli

jeśli blue_mean > 120

r.moveDistance(-0.01) % przesuwa roombę do tyłu o ustaloną odległość songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % odtwarza rosnącą skalę muzyczną

msgbox('Znaleziono wodę!', 'Wiadomość asystenta parkowania') % wyświetla komunikat informujący o znalezieniu wody r.turnAngle(-80) %obraca roomba o 80 stopni

przerwa % kończy pętlę prądową

elseif light.rightFront > 25 || light.leftFront > 25% odczytuje czujniki światła uderzeniowego

r.moveDistance(-0.01) % przesuwa Roombę do tyłu o ustaloną odległość

r.turnAngle(-35) % obraca Roombę o 35 stopni

przerwa % kończy pętlę prądową

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 % odczytuje oba czujniki klifu

r.moveDistance(-0,1) % przesuwa Roombę do tyłu o ustaloną odległość

r.turnAngle(-80) %obraca roombę o 80 stopni

przerwa % kończy pętlę prądową

elseif czas >= 3

r.stop % zatrzymuje Roomba

contin=questdlg('Stacja wolna, kontynuować?', 'Wiadomość asystenta parkowania') % pyta, czy Roomba ma kontynuować, jeśli contin == 'Tak'

r.turnAngle(-90) % obraca Roombę o 90 stopni

parkassist(1) %restartuje funkcję

w przeciwnym razie

r.stop % zatrzymuje Roomba

kończyć się

w przeciwnym razie

kończyć się

kończyć się

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 % odczytuje oba czujniki klifu

r.moveDistance(-0.1) %przenosi roombę do tyłu o ustaloną odległość

r.turnAngle(-90) %obraca roombę o 90 stopni

elseif cliff.rightFront < 2500 % odczytuje prawy czujnik klifu

r.turnAngle(-5) %lekko obraca Roombę w kierunku przeciwnym do czujnika klifu

elseif cliff.leftFront < 2500 % odczytuje lewy czujnik klifu

r.turnAngle(5) %lekko obraca Roombę w kierunku przeciwnym do czujnika klifu

w przeciwnym razie

kończyć się

kończyć się

kończyć się

Krok 4: Testowanie kodu i robota

Testowanie kodu i robota
Testowanie kodu i robota
Testowanie kodu i robota
Testowanie kodu i robota
Testowanie kodu i robota
Testowanie kodu i robota

Po opracowaniu kodu kolejnym krokiem było przetestowanie kodu i robota. Ponieważ w kodzie można wprowadzić wiele różnych ustawień, takich jak kąt, pod jakim obraca się robot, prędkość, z jaką się porusza, oraz progi dla każdego koloru, najlepszym sposobem ustalenia tych wartości dla robota jest przetestowanie je i zmieniaj w miarę postępów. Z każdym dniem pracy nieustannie zmienialiśmy te wartości, ponieważ niektóre z nich zależą od środowiska, w którym pracuje robot. Najlepszym sposobem, jaki znaleźliśmy, było umieszczenie robota Roomba na ścieżce, którą chcesz, aby podążał, i bariera na tyle wysoka, że kamera nie może wykryć kolorów, których nie chcesz. Następnym krokiem jest uruchomienie go i pokazanie żądanych kolorów, kiedy chcesz, aby wykonał to zadanie. Gdy idziesz, jeśli widzisz problem, najlepszą rzeczą do zrobienia jest wciśnięcie przedniego zderzaka, aby się zatrzymał, a następnie zmień parametr, z którym miałeś problem.

Krok 5: Rozpoznawanie błędu

Z każdym ukończonym projektem zawsze istnieją źródła błędów. Dla nas doświadczyliśmy błędu z prostym faktem, że robot nie jest precyzyjny w odniesieniu do kąta, pod jakim się obraca, więc jeśli powiesz mu, aby skręcił o 45 stopni, nie będzie to dokładne. Innym źródłem błędów dla nas było to, że czasami robot działa nieprawidłowo i trzeba go mocno zresetować, zanim znów zacznie działać. Głównym ostatnim źródłem błędów dla nas było to, że ten sam kod nie będzie miał takiego samego efektu na różnych robotach, więc być może będziesz musiał uzbroić się w cierpliwość i odpowiednio dostosować.

Krok 6: Wniosek

Teraz masz wszystkie narzędzia do zabawy z Roombą, co oznacza, że możesz manipulować kodem w dowolny sposób, aby osiągnąć zamierzone cele. To powinna być najlepsza część Twojego dnia, więc baw się dobrze i jedź bezpiecznie!

Zalecana: