Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Co zrobiłem?
● Bot, którego można nauczyć chodzenia (poruszania się do przodu) po różnych powierzchniach. Bot przedstawia proste stworzenie z 4 nogami „bez kolan”, które stara się iść do przodu. Wie, że może ustawić każdą z nóg tylko na 3 sposoby. Teraz musi wymyślić najlepsze możliwe kroki, jakie może podjąć, aby iść dalej. Ponieważ jego ruch zależy również od tarcia o powierzchnię, uważamy, że dla każdej innej powierzchni, po której się porusza, będzie inny (niekoniecznie wyjątkowy, ale najprawdopodobniej podobny) zestaw kroków, aby zmaksymalizować wysiłek poruszania się naprzód.
Do czego jest to używane?
● Najlepiej nadaje się do wizualizacji wzorców chodzenia robota AI.
Krok 1: Schemat przepływu
Oto podział całego projektu. Ogólnie rzecz biorąc, projekt składa się z 2 części elektroniki z mechaniczną strukturą robota, a druga to algorytm działający na komputerze i kod działający na arduino.
Krok 2: GŁÓWNE ELEMENTY ZAANGAŻOWANE:
Elektronika
Arduino UNO(!)
Czujnik ultradźwiękowy
Serwosilniki
Moduł Bluetooth
Kodowanie
IDE Arduino
Teraterm
Notatnik Jupytera
Q-algorytm uczenia
Krok 3: MODUŁ V1:
Wzmacnianie uczenia: Korzystając z ANN (Artificial Neural Network) zaplanowaliśmy szkolenie naszego robota i wymyśliliśmy dwie możliwe metody.
Ograniczenia: Każda noga (serwomotor) jest ograniczona do zajmowania tylko 3 możliwych pozycji 60, 90 i 120 stopni. Założenia: Uważamy, że ruch bota będzie składał się z 4 stanów (stan jest określoną orientacją wszystkich czterech serw), tj. będą 4 różne stany robota, które rozważymy jako 4 kroki dające nam jeden cykl ruchu, w które bot przesunie się na pewną odległość do przodu. Ten cykl będzie powtarzany w nieskończoność, aby utrzymać bota w ruchu.
Ale jedynym problemem była liczba iteracji do oceny - mamy 3 możliwe orientacje dla każdego silnika i są 4 różne silniki, co sprawia, że 3^4=81 stanów, w których robot może istnieć w jednym kroku lub stanie. Aby wykonać jeden złożony ruch, musimy wykonać 4 różne kroki, co oznacza, że 81^4 = 43,046,721 możliwych kombinacji do sprawdzenia pod kątem maksymalnej wydajności w jednym cyklu ruchu. Załóżmy, że wytrenowanie jednego stanu zajmuje 5 sekund, a ukończenie szkolenia zajęłoby 6,8250 lat!
Krok 4: MODUŁ V2:
Algorytm Q-learning
Algorytm wczesnego uczenia się przez wzmacnianie opracowany do trenowania rzeczy mających skończony stan i znajdowania najkrótszych ścieżek. źródło:
Math of Algorithm: Istnieje 81 możliwych stanów dla każdego kroku, w którym bot może się znajdować, nazywamy te stany liczbami od 1 do 81, a teraz to, co chcemy poznać, to wartość przejścia, czyli zmiana pozycji robota (przebyta odległość), podczas gdy przechodzi z losowego stanu s1 do innego stanu s2 (s1, s2 z tych 81 stanów). Widzimy to jako macierz o 81 wierszach i 81 kolumnach, gdzie element macierzy będzie równy wartości odległości, z której się przesunął, odpowiadającej jego numerowi wiersza i kolumny. Wartości te mogą być dodatnie lub ujemne w zależności od działania robota w prawdziwym słowie. Teraz znajdziemy zamkniętą pętlę stanów, w której przebyta odległość jest zawsze dodatnia. Będziemy oceniać wartości macierzy 81x81, które wynoszą 81^2=6561, teraz jeśli zajmiemy 5 sekund, aby zapisać te wartości w macierzy, stworzenie całej matrycy zajmuje tylko 9.1125 godzin, a następnie można łatwo wymyślić pętlę kroków, aby zmaksymalizować wydajność przenoszenia.
Krok 5: POWIĄZANE PROBLEMY -
- W pewnym stanie ruch robota był bardzo nierównomierny i wpływał na wartość czujnika ultradźwiękowego, bot przechylał się i podnosił odległość od odległej ściany.
- Problem z odłączeniem się od laptopa i ponownym uruchomieniem arduino powodował, że trenował od wartości 0 był bardzo irytujący.
- Obserwowanie pociągu robota przez 5 godzin bez przerwy było bardzo wyczerpujące.
Krok 6: MODUŁY A1 i A2:
- Część mechaniczna to płyta podwozia z przymocowanymi do niej czterema serwomechanizmami. Do wykonania nóg wykorzystaliśmy patyczki do lodów.
- Naszym głównym zadaniem jest śledzenie odległości bota od jego początkowej pozycji.
- Nasze pierwsze podejście polegało na użyciu czujnika żyroskopowego i przyspieszeniu poruszającego się robota, aby wydobyć jego prędkość, a następnie jego pozycję.
- Problem - okazał się zbyt skomplikowany do wdrożenia! Alternatywa - Ograniczyliśmy ruch robota tylko do 1 wymiaru i użyliśmy czujnika ultradźwiękowego do pomiaru odległości od ściany na wprost.
- Moduł HC05-Bluetooth był używany podczas treningu do przesyłania szybkości przejścia odległości między dwoma krokami do komputera i tam dane były przechowywane w macierzy.
Krok 7: Link do filmów:
Kroki dziecka:
Zdjęcie szkoleniowe:
Prawie prosto:
Film z tańczącym robotem:
Film końcowy0: