Spisu treści:

Roomba Scout Explorer: 8 kroków
Roomba Scout Explorer: 8 kroków

Wideo: Roomba Scout Explorer: 8 kroków

Wideo: Roomba Scout Explorer: 8 kroków
Wideo: Man Falls OVERBOARD and Boat Keeps Going! | Wavy Boats | Haulover Inlet 2024, Lipiec
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Jako jeden z najbardziej oczekiwanych i intensywnie badanych projektów amerykańskich, projekty łazika marsjańskiego stały się ludzkim osiągnięciem w stale postępującej produkcji zaawansowanych technologicznie systemów autonomicznych, których jedynym celem jest badanie i interpretacja mas lądowych i powierzchni czerwonej planety Ziemia. W ramach bardziej osobistego projektu w hołdzie misjom na Marsa, naszym celem było stworzenie robota typu roomba, który mógłby działać autonomicznie przez określony czas i reagować zgodnie z określonymi kryteriami w jego pobliżu.

Jeśli chodzi o wyjątkowość, skupiliśmy się na stworzeniu diagramu, który pokazywał każdą ścieżkę, jaką robot obiera od początku. Dodatkowo robot będzie mógł policzyć ilość obiektów znajdujących się w jego pobliżu w stylu panoramicznym.

Krok 1: Sprzęt

-Roomba z dołączaną kamerą (o znanej konkretnej nazwie)

-Podłączony serwer

-Windows 10 / Mac z łącznością z Internetem

-Jasna platforma

-Ciemna podłoga

-Wszelkie zabłąkane obiekty o monochromatycznym wzornictwie

Krok 2: Konfiguracja MATLAB

Konfiguracja MATLAB
Konfiguracja MATLAB

Aby tworzyć zadania i funkcje dla robota Roomba, musisz mieć określone kody i zestawy narzędzi zawierające polecenia robota Roomba.

Po pobraniu MATLAB 2016a i nowszych utwórz folder zawierający te pliki robotów i wstaw poniższy plik MATLAB poniżej do folderu i uruchom go, aby zainstalować pozostałe niezbędne pliki Roomba.

Następnie kliknij prawym przyciskiem myszy w oknie Bieżący folder, najedź myszą na „Dodaj ścieżkę” i kliknij „Bieżący folder”. Teraz należy ustawić ścieżkę tak, aby każdy z tych plików był używany do aktywacji Roomby.

Teraz użyj poniższego polecenia w oknie poleceń, aby skonfigurować Roombę:

r=pokójba(#).

Symbol # to „numer” podanego roomba; jeśli jednak potrzebujesz symulatora Roomby, po prostu wpisz następujące polecenie:

r=pokojba(0).

Symulacja byłaby zalecana do testowania wzorców ruchowych.

Jeśli jesteś ciekawy, jakie polecenia może wykonać Roomba, wpisz następujące polecenie w oknie poleceń:

doktor roomba.

Aby uzyskać więcej informacji, odwiedź następującą witrynę:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Krok 3: Funkcja: Ruch

Funkcja: ruch
Funkcja: ruch
Funkcja: ruch
Funkcja: ruch

Jeśli chodzi o ruch, Roomba powinna poruszać się automatycznie przez określony czas podany na wejściach. Celem ruchu robota jest prawidłowe reagowanie, gdy jego czujniki (zderzaki, zderzaki świetlne i czujniki urwiska) zmieniają się w obecności różnych przeszkód. Ta część będzie działać jako podstawa dla wszystkich poleceń Roomby, ponieważ później dodamy więcej funkcji do kodu. Potrzebna była pewna specyfikacja:

- Aby zmniejszyć obrażenia, robot musi zmniejszyć prędkość do mniejszej prędkości.

-Podczas zbliżania się do klifu lub ściany robot będzie się cofał i zmieniał kąt w zależności od punktu uderzenia

-Po pewnym czasie jazdy roomba w końcu zatrzyma się i zrobi zdjęcia otaczającego obszaru

Zauważ, że użyte wartości były w odniesieniu do symulatora; Wartości, takie jak kąty skrętu, prędkości skrętu i ustawienia czujników robota, powinny być modyfikowane podczas korzystania z rzeczywistego robota, aby zapewnić stabilność i rachunkowość błędów sprzętu.

Krok 4: Funkcja: Przetwarzanie obrazu

Funkcja: Przetwarzanie obrazu
Funkcja: Przetwarzanie obrazu

Zgodnie z życzeniem otrzymaliśmy zadanie zmodyfikowania danych obrazu (lub kilku obrazów), który został odebrany przez kamerę robota, do czego postanowiliśmy sprawić, by roomba „liczyła” liczbę obiektów, które widzi na obrazie.

Podążaliśmy za techniką polegającą na tym, że MATLAB rysuje granice wokół poczerniałych obiektów, które kontrastują z białym tłem. Jednak ta funkcja może mieć trudności na otwartej przestrzeni, ponieważ różne kształty i kolory postrzegane przez aparat, co skutkuje niezwykle dużą liczbą.

Należy pamiętać, że ta funkcja nie działa w symulatorze, ponieważ nie ma kamery; przy próbie wystąpi błąd deklarujący użycie tylko macierzy (:,:,3).

Krok 5: Funkcja: mapowanie

Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie
Funkcja: Mapowanie

Dodatkową funkcją, którą chcieliśmy, aby robot miał, było mapowanie jego lokalizacji, ponieważ bezpośrednio wchodzi w interakcję ze środowiskiem. Tak więc poniższy kod ma na celu otwarcie mapy i ustawienie układu współrzędnych, który szczegółowo opisuje każde miejsce, w którym naciskane są czujniki zderzaka robota. Okazało się, że jest to najdłuższa część z trzech części do indywidualnego przetestowania, ale okazała się znacznie prostsza po zastosowaniu w końcowym skrypcie.

W celu dodania limitu czasu działania funkcji, do celów testowych użyto limitu n<20 w pętli while.

Pamiętaj jednak, że ze względu na złożoność kodu pojawia się więcej błędów, gdy segment kodu działa przez długi czas; z poprzednich testów wydaje się, że dziesięć uderzeń to liczba punktów przed wystąpieniem znaczących błędów.

Krok 6: Zestawienie

Zestawienie
Zestawienie
Zestawienie
Zestawienie
Zestawienie
Zestawienie
Zestawienie
Zestawienie

Ponieważ wszystko to zostanie umieszczone w jednym pliku, utworzyliśmy funkcję, używając każdego z dwóch poprzednich kroków jako jej podfunkcji. Ostateczny projekt powstał z następującą modyfikacją funkcji redux o nazwie „recon”. Aby uniknąć nieporozumień dotyczących MATLAB, skrypty „counter” i „rombplot3” zostały przemianowane odpowiednio na funkcje osadzone „CountR” i „plotr”.

W ostatecznej wersji trzeba było wprowadzić kilka zmian, w przeciwieństwie do poprzednich skryptów:

-Pochodzenie będzie zawsze oznaczone czerwonym kółkiem

-Za każdym razem, gdy roomba zatrzymuje się przed zderzakami, lokalizacja jest zaznaczona czarnym kółkiem

-Za każdym razem, gdy Roomba zatrzymuje się przed czujnikami klifu, lokalizacja jest oznaczona niebieskim kółkiem

-Za każdym razem, gdy roomba przestaje badać teren, lokalizacja jest zaznaczana zielonym kółkiem

-Obrazy są modyfikowane, aby usunąć górną część ze względu na znacznik czasu potencjalnie zakłócający wyniki

-Granice nie będą liczone jako przedmiot ze względu na dość duże uzyskane liczby

-Zmieniono kilka zmiennych, więc aby uniknąć nieporozumień, użyj powyższych wersji w celach informacyjnych.

Krok 7: Testowanie

Testowanie
Testowanie

Testy dla każdego pojedynczego komponentu okazywały się czasami dość mieszane, dlatego konieczne były modyfikacje pewnych wstępnie ustawionych wartości. Tło tematyczne, na którym chcieliśmy przetestować możliwości robota w zamkniętej przestrzeni, składało się po prostu z tablicy ułożonej na znacznie ciemniejszej podłodze. Możesz rozrzucać przedmioty po okolicy; spraw, aby działały jak obiekty, na które należy wpaść lub odległe obiekty od poruszającego się obszaru robota.

Po ustawieniu regulowanego czasu i prędkości bazowej roomba zademonstrowała odpowiednie zachowanie ruchu, zatrzymując się i cofając od każdego „klifu” lub obiektu, w który uderza, a także zwalniając, gdy wykryła coś w pobliżu. Po osiągnięciu żądanej odległości trzech metrów robot zatrzymywałby się i oceniał obszar, robiąc zdjęcia każdego obszaru pod kątem 45 stopni i kontynuował, jeśli czas na to pozwala. Jednak jego zakręty wydawały się większe niż żądano, co oznaczało, że dane o współrzędnych byłyby zasłonięte.

Za każdym razem, gdy się zatrzymuje, nowy punkt był umieszczany w przybliżonym obszarze jego położenia w układzie współrzędnych; Należy jednak zauważyć, że początkowy kierunek, w którym zaczyna Roomba, odgrywa kluczową rolę w projektowaniu mapy. Gdyby można było zaimplementować funkcję kompasu, zostałaby ona wykorzystana jako kluczowa część projektu mapy.

Rzeczywisty czas potrzebny do pełnego uruchomienia funkcji zawsze przekracza żądany czas, co ma sens, biorąc pod uwagę, że funkcja nie może się zatrzymać w trakcie jednego z odzyskiwania. Niestety, ta wersja liczenia obrazów ma swoje problemy, szczególnie w obszarach, które są w większości monochromatyczne lub różnią się jasnością; ponieważ stara się rozróżniać dwa odcienie, ma tendencję do postrzegania przedmiotów, które nie są pożądane, stąd zawsze liczy się do szalenie wysokich liczb.

Krok 8: Wniosek

Wniosek
Wniosek

Chociaż to zadanie było bardzo przygodową i twórczą pracą, która przynosiła ulgę, to z moich osobistych obserwacji dostrzegłem wiele błędów, które mogą być problematyczne, zarówno w kodzie, jak i zachowaniu robota.

Ograniczenie używania specyfikacji czasu w pętli while powoduje, że łączny czas jest dłuższy niż pożądany; proces techniki panoramy i przetwarzania obrazu mógłby w rzeczywistości trwać dłużej, gdyby był prowadzony przez powolny komputer lub nie był wcześniej używany. Dodatkowo roomba, która została użyta w naszej prezentacji, w porównaniu z symulatorem działała z dużą ilością błędów, zwłaszcza w ruchu. Użyty robot niestety miał tendencję do lekkiego przechylania się w lewo, gdy jechał prosto i wykonywał większe zakręty niż to pożądane. Z tego powodu i wielu innych zaleca się, aby w celu skompensowania tych błędów dokonać zmian w kątach skrętu.

Niemniej jednak jest to długi, ale stymulujący intelektualnie projekt, który był interesującym doświadczeniem edukacyjnym w zakresie stosowania kodów i poleceń, aby bezpośrednio wpływać na zachowanie rzeczywistego robota.

Zalecana: