INHOUDSOPGAWE:

Selfleer chaotiese robot: 3 stappe
Selfleer chaotiese robot: 3 stappe

Video: Selfleer chaotiese robot: 3 stappe

Video: Selfleer chaotiese robot: 3 stappe
Video: Бен Герцель: Неудержимый рост искусственного интеллекта 2024, Julie
Anonim
Selfleer chaotiese robot
Selfleer chaotiese robot

Stel u belang in masjienleer, AI en robotte? U hoef nie aan 'n luukse universiteit te werk nie. Dit is 'n beskrywing van my chaotiese robot. Dit is 'n baie eenvoudige robot om te demonstreer hoe om selfleerkode te gebruik en hoe om dit te implementeer in 'n arduino -platform, in hierdie geval 'n Arduino. Dit is 'n baie goedkoop platform!

Die kode ontwikkel die robot sodat die robot leer kruip. Dit kry terugvoer van die muis wat agter gesleep is. Die kode is 'geneties'. Dit beteken dat 'n aantal individue getoets word en die beste gehou word en babas sal hê. Dit beteken dat die kode op 'n evolusionêre manier ontwikkel.

Stap 1: Hardeware AKA die robot

Hardeware AKA die robot
Hardeware AKA die robot
Hardeware AKA die robot
Hardeware AKA die robot
Hardeware AKA die robot
Hardeware AKA die robot

Jy benodig:

- 1 Arduino Due

- 8 mikroservos

- 1 PS/2 muis

- 1 vlakverhoger

- 'n variant van 'n sensorskerm of soortgelyke, ek het moeg geword vir die sensorskerm en my eie gelas.

-drade

-externe 5V -kragtoevoer vir die servo's

- 'n paar stukke metaalskroot, 'n bietjie gom en 'n staaldraad. En plakband!

Sit die Due dus op die vloer. Sit die servo's in 'n ring om dit. Sit dit saam met afvalmetaal, gom en draad. Dit is die chaos -deel! Aangesien dit 'n chaotiese ontwerp het, is dit onvoorspelbaar om te bepaal hoe om te beweeg om dit te laat kruip. Dit is die rede waarom selfleer-kode die regte pad is!

Wenke: gebruik 'n paar redelik swaar metaalonderdele; dit maak die robot makliker om te beweeg.

Koppel die servo's aan die vereiste, in my geval is dit gekoppel aan D39, 41, 43, 45, 47, 49, 51, 53.

Koppel die servo's aan die eksterne 5V -kragtoevoer. Bou hiervoor 'n soort skild, of gebruik 'n sensorskerm of iets dergeliks. Moet NIE die servo's van die 5V -pen afvoer nie, dit is nie genoeg nie, Due sal brand. Ek het 'n klein prototipe bord gebruik om die 5 V aan alle servo's te versprei. Hierdie bord bevat ook die vlakverskuiwers vir die PS/2 -muishorlosie en data lyne. Die bord voer ook die muis met 5V. Onthou om die grond van eksterne krag aan die Arduino -grond te koppel! skemas wys hoe u dit alles kan koppel.

Koppel die PS/2 aan die krag (5V) en die grond. Koppel die horlosie en die datalinie van die PS/2 aan die Due deur middel van 'n vlakversneller. (as gevolg van 3.3V, PS/2 is 5V). Koppel die klok op D12 en die data op D13.

Vir meer inligting oor die PS/2 -protokol, is dit 'n baie goeie instruksie:

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

Die PS/2 -biblioteek deur jazzycamel wat ek gebruik het:

Stap 2: Die kode

Die kode
Die kode

Laat ek eers sê: ek is NIE 'n programmeerder nie. Sommige dele is baie uitgebreid, 'n vaardige programmeerder kan dit natuurlik verkort, en so.

Die kode is selfleer en dit is die kern van die projek. Dit is die lekker deel daarvan! Dit beteken dat die robot ontwikkel en beter en beter word, in hierdie geval word dit beter deur te kruip. Die wonderlike hiervan is dat die robot sal ontwikkel tot wat u ook al terugvoer. In hierdie geval sleep dit 'n PS/2 -muis en hoe langer die muis gesleep word, hoe hoër punte word dit.

Dit beteken ook dat u hierdie kode kan gebruik om u robot op te lei om iets anders te doen, solank dit gemeet en aan die robot teruggevoer word!

Soos u op die beelde kan sien, word die muis aan 'n dun koord gesleep. Eers is dit met die muis-kabel gesleep. Die kabel is egter taamlik styf, so die robot het geleer om die muis te skud in plaas daarvan om dit te sleep. Skud het hoë punte opgelewer …

Die kode gebruik 50 individue. Die kern hiervan is 'n skikking van 50x50 grepe.

'N Individ is 'n verskeidenheid grepe. As die individu gebruik word om die robot te laat loop, word hierdie individu gestuur na 'n funksie in die kode genaamd "tolken".

Aan die begin van 'n lopie is daar 8 veranderlikes m1, m2, m3, m4, m5, m6, m7 en m8 (een vir elke servo). In hierdie robot het hulle almal konstante beginwaardes. In "tolken" word die mś getransformeer in 'n case/swich lus, afhangende van die waardes van die individu. 'n waarde van "1" voer byvoorbeeld die volgende uit: m1 = m1 + m2.

As 'n individu: 1, 2, 3, 0, 0, 0, 0….. is, sal die mś op die volgende manier getransformeer word:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken is 'n lys van 256 verskillende wiskundige bewerkings, so elke moontlike waarde van die individuele groep verteenwoordig 'n wiskundige verandering van die m -waardes.

Die tolkenproses word vier keer gedoen, met uitlees tussen elke rondte, wat vier verskillende motorkodes vir elke "m" genereer. Die motorkodes is die waardes wat later na die servo's gestuur word.

In elke stap van die ontwikkeling ding 4 individue mee om te kruip. Die beste twee individue sal ouers wees vir twee babas, die babas sal die twee ergste individue vervang. As babas gemaak word, word 'n deel "genetiese kode" van die een ouer verruil vir 'n sny van die ander ouer, wat twee nuwe individue skep.

As geen individu enigsins presteer nie, sal mutasie van die individue plaasvind om nuwes te genereer.

U kan die kode by GitHub vind:

Stap 3: Hoe om dit op te lei?

Dit is die moeilike deel. Om behoorlik te oefen, moet u dit na elke lopie 'herstel'. Dit beteken dat u dit elke keer in dieselfde posisie moet plaas.

Ek het 'n paar kontrolepunte in die kode geplaas om te verseker dat die robot in die beginposisie is.

Stel die robot in lyn en laat dit hardloop.

Dit toets 4 individue en kies dan die beste twee om ouers te wees. Nadat die ergste met die babas vervang is, druk dit 'n paar data oor die prestasie van die individue af. Dit druk ook die 50x50 -skikking uit. Dit is verstandig om dit na 'n Excel -blad of soortgelyke te kopieer. (of skryf 'n behoeftekode in die verwerking) As die terugbetaling herstel word (dit gebeur om verskillende redes), sal u u opleiding nie verloor nie. U kan die skikking in die kode kopieer/plak en aanhou oefen as u vertrek.

My robot het na 'n paar uur geleer om te kruip. Laai die video af om dit te sien kruip. Dit het nie in die rigting gegaan wat ek gedink het dit sou doen nie!

Probeer ook verskillende vloere! My robot het die beste gevaar op 'n nylon tapyt.

Moontlike verbeterings:

1. Dit is beter om 'n aparte nano te hê om die PS/2 -muis te lees, en die verwerkte afstand wat oor die reeks oorgedra is, na die nano te stuur. Die lees van my PS/2 -muis was 'n bietjie wankelrig. Dit is die rede waarom die muis dele van die kode lees/uitvee.

2. 'n soort tester wat die robot na sy beginposisie teruggesleep het, sal die opleiding bespoedig.

3. Ek dink dit is verstandig om dit 'n bietjie stadiger te oefen as wat ek gedoen het. Stadiger opleiding verseker dat dit "in die regte rigting" opgelei word. Die gemiddelde prestasie van verskeie toetslopies kan 'n moontlike manier wees.

Aanbeveel: