Spisu treści:

Hawking Bot: 5 kroków
Hawking Bot: 5 kroków

Wideo: Hawking Bot: 5 kroków

Wideo: Hawking Bot: 5 kroków
Wideo: TEORIA WSZYSTKIEGO | Albert Einstein VS Stephen Hawking 2024, Lipiec
Anonim
Image
Image
Zbuduj swojego Hawking Bota
Zbuduj swojego Hawking Bota

Hawking Bot to projekt Lego MINDSTORMS EV3 inspirowany nieżyjącym już Stephenem Hawkingiem. Stephen Hawking miał poczucie humoru, więc jestem pewien, że zaaprobowałby ten projekt. Hawking Bot może poruszać się po przeszkodach i reagować na ruchy, a następnie wypowiada jeden ze słynnych dźwięków Stephena Hawkinga i porusza się w kierunku poruszającego się obiektu. Wykorzystuje czujnik ultradźwiękowy, który skanuje otoczenie ruchem głowy.

Krok 1: Zbuduj swojego Hawking Bota

Wszystkie wymagane elementy znajdują się w podstawowym zestawie EV3 Lego MINDSTORMS z wyjątkiem czujnika ultradźwiękowego (jego oczy), który należy zakupić osobno.

Krok 2:

Obraz
Obraz

Cały kod dla Hawking Bota jest napisany w Pythonie 3. Startowy plik obrazu do uruchamiania Pythona w środowisku Debian Linux na Hawking Bot można pobrać ze strony internetowej ev3dev. Kod do uruchomienia Hawking Bota można pobrać stąd. Cały kod jest zawarty w pliku klasy, więc możesz użyć istniejących metod lub nawet je zmodyfikować, jeśli chcesz.

Obejrzyj ten film ze szczegółowymi instrukcjami, jak skonfigurować Debian Linux i Python3 na twoim robocie. Chociaż jest to specjalnie dla konfiguracji Mac, nadal przydatne będzie ogólne zrozumienie procesu. To jest praca w toku. Czujnik ultradźwiękowy jest czasami zawodny, a to wymaga mądrzejszego kodu do wykrywania „odstających”. Chciałbym zobaczyć wkład innych osób, aby uczynić kod bardziej wydajnym i mniej podatnym na błędy.

Krok 3: Stwórz własne dźwięki Hawkinga

OK, teraz chcesz mieć kilka słynnych cytatów lub tylko kilka prostych wypowiedzi prof. Hawkinga. Jest mnóstwo filmów, w których można go posłuchać, a także jego wykłady, które są skarbnicą mądrości i użytecznych kęsów dźwiękowych.

Potrzebujesz programu takiego jak Audacity, który działa na wielu platformach, aby wybrać i wyciąć Twoje ulubione dźwięki.

Zapisz swój soundbite jako plik wav mono jako SH6, SH7, …SH11, SH12 i tak dalej.

Poniżej kilka próbek, które wykonałem według powyższej metody.

Krok 4: Wskazówki i porady

Porady i wskazówki
Porady i wskazówki
Porady i wskazówki
Porady i wskazówki

Hawking Bot jest wyposażony w moduł samokontroli, aby upewnić się, że wszystkie kable są podłączone, a moc baterii jest wystarczająca. Luźne, brakujące lub nawet uszkodzone połączenia mogą się łatwo pojawić. Więc ten moduł jest bardzo przydatny. Metoda „checkConnection” sprawdza tylko, czy istnieje połączenie elektryczne. Nadal musisz upewnić się, że silniki są podłączone do właściwego portu.

Ruch głowy jest niezbędny, aby Hawking Bot mógł przeskanować teren i znaleźć najdłuższą niezakłóconą ścieżkę przed sobą. Kable potrzebują wystarczająco dużo miejsca, aby pomieścić ruchy głowy; dlatego wskazane jest związanie ich ze sobą, jak pokazano na zdjęciu.

Hawking Bot najlepiej radzi sobie z dużymi przeszkodami oraz na płaskiej i gładkiej powierzchni. Dywany stanowią większe wyzwanie dla silników i może być konieczne dostosowanie ustawień, aby dostosować zachowanie do różnych powierzchni.

Hawking Bot w żadnym wypadku nie jest doskonały i jest to prototyp, który skorzysta na dalszych ulepszeniach. Kod jest w pełni skomentowany i powinno być łatwe do zrozumienia, co robią różne metody. Różne bity zostały skomentowane za pomocą #, jeśli usuniesz # przed „drukuj”, uruchomiony program pokaże różne odczyty czujnika i obliczenia.

