Satura rādītājs:

Pašmācības haotiskais robots: 3 soļi
Pašmācības haotiskais robots: 3 soļi

Video: Pašmācības haotiskais robots: 3 soļi

Video: Pašmācības haotiskais robots: 3 soļi
Video: ROCKET LEAGUE Artificial Intelligence Combats Loneliness? 2024, Novembris
Anonim
Pašmācības haotiskais robots
Pašmācības haotiskais robots

Vai jūs interesē mašīnu mācīšanās, AI un roboti? Jums nav jāstrādā kādā iedomātā universitātē. Šis ir mana haotiskā robota apraksts. Tas ir ļoti vienkāršs robots, lai parādītu, kā izmantot pašmācības kodu un kā to ieviest arduino platformā, šajā gadījumā - Arduino. Tā ir ļoti lēta platforma!

Kods attīsta robotu tā, lai robots iemācītos rāpot. Tas saņem atsauksmes no peles, kas tiek vilkta aiz muguras. Kods ir "ģenētisks". Tas nozīmē, ka tiek pārbaudīti vairāki indivīdi, un labākie tiek turēti, un viņiem būs bērni. Tas nozīmē, ka kods attīstās evolucionāri.

1. darbība. Aparatūra, piemēram, robots

Aparatūra, piemēram, robots
Aparatūra, piemēram, robots
Aparatūra, piemēram, robots
Aparatūra, piemēram, robots
Aparatūra, piemēram, robots
Aparatūra, piemēram, robots

Tev vajag:

- 1 Arduino termiņš

- 8 mikroservi

- 1 PS/2 pele

- 1 līmeņa pārslēdzējs

- kāds sensora vairoga variants vai tamlīdzīgi, man apnika sensora vairogs un sametināju savu.

-vadi

-ārējais 5 V barošanas avots servos

- daži metāllūžņu gabali, daži līme un daži tērauda diegi. Un lente!

Tāpēc ielieciet Due uz grīdas. Ielieciet servos gredzenu ap to. Salieciet tos kopā ar metāllūžņiem, līmi un diegu. Šī ir haosa daļa! Tā kā tā dizains ir haotisks, nav iespējams noteikt, kā pārvietoties, lai to pārmeklētu. Tāpēc pašmācības kods ir pareizais ceļš!

Padomi: izmantojiet dažas diezgan smagas metāla detaļas, tas atvieglo robota pārvietošanos.

Pievienojiet servos pienākošos, manā gadījumā tie ir savienoti ar D39, 41, 43, 45, 47, 49, 51, 53.

Savienojiet servos ar ārējo 5V barošanas avotu. Šim nolūkam izveidojiet kādu vairogu vai izmantojiet sensora vairogu vai tamlīdzīgu. NEDRĪKST barot servos no nodevas 5V tapas, ar to nepietiek, jo sadegs. Es izmantoju nelielu dēļa prototipu, lai izplatītu 5 V visiem servos. Šajā panelī ir arī PS/2 peles pulksteņa un datu līniju līmeņa pārslēdzējs. Dēlis arī baro peli ar 5V. Atcerieties, ka zemējumu no ārējās barošanas pievienojiet Arduino zemei! shēma parāda, kā to visu savienot.

Pievienojiet PS/2 strāvas avotam (5 V) un zemē. Savienojiet PS/2 pulksteni un datu līniju ar Due, izmantojot līmeņa pārslēdzēju. (dēļ iet 3.3V, PS/2 iet 5V). Savienojiet pulksteni D12 un datus D13.

Lai iegūtu sīkāku informāciju par PS/2 protokolu, tas ir ļoti labs pamācība:

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

Manis izmantotā jazzycamel PS/2 bibliotēka:

2. darbība: kods

Kods
Kods

Sākumā ļaujiet man teikt: es neesmu programmētājs. Dažas daļas ir ļoti plašas, kvalificēts programmētājs, protams, varētu to saīsināt un tā, un tā.

Kods ir pašmācība, un tas ir projekta kodols. Šī ir tā jautrā daļa! Tas nozīmē, ka robots attīstās un kļūst arvien labāks, šajā gadījumā tas kļūst labāks rāpošanā. Pārsteidzošākais ir tas, ka robots attīstīsies tādā veidā, par kādu jūs to atgriezīsit. Šajā gadījumā tā velk PS/2 peli un, jo ilgāk pele tiek vilkta, jo augstākus punktus tā iegūst.

Tas nozīmē arī to, ka jūs varat izmantot šo kodu, lai apmācītu savu robotu darīt kaut ko citu, ja vien tas tiek izmērīts un atpakaļ robotam!

Kā redzams attēlos, peli velk uz plānas auklas. Sākumā tas tika ievilkts peles kabeli. Tomēr kabelis ir stīvs, tāpēc robots iemācījās kratīt peli, nevis vilkt to. Kratīšana radīja augstus punktus…

Kods izmanto 50 personas. Tās kodols ir 50x50 baitu masīvs.

Indivīds ir baitu masīvs. Ja indivīds tiek izmantots robota vadīšanai, šis indivīds tiek nosūtīts funkcijai ar kodu, ko sauc par "tolken".

Skrējiena sākumā ir 8 mainīgie m1, m2, m3, m4, m5, m6, m7 un m8 (viens katram servo). Šajā robotā viņiem visiem ir nemainīgas sākuma vērtības. In "tolken" mś tiek pārveidoti gadījumā/swich cilpa atkarībā no indivīda vērtībām. piemēram, vērtība "1" izpilda sekojošo: m1 = m1 + m2.

Ja indivīds ir: 1, 2, 3, 0, 0, 0, 0….., tad mś tiks pārveidots šādā veidā:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken ir saraksts ar 256 dažādām matemātiskām operācijām, tāpēc katra iespējamā indivīdu masīva vērtība atspoguļo m vērtību matemātiskas izmaiņas.

Tolken process tiek veikts 4 reizes, nolasot starp katru apli, ģenerējot četrus dažādus motora kodus katram "m". Motokodi ir vērtības, kas vēlāk tiek nosūtītas servos.

Katrā attīstības posmā četri indivīdi sacenšas rāpošanā. Labākie divi indivīdi būs divu mazuļu vecāki, mazuļi aizstās divus sliktākos indivīdus. Izgatavojot mazuļus, viena ģenētiskā "ģenētiskā koda" savienojums tiek apmainīts pret otra vecāka šķēli, tas rada divus jaunus indivīdus.

Ja neviens indivīds nedarbojas vispār, notiek indivīdu mutācija, lai radītu jaunus.

Kodu varat atrast vietnē GitHub:

3. solis: kā to apmācīt?

Šī ir sarežģītā daļa. Lai pareizi trenētos, pēc katra skrējiena tas ir “jāatiestata”. Tas nozīmē, ka jums tas katru reizi jānovieto vienā pozīcijā.

Esmu ievietojis dažus pārbaudes punktus koda iekšpusē, lai pārliecinātos, ka robots atrodas sākuma stāvoklī.

Tāpēc izlīdziniet robotu un ļaujiet tam darboties.

Tā pārbauda 4 indivīdus un pēc tam izvēlas divus labākos būt vecākiem. Pēc sliktākā aizstāšanas ar mazuļiem tas izdrukā dažus datus par indivīdu sniegumu. Tas arī izdrukā 50x50 masīvu. Ir prātīgi to kopēt Excel lapā vai līdzīgā. (vai apstrādājot uzrakstiet kādu nepieciešamības kodu) Ja termiņš tiek atiestatīts (tas notiek dažādu iemeslu dēļ), jūs nezaudēsiet mācību darbu. Jūs varat kopēt/ielīmēt masīvu kodā un turpināt mācības, ja bijāt atstājis.

Mans robots iemācījās rāpot pēc pāris stundām. Lejupielādējiet videoklipu, lai to pārmeklētu. Tas nenotika tajā virzienā, kā es domāju!

Izmēģiniet arī dažādus stāvus! Mans robots vislabāk darbojās uz neilona paklāja.

Iespējamie uzlabojumi:

1. Būtu labāk, ja būtu atsevišķs nano, lai izlasītu peli PS/2, un nosūtītu apstrādāto attālumu, kas pārvietots pa seriālo, uz nano. Manas PS/2 peles rādījums bija nedaudz nestabils. Tas ir iemesls, kāpēc pele nolasa/notīra koda daļas.

2. kaut kāda testa ierīce, kas vilka robotu atpakaļ sākuma stāvoklī, paātrinātu apmācību.

3. Es domāju, ka ir prātīgi to trenēt mazliet lēnāk nekā es. Lēnāka apmācība nodrošina, ka tā tiek apmācīta "pareizajā virzienā". Iespējamais veids varētu būt vairāku testa braucienu vidējā veiktspēja.

Ieteicams: