Spisu treści:

Robot Roomba ze wspomaganiem astronautów: 4 kroki
Robot Roomba ze wspomaganiem astronautów: 4 kroki

Wideo: Robot Roomba ze wspomaganiem astronautów: 4 kroki

Wideo: Robot Roomba ze wspomaganiem astronautów: 4 kroki
Wideo: Купили РОБОТА А4 ! *ВЛАД А4 вернулся* 2024, Lipiec
Anonim
Roomba z asystą astronautów
Roomba z asystą astronautów

Ten projekt jest realizowany przy użyciu Raspberry Pi 3 na pokładzie iRobot Create Version 2. MATLAB służy do programowania robota, aby wykonywał określone instrukcje za pomocą czujników i kamery. Czujniki i kamery są wykorzystywane do wykonywania określonych zadań, które podążałyby za astronautą i zapewniały mu możliwość komunikowania się z jego bazą domową, jeśli coś pójdzie nie tak.

Krok 1: Potrzebne części

Potrzebne części
Potrzebne części
Potrzebne części
Potrzebne części
Potrzebne części
Potrzebne części
Potrzebne części
Potrzebne części

1. iRobot Utwórz wersję 2

iRobot Create jest najważniejszą częścią tego projektu, ponieważ jest programowalny i może być świetną reprezentacją rzeczywistego łazika, który śledzi astronautów i pomaga im w przyszłości

2. Raspberry Pi 3

Raspberry Pi było programowalne używane w tym projekcie. Kod jest przeznaczony dla Pi, a dołączona wersja Pi to 3 (model B). Inne programowalne płytki, takie jak arduino, są użyteczne, jednak arduino i większość innych płyt będzie wymagało innego kodowania niż opisano w innym kroku

3. Moduł kamery Raspberry Pi

Jedynym zewnętrznym połączeniem z Raspberry Pi potrzebnym do tego projektu jest moduł kamery. Moduł kamery jest integralną częścią tego projektu, ponieważ roomba będzie wykonywał zadania tylko na podstawie tego, co widzi w kamerze

4. MATLAB 2018a

Druga najnowsza wersja MATLAB, 2018a, została użyta do kodowania związanego z tą konfiguracją. Jest prawdopodobne, że wiele innych wersji MATLAB będzie z tym współpracować, ponieważ programowanie roomba istnieje od jakiegoś czasu

Krok 2: Konfiguracja plików i aparatu

Konfiguracja plików i aparatu
Konfiguracja plików i aparatu

1. Połączenia Raspberry Pi i kamery z Roomba

  • Pi może łączyć się z iRobotem bezpośrednio przez micro USB. To wszystko, czego potrzebuje, aby być gotowym do użycia. Jednak zaleca się bezpieczne umieszczenie go na Roombie, tak jak pokazano na zdjęciach w całej prezentacji.
  • Kamera ma bezpośrednie połączenie z Raspberry Pi i zdecydowanie zaleca się zakup lub wykonanie czegoś, aby trzymać kamerę bezpośrednio w górze. Kamera nie ma sensu, jeśli nie można jej przytrzymać, aby pokazać, co widzi robot roomba.

2. Pliki

  • Po skonfigurowaniu i podłączeniu wszystkiego, upewnij się, że robot jest zresetowany i gotowy do pracy, przytrzymując jednocześnie przyciski „Spot” i „Dock” przez 10 sekund.
  • Tu właśnie potrzebny jest MATLAB. Pliki dla Roomby muszą być najpierw zainstalowane, a wszystko, co jest potrzebne do ich uruchomienia, to kod podany pod tym linkiem:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Krok 3: Wstępne testowanie robota Roomba

Aby upewnić się, że robot Roomba działa, należy przeprowadzić wiele wstępnych kontroli.

1. Upewnij się, że masz połączenie z tą samą siecią Wi-Fi co robot Roomba. Bez tego nigdy nie połączysz się przez MATLAB.

2. Dowiedz się, do jakiego numeru jest przypisany Twój Roomba, aby móc połączyć się z wybraną przez Ciebie Roombą. Na przykład, jeśli numer twojego roomba to 30, możesz połączyć się z nim, wpisując roomba(30) w oknie poleceń w MATLAB.

3. Roomba może być sterowana za pomocą struktur w MATLAB. Na przykład, jeśli ustawisz swój kod dla roomba(30) na zmienną 'r', robot może zostać przesunięty do przodu za pomocą polecenia r.moveDistance(0.2, 0.1).

4. Istnieje wiele różnych poleceń, które można przekazać do Roomba i można je zobaczyć, wpisując „doc roomba” w oknie poleceń.

5. Czujniki odczytów światła, nierówności i klifu można odczytać za pomocą poleceń widocznych w „doc roomba”, ale sposobem na posiadanie stałego, uporządkowanego menu, aby zobaczyć dane z czujników, można zobaczyć za pomocą „r.testSensors „.

6. Po przetestowaniu tego wszystkiego oprogramowanie robota do zbierania obrazów można wykorzystać do odczytywania i oglądania zrobionych zdjęć. Podstawowy kod to img = r.getImage i imshow(img);.

7. Wartości RGB obrazu można znaleźć za pomocą kodów red_mean = mean(mean(img(:,:, 1)));

zielona_średnia = średnia(średnia(img(:,:, 2))); i blue_mean=średnia(średnia(img(:,:,3)));.

Krok 4: Przykładowy kod MATLAB

Przykładowy kod MATLAB
Przykładowy kod MATLAB

W tym momencie jesteś już gotowy, aby wykorzystać czujniki i oprogramowanie do robienia zdjęć, aby stworzyć własny obrót łazika marsjańskiego prototypu wspomaganego przez człowieka. Naszym przykładem jest podążanie za astronautą, śledząc biały kolor i zbliżając się do niego. Robot wyda sygnał dźwiękowy, jeśli jego czujniki odczytują wysokie wartości, aby astronauta mógł zresetować robota, jeśli utknie, lub podnieść go i zresetować, jeśli utknie na klifie. Jednak odczytuje te błędy tylko tak długo, jak widzi kolor biały. Bez możliwości zobaczenia koloru białego robot przejdzie w tryb błędu. Jest zaprogramowany do wysyłania dwóch różnych rodzajów wiadomości e-mail z powrotem do bazy domowej, w zależności od tego, co widzi. Jeśli zobaczy kolor skóry astronauty, to oczywiście nie jest dobre, więc zaalarmuje bazę domową, jeśli astronauta ma skórę z wadliwym kombinezonem. Druga wiadomość jest przygotowywana, jeśli astronauta po prostu zniknie z pola widzenia. Jeśli dla kamer nie widać bieli ani koloru skóry, robot obróci się i wyśle inny, ale inny e-mail. Obrazy, na których robot Roomba nie widzi astronauty, zostaną wysłane wraz z wiadomością w e-mailach. Poniżej znajduje się kod naszego projektu:

dla i=1:.1:3 img=r.getImage; image(img) red_mean = średnia(mean(img(:,:, 1))); zielona_średnia = średnia(średnia(img(:,:, 2))); niebieska_średnia = średnia(średnia(img(:,:, 3))); jeśli czerwona_średnia > 110 && czerwona_średnia 110 && niebieska_średnia 110 && zielona_średnia0 || bump.left>0 || bump.front>0 r.bip() r.bip() r.bip() r.stop elseif cliff.left<10 || klif.lewyPrzód<10 || cliff.rightFront<10 || klif.right700 || jasny.lewyPrzód>700 || light.leftCenter>700 || light.rightCenter>700 || light.rightFront>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop inaczej dla i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end end if green_mean <35 && blue_mean<35 %Pokazany kolor skóry (należy dostosować do koloru skóry astronauty) r.beep(); r.bip(); r.bip(); poczta = 'wypeł[email protected]'; %wysyła wiadomość e-mail pokazującą, że garnitur jest wyłączony psswd = 'tak'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_temat = 'temat'; m_text = 'test'; setpref('Internet', 'E_mail', poczta); setpref('Internet', 'Serwer_SMTP', host); setpref('Internet', 'SMTP_Nazwa_użytkownika', poczta); setpref('Internet', 'SMTP_Hasło', psswd); rekwizyty = 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(emailto, 'Pomoc!', 'Mundur astronauty jest wyłączony!', img); koniec, jeśli red_mean 135 || zielona_średnia 135 || blue_mean 135 for j = 1:2 %jeśli robot nie może znaleźć białego r.turnAngle(360) mail = '[email protected]'; psswd = 'tak'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_temat = 'temat'; m_text = 'test'; setpref('Internet', 'E_mail', poczta); setpref('Internet', 'Serwer_SMTP', host); setpref('Internet', 'SMTP_Nazwa_użytkownika', poczta); setpref('Internet', 'SMTP_Hasło', psswd); rekwizyty = 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(emailto, 'Pomoc!', 'Nie można znaleźć astronauty!', img); r.stop koniec koniec koniec

Oczywiście jest tu bałagan, ale po skopiowaniu powinien się wzmocnić. Hasła i e-maile w tym celu mają oczywiście dostarczyć ci, którzy wykonują ten projekt.

Jednak nasz przykład to tylko jeden z wielu sposobów na zabawę z tym robotem, aby był odpowiedni dla wszystkich. Jest wiele różnych rzeczy do zrobienia, które możesz dopasować do siebie.

Zalecana: