Obsah:

Samoučiaci sa chaotický robot: 3 kroky
Samoučiaci sa chaotický robot: 3 kroky

Video: Samoučiaci sa chaotický robot: 3 kroky

Video: Samoučiaci sa chaotický robot: 3 kroky
Video: КАК НАСТРОИТЬ L4D2 2024, Júl
Anonim
Samoučiaci sa chaotický robot
Samoučiaci sa chaotický robot

Máte záujem o strojové učenie, AI a roboty? Nepotrebujete pracovať na nejakej luxusnej univerzite. Toto je popis môjho chaotického robota. Je to veľmi jednoduchý robot, ktorý demonštruje, ako používať kód vlastného učenia a ako ho implementovať do platformy arduino, v tomto prípade kvôli Arduino. Je to veľmi lacná platforma!

Kód vyvíja robota tak, aby sa robot naučil plaziť. Získava spätnú väzbu od myši, ktorá je ťahaná za sebou. Kód je „genetický“. To znamená, že je testovaných niekoľko jedincov a tí najlepší sú držaní a budú mať deti. To znamená, že kód sa vyvíja evolučným spôsobom.

Krok 1: Hardvér AKA robot

Hardvér AKA robot
Hardvér AKA robot
Hardvér AKA robot
Hardvér AKA robot
Hardvér AKA robot
Hardvér AKA robot

Potrebuješ:

- splatnosť 1 Arduino

- 8 mikroslužieb

- 1 myš PS/2

- 1 radič prevodov

- nejaký variant senzorového štítu alebo podobný, štítový senzor som unavený a navaril som si vlastný.

-drôty

-externý 5V zdroj pre servá

- nejaké kúsky kovového šrotu, nejaké lepidlo a nejaké oceľové vlákno. A páska!

Položte teda Due na podlahu. Okolo dajte serva do krúžku. Dajte ich dohromady so šrotom, lepidlom a niťou. Toto je časť chaosu! Pretože je dizajn chaotický, nie je možné predvídať, ako sa pohybovať, aby sa mohol plaziť. To je dôvod, prečo je samoučiaci sa kód správnou cestou!

Tipy: použite niekoľko dosť ťažkých kovových dielov, ktoré robotovi uľahčujú pohyb.

Pripojte servá k príslušnému, v mojom prípade sú pripojené k D39, 41, 43, 45, 47, 49, 51, 53.

Pripojte serva k externému 5V zdroju. Za týmto účelom postavte nejaký štít, alebo použite štítový štít alebo podobný. NEDÁVAJTE servá z kolíka 5 V, nestačí, Due sa pripáli. Na distribúciu 5 V na všetky servá som použil malú prototypovú dosku. Táto doska obsahuje aj radič úrovne hodín a dátových liniek myši PS/2. Doska napája myš aj 5V. Nezabudnite pripojiť uzemnenie z externého napájania na uzemnenie Arduino! schémy ukazujú, ako to všetko prepojiť.

Pripojte PS/2 k napájaniu (5 V) a uzemneniu. Pripojte hodinový a dátový riadok PS/2 k Due pomocou radiča úrovne. (vzhľadom na napätie 3,3 V, PS/2 na 5 V). Pripojte hodiny na D12 a dáta na D13.

Pre podrobnosti o protokole PS/2 je to veľmi dobrý návod:

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

Knižnica PS/2 od jazzycamel, ktorú som použil:

Krok 2: Kód

Kód
Kód

Na začiatok mi dovoľte povedať: NIE SOM programátor. Niektoré časti sú veľmi rozsiahle, skúsený programátor by to samozrejme mohol skrátiť a tak a tak.

Kód je samoštúdium a to je jadro projektu. Toto je jej zábavná časť! Znamená to, že robot sa vyvíja a je stále lepší a lepší, v tomto prípade sa zlepšuje pri plazení. Úžasné na tom je, že robot sa bude vyvíjať tak, ako mu budete kedykoľvek dávať spätnú väzbu. V tomto prípade ťahá myš PS/2 a čím dlhšie je myš potiahnutá, tým vyššie body získava.

To tiež znamená, že pomocou tohto kódu môžete svojho robota vycvičiť, aby robil niečo iné, pokiaľ je meraný a privádzaný späť do robota!

Ako vidíte na obrázkoch, myš je ťahaná po tenkom lanku. Najprv to bolo vtiahnuté do kábla myši. Kábel je však akýsi tuhý, a tak sa robot naučil myšou potriasť, namiesto toho, aby ju ťahal. Pretrepávanie prinieslo vysoké body…

Kód používa 50 osôb. Jadrom toho je pole 50 x 50 bajtov.

Jednotlivec je pole bajtov. Keď sa individual používa na spustenie robota, tento jedinec je odoslaný do funkcie v kóde nazývanej „tolken“.

Na začiatku behu je 8 premenných m1, m2, m3, m4, m5, m6, m7 a m8 (jedna pre každé servo). V tomto robote majú všetci konštantné počiatočné hodnoty. V "tolken" sú mś transformované v slučke prípad/swich v závislosti od hodnôt jednotlivca. napríklad hodnota „1“vykoná nasledovné: m1 = m1 + m2.

Ak je jednotlivec: 1, 2, 3, 0, 0, 0, 0….., potom sa mś transformuje nasledujúcim spôsobom:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken je zoznam 256 rôznych matematických operácií, takže každá možná hodnota jednotlivého poľa predstavuje matematickú zmenu m hodnôt.

Proces tolken sa vykonáva štyrikrát s čítaním medzi každým kolom a generovaním štyroch rôznych kódov motora pre každé „m“. Kódy motora sú hodnoty, ktoré sú neskôr odoslané na servá.

V každom kroku vývoja súťažia 4 jednotlivci v plazení. Dvaja najlepší jednotlivci budú rodičmi dvoch detí, deti nahradia dvoch najhorších jedincov. Keď sa narodia deti, spojenie „genetického kódu“od jedného rodiča sa vymení za plátok od druhého rodiča, čím sa vytvoria dvaja noví jedinci.

Ak žiadny jedinec nevykonáva žiadnu činnosť, dôjde k mutácii jedincov, aby sa vytvorili nové.

Kód nájdete na GitHub:

Krok 3: Ako to trénovať?

Toto je ošemetná časť. Aby ste mohli poriadne trénovať, musíte to po každom behu „vynulovať“. To znamená, že ho musíte zakaždým umiestniť do rovnakej polohy.

Do kódu som vložil niekoľko kontrolných bodov, aby som sa uistil, že robot je vo svojej počiatočnej polohe.

Zarovnajte teda robota a nechajte ho bežať.

Testuje 4 jednotlivcov a potom vyberie dvoch najlepších rodičov. Po náhrade najhoršieho za deti vytlačí niekoľko údajov o výkonnosti jednotlivcov. Vytlačí sa aj pole 50 x 50. Je rozumné skopírovať to do listu programu Excel alebo podobne. (alebo napíšte nejaký potrebný kód pri spracovaní) Ak sa splatnosť resetuje (to sa stáva z rôznych dôvodov), potom o svoju školiacu prácu neprídete. Pole môžete skopírovať/prilepiť do kódu a pokračovať v školení, ak ste zostali.

Môj robot sa naučil plaziť po niekoľkých hodinách. Stiahnite si video, aby ste ho mohli prehľadávať. Nešlo to tým smerom, ako som si myslel!

Skúste tiež rôzne podlahy! Môj robot si najlepšie počínal na nylonovom koberci.

Možné vylepšenia:

1. Bolo by lepšie mať samostatné nano na čítanie myši PS/2 a odoslať spracovanú vzdialenosť presunutú cez sériové číslo do nano. Čítanie mojej myši PS/2 je trochu roztrasené. To je dôvod, prečo myš číta/vymazáva časti kódu.

2. nejaký druh testovacej súpravy, ktorá ťahala robota späť do východiskovej polohy, by urýchlil výcvik.

3. Myslím si, že je múdre trénovať to trochu pomalšie ako ja. Pomalší tréning zaisťuje, že sa trénuje „správnym smerom“. Možným spôsobom by mohol byť priemerný výkon niekoľkých testovacích cyklov.

Odporúča: