Tartalomjegyzék:

Öntanuló kaotikus robot: 3 lépés
Öntanuló kaotikus robot: 3 lépés

Videó: Öntanuló kaotikus robot: 3 lépés

Videó: Öntanuló kaotikus robot: 3 lépés
Videó: ÍGÉRETES VAGY FÉLELMETES? Tilesch György, M.I.-szakértő /// F.P. 71. adás 2024, Július
Anonim
Öntanuló kaotikus robot
Öntanuló kaotikus robot

Érdekli a gépi tanulás, az AI és a robotok? Nem kell valami divatos egyetemen dolgozni. Ez a kaotikus robotom leírása. Ez egy nagyon egyszerű robot, amely bemutatja, hogyan kell használni az öntanuló kódot, és hogyan kell azt egy arduino platformba, jelen esetben Arduino esedékessé tenni. Ez egy nagyon olcsó platform!

A kód úgy fejleszti a robotot, hogy a robot megtanulja a kúszást. Visszajelzést kap az egeretől, amely mögé húzódik. A kód "genetikai". Ez azt jelenti, hogy számos egyedet tesztelnek, és a legjobbakat megtartják, és lesz babájuk. Ez azt jelenti, hogy a kód evolúciós módon fejlődik.

1. lépés: Hardver, más néven a robot

Hardver, más néven a Robot
Hardver, más néven a Robot
Hardver, más néven a Robot
Hardver, más néven a Robot
Hardver, más néven a Robot
Hardver, más néven a Robot

Szükséged van:

- 1 Arduino Due

- 8 mikroszervó

- 1 PS/2 egér

- 1 fokozatváltó

- az érzékelőpajzs valamilyen változata vagy hasonló, elegem lett az érzékelőpajzsból, és hegesztettem a sajátomat.

-vezetékek

-külső 5 V -os tápegység a szervókhoz

- néhány fémhulladék, néhány ragasztó és néhány acélszál. És szalag!

Tehát tegye a Due -t a padlóra. Tegye körbe a szervókat egy gyűrűbe. Tegye őket össze fémhulladékkal, ragasztóval és cérnával. Ez a káosz része! Mivel kialakítása kaotikus, kiszámíthatatlan, hogy hogyan kell mozogni, hogy feltérképezésre kerüljön. Ezért az önálló tanulási kód az út!

Tippek: használjon néhány meglehetősen nehéz fém alkatrészt, ez megkönnyíti a robot mozgását.

Csatlakoztassa a szervókat az esedékeshez, az én esetemben a D39, 41, 43, 45, 47, 49, 51, 53 -hoz vannak csatlakoztatva.

Csatlakoztassa a szervókat a külső 5 V -os tápegységhez. Ehhez építsen valamilyen pajzsot, vagy használjon érzékelőpajzsot vagy hasonlót. NE táplálja a szervókat az 5 V -os tűkből, ez nem elég, mert a Due ég. Egy kis prototípus táblát használtam az 5 V elosztására minden szervóra. Ez a tábla a PS/2 egér óra és adatvonalak szintváltóját is tartalmazza. A tábla is táplálja az egeret 5V -al. Ne felejtse el csatlakoztatni a földet a külső áramforrásból az Arduino földeléséhez! a vázlatok azt mutatják, hogyan kell mindezt összekapcsolni.

Csatlakoztassa a PS/2 -t a tápellátáshoz (5 V) és a földhöz. Csatlakoztassa a PS/2 óráját és adatvonalát a Due -hoz egy szintváltón keresztül. (esedékes 3,3 V, PS/2 5 V). Csatlakoztassa az órát a D12 -hez és az adatokat a D13 -hoz.

A PS/2 protokoll részleteihez ez egy nagyon jó oktatható:

www.instructables.com/id/Optical-Mouse-Od…

Az általam használt jazzycamel PS/2 könyvtár:

2. lépés: A kód

A kód
A kód

Először hadd mondjam el: NEM vagyok programozó. Néhány rész nagyon kiterjedt, egy képzett programozó természetesen lerövidítheti és így is.

A kód önálló tanulás, és ez a projekt lényege. Ez a szórakoztató része! Ez azt jelenti, hogy a robot fejlődik, és egyre jobb lesz, ebben az esetben egyre jobban mászik. A lenyűgöző dolog ebben az, hogy a robot olyan lesz, amilyennek visszaadja. Ebben az esetben egy PS/2 egeret húz, és minél tovább húzza az egeret, annál magasabb pontokat kap.

Ez azt is jelenti, hogy ezt a kódot arra használhatja, hogy a robotot valami másra tegye, amíg megmérik és visszaadják a robotnak!

Amint a képeken is látható, az egeret vékony zsinóron húzzák. Eleinte az egér kábelében húzták. A kábel azonban merev, ezért a robot megtanulta rázni az egeret ahelyett, hogy húzta volna. A rázás csúcspontokat hozott…

A kód 50 személyt használ. Ennek lényege egy 50x50 bájtos tömb.

Az egyén a bájtok tömbje. Ha az egyént használják a robot futtatására, akkor ezt az egyént a "tolken" nevű kódba küldik.

A futás kezdetén 8 változó van: m1, m2, m3, m4, m5, m6, m7 és m8 (minden szervóra egy). Ebben a robotban mindannyian állandó kiindulási értékekkel rendelkeznek. A "tolken" -ben a mś egy eset/swich ciklusban alakul át az egyén értékeitől függően. például az "1" érték a következőket hajtja végre: m1 = m1 + m2.

Ha egy személy: 1, 2, 3, 0, 0, 0, 0….., akkor az mś a következő módon lesz átalakítva:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

A Tolken 256 különböző matematikai művelet listája, így az egyedek tömbjének minden lehetséges értéke az m értékek matematikai változását jelenti.

A tolken-folyamat négyszer történik, minden kör között leolvasással, négy különböző motorkódot generálva minden "m" -hez. A motorkódok azok az értékek, amelyeket később elküld a szervóknak.

A fejlődés minden lépésében 4 egyed versenyez a kúszásban. A legjobb két egyén két baba szülei lesznek, a csecsemők a két legrosszabb egyed helyébe lépnek. Amikor babákat készítenek, az egyik szülő "genetikai kódjának" összeillesztését felváltják a másik szülő szeletére, ez két új egyént hoz létre.

Ha egyetlen egyed sem teljesít, akkor az egyedek mutációja történik, hogy újakat hozzon létre.

A kódot a GitHub webhelyen találja:

3. lépés: Hogyan kell edzeni?

Ez a trükkös rész. A megfelelő edzés érdekében minden futás után "alaphelyzetbe kell állítania". Ez azt jelenti, hogy minden alkalommal ugyanabba a helyzetbe kell helyeznie.

Néhány ellenőrző pontot helyeztem el a kódon belül annak biztosítására, hogy a robot a kiindulási helyzetben van.

Tehát igazítsa a robotot, és hagyja futni.

4 személyt tesztel, majd kiválasztja a legjobb 2 szülőt. Miután a legrosszabbat kicsikre cserélte, néhány adatot nyomtat az egyének teljesítményéről. Az 50x50 tömböt is kinyomtatja. Bölcs dolog ezt egy excel lapra vagy hasonlóra másolni. (vagy írjon be egy szükséges kódot a feldolgozás során) Ha a Due visszaáll (ez különböző okokból történik), akkor nem veszíti el az edzést. Másolhatja/beillesztheti a tömböt a kódba, és folytathatja az edzést, ha maradt.

A robotom pár óra múlva megtanult kúszni. Töltse le a videót, hogy feltérképezze. Nem abba az irányba ment, mint gondoltam!

Próbáljon ki különböző padlókat is! A robotom a legjobban nylon szőnyegen teljesített.

Lehetséges fejlesztések:

1. Jobb lenne, ha külön nano lenne a PS/2 egér olvasásához, és a feldolgozott távolságot soroson keresztül elküldené a nano -hoz. A PS/2 egér olvasata kissé ingatag. Ez az oka annak, hogy az egér leolvassa/törli a kód egyes részeit.

2. valamilyen tesztberendezés, amely visszahúzta a robotot a kiindulási helyzetébe, felgyorsítaná az edzést.

3. Szerintem bölcs dolog egy kicsit lassabban edzeni, mint én. A lassabb edzés biztosítja, hogy "a helyes irányba" edzik. Több próbaüzem átlagos teljesítménye is lehetséges.

Ajánlott: