Sadržaj:

Kaotični robot za samoučenje: 3 koraka
Kaotični robot za samoučenje: 3 koraka

Video: Kaotični robot za samoučenje: 3 koraka

Video: Kaotični robot za samoučenje: 3 koraka
Video: Томас Кэмпбелл: Эго, паранормальные пси, мой большой палец на ноге 2024, Studeni
Anonim
Kaotični robot za samoučenje
Kaotični robot za samoučenje

Zanima li vas strojno učenje, AI i roboti? Ne morate raditi na nekom otmjenom sveučilištu. Ovo je opis mog kaotičnog robota. To je vrlo jednostavan robot koji demonstrira kako koristiti kod za samoučenje i kako ga implementirati u arduino platformu, u ovom slučaju zbog Arduina. To je vrlo jeftina platforma!

Kôd razvija robota tako da robot uči puzati. Dobiva povratnu informaciju od miša koji se vuče iza. Kôd je "genetski". To znači da se određeni broj osoba testira, a najbolji čuvaju i imat će bebe. To znači da se kôd razvija na evolucijski način.

Korak 1: Hardver AKA Robot

Hardver AKA Robot
Hardver AKA Robot
Hardver AKA Robot
Hardver AKA Robot
Hardver AKA Robot
Hardver AKA Robot

Trebaš:

- 1 Arduino Due

- 8 mikroserva

- 1 miš/2 miša

- 1 mjenjač razina

- neka varijanta senzorskog štita ili slično, dosadio mi je štitnik senzora i zavario sam svoj.

-žiči

-vanjsko napajanje 5V za servomotore

- neki komadi metalnog otpada, malo ljepila i neki čelični konac. I traka!

Zato stavite Due na pod. Postavite servo u prsten oko njega. Spojite ih metalnim otpadom, ljepilom i koncem. Ovo je dio kaosa! Budući da je kaotičan u svom dizajnu, nepredvidivo je odrediti kako se kretati kako bi doveo do puzanja. To je razlog zašto je kôd za samostalno učenje!

Savjeti: upotrijebite neke prilično teške metalne dijelove, što olakšava kretanje robota.

Spojite servomotore na dospijeće, u mom slučaju spojeni su na D39, 41, 43, 45, 47, 49, 51, 53.

Spojite servosisteme na vanjsko napajanje od 5 V. U tu svrhu izgradite neku vrstu štita ili upotrijebite štitnik senzora ili slično. NEMOJTE napajati servosisteme sa 5V priključka, to nije dovoljno, Due će izgorjeti. Koristio sam malu prototipnu ploču za distribuciju 5 V na sve servomotore. Ova ploča također sadrži prekidač razine za PS/2 sat miša i podatkovne linije. Ploča također napaja miša s 5V. Ne zaboravite spojiti uzemljenje sa vanjskog napajanja na Arduino odgovarajuće uzemljenje! sheme pokazuju kako to sve povezati.

Spojite PS/2 na napajanje (5V) i masu. Spojite sat i podatkovnu liniju PS/2 na Due putem mjenjača razine. (dospijeva 3.3V, PS/2 ide 5V). Spojite sat na D12 i podatke na D13.

Za detalje o PS/2 protokolu ovo je vrlo dobro uputstvo:

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

Knjižnica PS/2 jazzycamela koju sam koristio:

Korak 2: Kôd

Kod
Kod

Isprva mi dopustite da kažem: NISAM programer. Neki su dijelovi vrlo opsežni, vješt programer bi to naravno mogao skratiti i tako i tako.

Kôd se sam uči i to je srž projekta. Ovo je zabavan dio toga! To znači da se robot razvija i postaje sve bolji, u ovom slučaju postaje sve bolji u puzanju. Nevjerojatna stvar u vezi s tim je da će robot evoluirati do onoga na što mu vratite povratnu informaciju. U tom slučaju vuče PS/2 miš i što se dulje miša vuče, dobiva više bodova.

To također znači da pomoću ovog koda možete naučiti svog robota da radi nešto drugo, sve dok se mjeri i šalje robotu natrag!

Kao što možete vidjeti na slikama, miš se vuče po tankom kabelu. Isprva se vukao u kabel miša. No, kabel je nekako ukočen pa je robot naučio tresti miša, umjesto da ga vuče. Tresenje je donijelo vrhunske točke…

Kôd koristi 50 osoba. Jezgra ovoga je niz od 50x50 bajtova.

Pojedinac je niz bajtova. Kada se pojedinac koristi za pokretanje robota, taj se pojedinac šalje na funkciju u kodu zvanom "tolken".

Na početku rada postoji 8 varijabli m1, m2, m3, m4, m5, m6, m7 i m8 (po jedna za svaki servo). U ovom robotu svi imaju konstantne početne vrijednosti. U "tolkenu" se mś pretvara u petlju slučaj/swich ovisno o vrijednostima pojedinca. na primjer vrijednost "1" izvršava sljedeće: m1 = m1 + m2.

Ako je pojedinac: 1, 2, 3, 0, 0, 0, 0….. tada će se mś transformirati na sljedeći način:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken je popis od 256 različitih matematičkih operacija, pa svaka moguća vrijednost polja individs predstavlja matematičku promjenu m vrijednosti.

Tolken-proces se izvodi 4 puta, s očitavanjem između svakog kruga, generirajući četiri različita koda motora za svaki "m". Kodovi motora su vrijednosti koje se kasnije šalju servo pogonima.

U svakom koraku evolucije, 4 osobe se natječu u puzanju. Najbolja dva pojedinca bit će roditelji dvjema bebama, bebe će zamijeniti dva najgora pojedinca. Kad se naprave bebe, spoj "genetskog koda" od jednog roditelja mijenja se za krišku od drugog roditelja, to stvara dvije nove jedinke.

Ako niti jedan pojedinac uopće ne nastupa, doći će do mutacije individua kako bi se stvorile nove.

Kôd možete pronaći na GitHub-u:

Korak 3: Kako ga istrenirati?

Ovo je lukav dio. Da biste pravilno trenirali, morate ga "resetirati" nakon svakog trčanja. To znači da ga morate svaki put staviti u isti položaj.

U kodu sam stavio nekoliko kontrolnih točaka kako bih se uvjerio da je robot u svom početnom položaju.

Zato poravnajte robota i pustite ga da radi.

Testira 4 osobe, a zatim bira 2 najbolja za roditelje. Nakon što je najgore zamijenio bebama, ispisuje neke podatke o izvedbi pojedinaca. Također ispisuje niz 50x50. Mudro je ovo kopirati u excel list ili slično. (ili napišite neki potreban kod u obradi) Ako se Due vrati (to se događa iz različitih razloga), nećete izgubiti svoj rad na obuci. Niz možete kopirati/zalijepiti u kôd i nastaviti s obukom.

Moj je robot naučio puzati nakon par sati. Preuzmite videozapis da biste ga indeksirali. Nije išlo u smjeru u kojem sam mislio da hoće!

Također isprobajte različite podove! Moj robot se najbolje pokazao na najlonskom tepihu.

Moguća poboljšanja:

1. Bilo bi bolje imati zaseban nano za čitanje miša PS/2 i poslati obrađenu udaljenost pomaknutu preko serijske u nano. Čitanje mog PS/2 miša pomalo je klimavo. To je razlog zašto miš čita/briše dijelove koda.

2. neka vrsta ispitne opreme koja je robota odvukla natrag u početni položaj ubrzala bi obuku.

3. Mislim da je pametno trenirati malo sporije nego ja. Sporiji trening osigurava da se trenira "u pravom smjeru". Prosječna izvedba nekoliko probnih vožnji mogla bi biti mogući način.

Preporučeni: