Spisu treści:
- Krok 1: Materiały
- Krok 2: Połączenie
- Krok 3: Logiczne tworzenie kodu MATLAB do korzystania z czujników
- Krok 4: Testowanie kodu i robota
- Krok 5: Rozpoznawanie błędu
- Krok 6: Wniosek
Wideo: Roomba Parking Pal: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
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
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
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:
Inteligentny parking przy użyciu Raspberry Pi: 5 kroków
Inteligentny parking przy użyciu Raspberry Pi: W tej instrukcji stworzymy w pełni automatyczny system parkingowy podłączony do interfejsu internetowego. Będziesz mógł zobaczyć, jakie miejsce jest zajęte, decydować, kto wchodzi, a kto wychodzi i jest wyposażony w automatyczny system oświetlenia
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
Mars Roomba: 6 kroków
Mars Roomba: Ten instruktaż poprowadzi Cię w kierunku obsługi bota próżniowego Roomba kontrolowanego przez Raspberry Pi. System operacyjny, którego będziemy używać, to MATLAB
MIDI Pod-Pal: 4 kroki
MIDI Pod-Pal: ***AKTUALIZACJA 4/22/21****** Dodałem pełny schemat przedstawiający całe okablowanie, aby pomóc w budowie.***Nie będę wchodził w śmieszną ilość Głębokość tutaj w części kompilacji, moim zamiarem było pokazanie kolejnego przykładu budowania MI opartego na Arduino