Spisu treści:
Wideo: Samouczący się robot chaotyczny: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Interesujesz się uczeniem maszynowym, sztuczną inteligencją i robotami? Nie musisz pracować na jakimś eleganckim uniwersytecie. To jest opis mojego chaotycznego robota. Jest to bardzo prosty robot, który demonstruje, jak korzystać z samouczącego się kodu i jak zaimplementować go na platformie arduino, w tym przypadku Arduino due. To bardzo tania platforma!
Kod ewoluuje robota tak, że robot uczy się czołgać. Otrzymuje informację zwrotną z myszy, która jest przeciągana z tyłu. Kod jest „genetyczny”. Oznacza to, że wiele osobników jest testowanych, a najlepsze są trzymane i będą miały dzieci. Oznacza to, że kod ewoluuje w sposób ewolucyjny.
Krok 1: Sprzęt AKA Robot
Potrzebujesz:
- 1 Arduino Due
- 8 mikroserwów
- 1 mysz PS/2
- 1 poziomowiec
- jakiś wariant osłony czujnika lub podobnej, zmęczyłem się osłoną czujnika i przyspawałem własną.
-druty
-zewnętrzny zasilacz 5V dla serw
- trochę złomu, trochę kleju i trochę stalowej nici. I taśma!
Więc połóż Due na podłodze. Umieść serwa w pierścieniu wokół niego. Połącz je ze złomu, kleju i nici. To jest część chaosu! Ponieważ jest chaotyczny w swoim projekcie, nieprzewidywalne jest określenie, jak się poruszać, aby się czołgać. Dlatego właśnie kod samouczący się jest drogą do zrobienia!
Wskazówki: użyj dość ciężkich metalowych części, ułatwi to poruszanie się robota.
Podłącz serwa do właściwych, w moim przypadku są podłączone do D39, 41, 43, 45, 47, 49, 51, 53.
Podłącz serwa do zewnętrznego zasilacza 5V. W tym celu zbuduj jakiś rodzaj osłony lub użyj osłony czujnika lub podobnej. Nie podawaj serw z pinu 5V, to nie wystarczy, Due się spali. Użyłem małej płytki prototypowej, aby rozprowadzić napięcie 5 V do wszystkich serw. Na tej płycie znajduje się również przełącznik poziomu zegara myszy PS/2 i linii danych. Płytka zasila również mysz 5V. Pamiętaj o podłączeniu uziemienia z zewnętrznego zasilania do Arduino! schemat pokazuje jak to wszystko połączyć.
Podłącz PS/2 do zasilania (5 V) i uziemienia. Podłącz zegar i linię danych PS/2 do Due za pomocą przełącznika poziomu. (ze względu na 3,3 V, PS/2 na 5 V). Podłącz zegar na D12 i dane na D13.
Aby uzyskać szczegółowe informacje na temat protokołu PS/2, jest to bardzo dobra instrukcja:
www.instructables.com/id/Optical-Mouse-Od…
Biblioteka PS/2 autorstwa jazzycamel, z której korzystałem:
Krok 2: Kodeks
Na początek powiem: NIE jestem programistą. Niektóre części są bardzo rozbudowane, wprawny programista mógłby oczywiście je skrócić i tak i tak.
Kod jest samouczący się i to jest sedno projektu. To jest zabawna część tego! Oznacza to, że robot ewoluuje i staje się coraz lepszy, w tym przypadku coraz lepiej się czołga. Niesamowitą rzeczą w tym jest to, że robot będzie ewoluował w zależności od tego, na czym go opuścisz. W tym przypadku przeciąga mysz PS/2 i im dłużej mysz jest przeciągana, tym wyższe punkty otrzymuje.
Oznacza to również, że możesz użyć tego kodu, aby nauczyć robota robienia czegoś innego, o ile jest on mierzony i przesyłany z powrotem do robota!
Jak widać na zdjęciach, myszkę przeciągamy na cienkim sznurku. Na początku został wciągnięty w kabel myszy. Kabel jest jednak dość sztywny, więc robot nauczył się potrząsać myszą, zamiast ją ciągnąć. Potrząsanie powodowało wysokie punkty…
Kod wykorzystuje 50 jednostek. Rdzeniem tego jest tablica 50x50 bajtów.
Individ to tablica bajtów. Kiedy individ jest używany do uruchomienia robota, individ jest wysyłany do funkcji w kodzie o nazwie „tolken”.
Na początku przebiegu jest 8 zmiennych m1, m2, m3, m4, m5, m6, m7 i m8 (po jednej na każdy serwo). W tym robocie wszystkie mają stałe wartości początkowe. W "tolken" mś są przekształcane w pętli przypadku/przełącznika w zależności od wartości jednostki. na przykład wartość „1” wykonuje następujące czynności: m1 = m1 + m2.
Jeżeli indywiduum to: 1, 2, 3, 0, 0, 0, 0….. to mś zostanie przekształcony w następujący sposób:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken to lista 256 różnych operacji matematycznych, więc każda możliwa wartość tablicy individs reprezentuje matematyczną zmianę wartości m.
Proces tolken jest wykonywany 4 razy, z odczytem między każdym okrążeniem, generując cztery różne kody silnika dla każdego „m”. Kody silnika to wartości, które później są wysyłane do serw.
Na każdym etapie ewolucji w pełzaniu rywalizują 4 osobniki. Dwie najlepsze osobniki będą rodzicami dwojga dzieci, dzieci zastąpią dwie najgorsze osobniki. Kiedy powstają dzieci, splot „kodu genetycznego” od jednego rodzica jest wymieniany na kawałek od drugiego rodzica, co tworzy dwie nowe osobniki.
Jeśli żadna jednostka w ogóle nie działa, nastąpi mutacja osobników w celu wygenerowania nowych.
Kod znajdziesz na GitHub:
Krok 3: Jak to wytrenować?
To jest trudna część. Aby prawidłowo trenować, trzeba go „zresetować” po każdym biegu. Oznacza to, że za każdym razem musisz umieszczać go w tej samej pozycji.
W kodzie umieściłem kilka punktów kontrolnych, aby upewnić się, że robot znajduje się w pozycji wyjściowej.
Wyrównaj więc robota i pozwól mu działać.
Testuje 4 osobniki, a następnie wybiera 2 najlepsze na rodziców. Po zamienieniu najgorszego na dzieci, drukuje pewne dane na temat wyników poszczególnych osobników. Drukuje również tablicę 50x50. Dobrze jest skopiować to do arkusza Excela lub podobnego. (lub napisz kod potrzebny do przetwarzania) Jeśli Due zostanie zresetowany (dzieje się to z różnych powodów), nie stracisz swojej pracy szkoleniowej. Możesz skopiować/wkleić tablicę do kodu i kontynuować trening tam, gdzie cię zostawiłeś.
Mój robot nauczył się raczkować po kilku godzinach. Pobierz film, aby zobaczyć, jak się indeksuje. Nie poszło w kierunku, w którym myślałem, że pójdzie!
Wypróbuj także różne podłogi! Mój robot najlepiej radził sobie na nylonowym dywanie.
Możliwe ulepszenia:
1. Lepiej byłoby mieć osobne nano do odczytu myszy PS/2 i wysyłania przetworzonej odległości przesuniętej przez serial do nano. Czytanie mojej myszy PS/2 jest nieco chwiejne. To jest powód, dla którego mysz czyta/czyści fragmenty kodu.
2. jakiś rodzaj testera, który przeciągnął robota z powrotem do pozycji wyjściowej, przyspieszyłby trening.
3. Myślę, że rozsądnie jest trenować trochę wolniej niż ja. Wolniejszy trening zapewnia, że jest trenowany „we właściwym kierunku”. Możliwym sposobem może być średnia wydajność kilku przebiegów testowych.
Zalecana:
Robot do wspinania się po linie: 4 kroki
Robot do wspinania się po linie: Jestem Tanveesh. Kiedy odrabiałem pracę domową, robiłem kilka rzeczy. Z inspiracji APJ Abdula Kalama zrobiłem robota do wspinania się po linie. To jest mój wynalazek
Samouczący się robot krab labirynt PROTOTYP 1 STAN NIEUKOŃCZONY: 11 kroków
Samouczący się robot krab labirynt PROTOTYP 1 STATUS NIEKOMPLETNY: ZRZECZENIE SIĘ!!: Cześć, przepraszam za kiepskie zdjęcia, dodam więcej instrukcji i schematów później (i bardziej szczegółowe szczegóły. Nie udokumentowałem procesu (zamiast tego po prostu zrobiłem) film poklatkowy). Również ta instrukcja jest niekompletna, tak jak ja
Zestaw do lutowania SMD, czyli jak nauczyłem się przestać się martwić i pokochać tani chiński zestaw: 6 kroków
Zestaw do lutowania SMD, czyli jak nauczyłem się przestać się martwić i pokochać tani chiński zestaw: To nie jest instrukcja dotycząca lutowania. To jest instruktaż o tym, jak zbudować tani chiński zestaw. Porzekadło jest takie, że dostajesz to, za co płacisz, a oto, co otrzymujesz: Słabo udokumentowane. Wątpliwa jakość części. Brak wsparcia. Więc po co kupować
Wodoodporne głośniki, które unoszą się na wodzie - „Unosi się, podnosi i kołysze nutami!”: 7 kroków (ze zdjęciami)
Wodoodporne głośniki, które pływają - „Unosi się, podnosi i kołysze nutami!”: Projekt tego wodoodpornego głośnika został zainspirowany licznymi wyprawami nad rzekę Gila w Arizonie (oraz „Jestem na łodzi!” SNL!). ). Będziemy spływać po rzece lub przywiązywać linki do brzegu, aby nasze spławiki stały tuż przy naszym kempingu. Wszyscy h
Kula śmierci: czyli jak nauczyłem się przestać się martwić i pokochać Głośniki Apple Pro: 11 kroków (ze zdjęciami)
Kula śmierci: czyli jak nauczyłem się przestać się martwić i pokochać głośniki Apple Pro: Zawsze powtarzam, że od czasu wyrzucenia „beżowego pudełka” firma Apple zawsze była liderem w dziedzinie wzornictwa przemysłowego. Integracji formy i funkcji nie może dotknąć żaden inny producent w żadnej branży (Porsche jest blisko). Jego