Spisu treści:
- Krok 1: Materiały i zaopatrzenie:
- Krok 2:
- Krok 3: Składanie „ogrodu”
- Krok 4: Pisanie kodu
- Krok 5: Skopiuj kod
Wideo: Garden Helper Roomba Bot: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Kiara Myers, Ahmad Alghadeer i Madison Tippet
Cel, powód:
Ta instrukcja nauczy Cię, jak zaprogramować Roomba Bot za pomocą MATLAB, aby poruszać się po ogrodzie, wykrywając okrągłe owoce / warzywa, które są wystarczająco dojrzałe, aby można je było zbierać na podstawie ich wielkości. Ten robot wysyła również wiadomość e-mail, informując o tym, ile owoców jest gotowych do zebrania i jaką drogę przebył.
Cechy:
- Wykorzystuje czujniki światła do wykrywania ścian i lekko się obraca, aby uniknąć uderzenia w nie
- Wykorzystuje czujniki uderzeniowe, aby przerwać program, gdy uderzy w skałę na końcu ogrodu
- Wykorzystuje przetwarzanie obrazu do wykrycia okręgu w ogrodzie, a następnie określenia jego promienia
- Wykorzystuje czujniki klifu do wykrywania kolorowej taśmy, która wskazuje na obecność owocu
Krok 1: Materiały i zaopatrzenie:
- Jeden laptop
- MATLAB 2017
- Odkurzacz Roomba
- Malina Pi
- Drewniane bloki
- Biały papier
- Czarny papier
- Kolorowa taśma/cienki pasek kolorowego papieru
- Duży kamień
Krok 2:
Krok 3: Składanie „ogrodu”
- Weź swój czarny papier i wytnij kółka o różnych rozmiarach
-
Przyklej te czarne kółka na dużym białym papierze
Ten kontrast będzie niezbędny przy wykrywaniu owocu
-
Użyj swoich drewnianych klocków, aby zbudować przypominającą labirynt ścieżkę ogrodową, w której robot będzie się poruszał
Wybraliśmy ścieżkę w kształcie litery U, jak na zdjęciu powyżej
- Na końcu ogrodu dodaj kamień, drzwi lub inny przedmiot, aby robot wiedział, że to jest gotowe
-
Przyklej swój biały papier kółkiem do ścian ogrodu
Przyklejaliśmy go wiaderkami, bo nasze ściany były za krótkie na kamerę
- Połóż kolorową taśmę / cienki pasek kolorowego papieru na ziemi przed owocami
Krok 4: Pisanie kodu
Poruszanie się po ogrodzie
Korzystanie z czujników uderzeń: Aby uruchomić program, umieszczamy kod w instrukcji while, która przechodzi przez różne instrukcje if, aż do złamania kodu. Jeśli któryś z bumperów zostanie trafiony, spowoduje to, że ich wartość będzie równa true (co w Boolean to wartość 1). Instrukcja if służy do złamania kodu, gdy jedna z ich wartości jest równa 1.
Korzystanie z czujników klifu: W instrukcji while używamy instrukcji if, aby poinformować robota Roomba, kiedy dotarł on do lokalizacji rośliny. Roomba wykrywa kolorową taśmę na podłodze, badając próg czerwieni, który wychwytują czujniki klifu. Jeśli lewy lub prawy czujnik klifu wykryje kolor z wyższym progiem niż ziemia, zatrzyma robota na 2 sekundy (używając polecenia pauzy). W ciągu tych 2 sekund Roomba zrobi i wyświetli obraz owocu. Korzystając z wbudowanego polecenia imfindcircles, ustaw zakres promieni swoich kręgów, a Roomba znajdzie tak zwany owoc.
Korzystanie z przetwarzania obrazu: W instrukcji if osadzamy inne stwierdzenie if, które mówi: jeśli wykryty promień, promienie3, jest większy lub równy naszemu minimalnemu wymaganiu dojrzałego owocu, r1 (ty decydujesz), a następnie policz i wyświetl dalej Roomba ile owoców jest gotowych i odwrócić się, aby kontynuować przez ogród. Jeśli nie, kolej na kontynuowanie przez ogród. Uwaga: może być konieczne dostosowanie kąta skrętu, ponieważ każdy Roomba jest inny
Korzystanie z lekkich zderzaków: W innym oświadczeniu if, lekkie zderzaki są analizowane, aby upewnić się, że żaden z nich nie przekroczy ustalonego przez nas progu. Jeśli lewy, prawy, lewy środkowy, prawy środkowy, lewy przedni lub prawy przedni zderzak znajdzie się powyżej progu, Roomba lekko skręci pod odpowiednim kątem, aby uniknąć uderzenia w ścianę. Stąd poruszanie się po labiryncie.
Reszta kodu służy do wykreślenia ścieżki, którą obrał Roomba, a następnie wysłania wyników na Twój e-mail
Krok 5: Skopiuj kod
% Cel: Na podstawie swoich rozmiarów robot Roomba przejdzie przez ogród i rozróżni warzywa/owoce, które są gotowe do zbioru. % Wejścia: czujniki światła, czujniki urwiska, czujniki uderzenia, obraz z kamery % Wyjścia: Za każdym razem, gdy czujniki światła są większe niż próg, Roomba obróci się i zrobi zdjęcie, jeśli promień % warzyw/owoców mieści się w określonym zakresie. Kod łamie się, gdy Roomba wpada na % obiekt, wysyła astronaucie e-mail z informacją, ile owoców jest gotowych do zebrania % i mapuje ruchy Roomby. % Użycie: instrukcje if i while, polecenia kreślenia, kod e-mail z MATLAB
k=0
tik
timerVal=tic
podczas gdy prawda
v=0,2; % prędkość r.setDriveVelocity(v, v);%roomba przejdź do przodu L=r.getLightBumpers; LC=L.lewaŚrodek; Rr=L.prawo; Lf=L.lewa; RC=L.prawośrodek; LF=L.lewyPrzód; RF=L. PrawyPrzód; Q= 75; % próg. RTH=30; %Wysoki próg czerwony RTL=10; %Niski próg czerwony B=r.getBumpers S=r.getCliffSensors; r1=24; r3=10; PL1=1800; jeśli S.leftFront > PL1 || S.rightFront > PL1 % wykrywa, czy kolor na ziemi przekracza próg r.stop pause(2) elapsedTime=toc(timerVal-2) tic timerVal=tic % pauzy przez 2 sekundy img = r.getImage; %robienie obrazu imshow(img)%wyświetlanie obrazu [centers3, promienie3] = imfindcircles(img, [30 50], „biegunowość obiektu”, „ciemny”, „czułość”, 0,9); h = lepkość (środki3, promienie3); % szukaj okręgów o promieniach w/w określonym zakresie na obrazku, jeśli promienie3>=r1 T=1 k=k+1 dist1=0.2.*elapsedTime % Jeśli wykryty promień jest większy lub równy minimalnemu wymaganemu % dojrzałego owocu, to Roomba liczy ten owoc elseif promienie3<=r3 T=0 else T=0 dist2=0.2.*elapsedTime % Jeśli nie, to nie liczy końca owocu
if T==1 r.setLEDDigits(num2str(k)) r.beep r.beep r.beep r.turnAngle(78) %Jeżeli wykryto owoc, wyświetl numer na Roombie, %zrób dźwięk i włącz elseif T==2 r.turnAngle(78) %Jeśli wykryto 2 owoce, odwróć, aby kontynuować przez %garden else r.turnAngle(78) %Jeśli nie wykryto żadnych owoców, odwróć, aby kontynuować przez %garden end end if LC >Q r.stop r.turnAngle(-7) elseif RC >Q r.stop r.turnAngle(7) elseif LF >Q r.stop r.turnAngle(-7) elseif RF >Q r.stop r. turnAngle(7) elseif Lf > Q r.stop r.turnAngle(-7) elseif Rr >Q r.stop r.turnAngle(7) end %Jeśli którakolwiek z wartości zderzaków świetlnych przekroczy próg, to %roomba obróci się lekko w odpowiednim kierunku, aby uniknąć % uderzenia w ścianę
jeśli B.prawo ==1 || B.lewo==1 || B.front==1 dist3=0.2.*elapsedTime r.stop r.beep('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle(360) %Jeśli którykolwiek z bumpery są uderzane, potem Roomba odtwarza dźwięk, obraca się, % i łamie kod
przerwać koniec
end scatter(0.533, 0, '^') przytrzymaj rozproszone(0.533, dist1, '<') wstrzymaj scatter(-dist2, dist1, 'v') wstrzymaj scatter(-dist2, 0, 'd') saveas (gcf, 'Ruch.png')
kmsg=num2str(k) mail= '[email protected]' password='Srsora123#' host='smtp.gmail.com' port='465'
setpref('Internet', 'E_mail', poczta); setpref('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty('poczta.smtp.użytkownik', poczta); props.setProperty('poczta.smtp.host', host); props.setProperty('poczta.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'prawda'); props.setProperty('mail.smtp.debug', 'prawda'); props.setProperty('mail.smtp.auth', 'prawda'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(mail, 'Witaj Astronauta! W ogrodzie jest tyle owoców', kmsg, {'movement.png'})
Zalecana:
KS-Garden:Przegląd: 9 kroków
KS-Garden:Przegląd: KS-Garden może być używany do nawadniania/wentylacji./oświetlania roślin ogrodowych/szklarniowych na podwórku lub roślin do uprawy w pomieszczeniach (konstrukcja modułowa)System KS-Garden składa się głównie z następujących modułów- Główny skrzynka systemowa - skrzynka przekaźników i zasilaczy
Zbuduj Mini DIY Hydroponic Systems & DIY Hydroponic Herb Garden z alertami WiFi: 18 kroków
Zbuduj Mini DIY Hydroponic Systems & DIY Hydroponic Herb Garden z alertami WiFi: W tym samouczku pokażemy Ci, jak zbudować system #DIY #hydroponics. Ten system hydroponiczny DIY będzie podlewać w niestandardowym cyklu nawadniania hydroponicznego z 2 minutami włączenia i 4 minutami przerwy. Będzie również monitorował stan wód w zbiorniku. Ten system
Trash Built Bot do rysowania linii BT - My Bot: 13 kroków (ze zdjęciami)
Trash Built BT Line Drawing Bot - My Bot: Przyjaciele Hai po długiej przerwie około 6 miesięcy, przyszedłem z nowym projektem. Do czasu ukończenia Cute Drawing Buddy V1, SCARA Robot - Arduino planuję kolejnego bota do rysowania, którego głównym celem jest pokrycie dużej przestrzeni do rysowania. Tak naprawiono ramiona robota c
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
Kolorowe Solar Garden Jar Light: 9 kroków (ze zdjęciami)
Kolorowe Solar Garden Jar Light: Najprostszym sposobem na zrobienie słonecznego słoika jest zdemontowanie jednej z tych tanich słonecznych lamp ogrodowych i przymocowanie jej do szklanego słoika. Jako inżynier chciałem czegoś bardziej wyrafinowanego. Te białe światła są nudne, więc postanowiłem stworzyć własny projekt ba