Krok 5: Sugerowane ulepszenia, aktualizacje i przyszłe pomysły

Teraz, po pomyślnym zbudowaniu robota, chcesz przenieść go na wyższy poziom. Możesz ulepszyć metodę MotionDetector. W tej chwili bardzo często jest źle odczytywany. Możesz zobaczyć rzeczywiste odczyty, odkomentowując disA i disB (na dole bloku metody). Błędny odczyt zwykle wyróżnia się na tle innych odczytów, więc można napisać algorytm, który powstrzyma robota przed reagowaniem na niewłaściwy odczyt.

Być może chcesz przejąć pełną kontrolę nad robotem i po prostu zdalnie sterować jego różnymi funkcjami. Możesz to zrobić przez Bluetooth i napisać program na Androida do komunikacji z robotem. Jednak znacznie łatwiejszym podejściem byłoby znalezienie miejsca, w którym czujnik podczerwieni przejąłby kontrolę nad Hawking Botem.

A co z nakłonieniem robota do poznania swojego otoczenia? Można to osiągnąć za pomocą podejścia k-najbliższego sąsiada lub ewentualnie sieci neuronowej. Klocek EV3 ma ograniczoną moc obliczeniową, chociaż obsługuje Numpy. Alternatywą byłoby BrickPi, które pozwoliłoby na uruchomienie biblioteki AI, takiej jak Tensorflow, ale intencją tego przewodnika było użycie zestawu Lego EV3 MINDSTORMS bez konieczności kupowania wielu drogich elementów dodatkowych poza czujnikiem ultradźwiękowym.

Jednak metoda uczenia ponownego zagnieżdżania k-najbliższych sąsiadów powinna działać na klocku EV3 i jest to sugerowany algorytm. Tobie pozostawiam znalezienie działającej implementacji lub wykrycie ewentualnych problemów:

Nauka wzmacniania dla Hawkings Bot

Pomysł polega na tym, że 7 odczytów USS jest zakodowanych w wektor, a ostatnie 10 ruchów głowy jest używanych do utworzenia sekwencyjnego wektora 70 wpisów. Pierwsze odczyty są niekompletne, więc zostaną wypełnione zerami. Każdy wpis zawiera wartość odległości od USS. To jest wektor stanu s. System pozwala na 1000 wpisów. Następnie najstarszy wpis zostanie zastąpiony, a wpisy dotyczące wieku dla każdej pary s-r zostaną zmniejszone o jeden.

Robot nie może zbliżyć się do obiektu bliżej niż 10 cm. To tworzy negatywną nagrodę. Dla prostoty; dobre działania są nagradzane 1, a złe 0. W efekcie tworzy to prawdopodobieństwo nagrody za każdą kombinację akcji i stanu. Użyjemy zniżkowych nagród i polityki epsilon greedy.

Tworzy to 3 duże tabele stanu – nagroda (s-r) dla wszystkich trzech akcji w prawo, na wprost i w lewo – może być możliwe ustawienie dużych i wolnych prędkości dla każdej akcji. Mielibyśmy wtedy 6 akcji i 6 tabel lookup s-r.

Za każdym razem, gdy rejestrowany jest nowy stan s, jest on porównywany z tabelami, odległość euklidesowa (lub podobna miara) jest używana do znalezienia najbliższego sąsiada. Nie będzie to klasyfikowane, ale ustawiony próg t, aby zaakceptować stan jako bardzo podobny, nadpisać istniejący stan i zaktualizować go o najwyższą nagrodę i wykonać powiązane działanie a. Jeśli nie jest podobny (d>t) wprowadź nową parę s-r dla każdego działania a. Jeśli istnieje remis pomiędzy akcjami dla s-r (wszystkie mają tę samą nagrodę) wybierz losowo, ale nie jest to powszechne i można je pominąć.

t będzie musiało zostać określone eksperymentalnie, jeśli t będzie zbyt małe, podobne stany zostaną zignorowane i każdy stan będzie postrzegany jako unikalny. Zbyt duże a t oznacza, że nawet dość niepodobne stany są łączone w jedną całość, co może wpłynąć na zdolność wyboru dobrych działań. Możliwe jest użycie metod statystycznych do określenia najlepszego t.

Tabela wygląda mniej więcej tak: Nr wpisu – Wektor stanu – nagroda za akcję 1 – nagroda za akcję 2 – nagroda za akcję 3.

Myślę, że sama implementacja będzie trudna, ale powinna być warta wysiłku. Powodzenia!

Zalecana: