Sisällysluettelo:
Video: Itseoppiva kaoottinen robotti: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Oletko kiinnostunut koneoppimisesta, AI ja robotit? Sinun ei tarvitse työskennellä hienossa yliopistossa. Tämä on kuvaus kaoottisesta robotistani. Se on hyvin yksinkertainen robotti, joka osoittaa, kuinka käyttää itseoppivaa koodia ja kuinka se voidaan asentaa arduino -alustalle, tässä tapauksessa Arduinolle. Se on erittäin halpa alusta!
Koodi kehittää robottia niin, että robotti oppii indeksoimaan. Se saa palautetta hiirestä, joka vedetään taakse. Koodi on "geneettinen". Tämä tarkoittaa, että useita yksilöitä testataan ja parhaat pidetään ja saavat lapsia. Tämä tarkoittaa sitä, että koodi kehittyy evoluutiolla.
Vaihe 1: Laitteisto, kuten robotti
Tarvitset:
- 1 Arduino Due
- 8 mikroservoa
- 1 PS/2 -hiiri
- 1 tasonvaihtaja
- jonkinlainen anturisuoja tai vastaava, kyllästyin anturisuojaan ja hitsasin oman.
-johdot
-ulkoinen 5V virtalähde servoille
- jotkut metalliromut, osa liimaa ja osa teräslankaa. Ja nauha!
Joten laita Due lattialle. Laita servot renkaaseen sen ympärille. Laita ne yhteen metalliromun, liiman ja langan kanssa. Tämä on kaaoksen osa! Koska se on rakenteeltaan kaoottinen, on arvaamatonta määrittää, miten liikkua saada se indeksoimaan. Siksi itseoppiva koodi on oikea tapa edetä!
Vinkkejä: käytä melko raskaita metalliosia, se helpottaa robotin liikkumista.
Liitä servot erääntyneeseen, minun tapauksessani ne on liitetty D39, 41, 43, 45, 47, 49, 51, 53.
Liitä servot ulkoiseen 5 V: n virtalähteeseen. Rakenna tätä varten jonkinlainen suoja tai käytä anturisuojaa tai vastaavaa. ÄLÄ syötä servoja 5V: n liittimistä, se ei riitä, Due palaa. Käytin pientä prototyyppikorttia jakamaan 5 V kaikille servoille. Tämä kortti sisältää myös tasonsiirtimen PS/2 -hiiren kellolle ja datalinjoille. Taulu syöttää myös hiirtä 5V jännitteellä. Muista kytkeä maadoitus ulkoisesta virtalähteestä Arduinon maadoitukseen! kaaviot osoittavat, miten kaikki yhdistetään.
Liitä PS/2 virtalähteeseen (5 V) ja maahan. Liitä PS/2: n kello ja datalinja Due -tasoon tasonsiirtimen kautta. (erääntyy 3,3 V, PS/2 5 V). Yhdistä kello D12: een ja data D13: een.
Lisätietoja PS/2 -protokollasta on tämä erittäin hyvä ohje:
www.instructables.com/id/Optical-Mouse-Od…
Käyttämäni jazzycamelin PS/2 -kirjasto:
Vaihe 2: Koodi
Aluksi haluan sanoa: En ole ohjelmoija. Jotkut osat ovat erittäin laajoja, taitava ohjelmoija voisi tietysti lyhentää sitä ja niin.
Koodi on itseoppiva ja tämä on projektin ydin. Tämä on hauska osa sitä! Se tarkoittaa, että robotti kehittyy ja paranee ja paranee, tässä tapauksessa se paranee indeksoinnissa. Hämmästyttävää tässä on se, että robotti kehittyy sellaiseksi kuin koskaan palautat sen. Tässä tapauksessa se vetää PS/2 -hiirtä ja mitä kauemmin hiirtä vedetään, sitä korkeammat pisteet se saa.
Tämä tarkoittaa myös sitä, että voit käyttää tätä koodia opettaaksesi robottiasi tekemään jotain muuta, kunhan se mitataan ja syötetään takaisin robotille!
Kuten kuvista näkyy, hiirtä vedetään ohuella narulla. Aluksi se vedettiin hiiren kaapelista. Kaapeli on kuitenkin jotenkin jäykkä, joten robotti oppi ravistamaan hiirtä sen vetämisen sijaan. Ravistaminen tuotti kohokohtia…
Koodi käyttää 50 yksilöä. Tämän ydin on 50 x 50 tavua.
Yksilö on joukko tavuja. Kun henkilöä käytetään robotin ajamiseen, tämä henkilö lähetetään koodiin "tolken".
Ajon alussa on 8 muuttujaa m1, m2, m3, m4, m5, m6, m7 ja m8 (yksi kullekin servolle). Tässä robotissa heillä kaikilla on vakio lähtöarvot. "Tolkenissa" mś muunnetaan tapauksen/vaihtosilmukan mukaan yksilöiden arvoista riippuen. esimerkiksi arvo "1" suorittaa seuraavan: m1 = m1 + m2.
Jos henkilö on: 1, 2, 3, 0, 0, 0, 0….., mś muutetaan seuraavalla tavalla:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken on luettelo 256 erilaisesta matemaattisesta operaatiosta, joten yksilöiden matriisin kaikki mahdolliset arvot edustavat m -arvojen matemaattista muutosta.
Tolken-prosessi suoritetaan 4 kertaa, ja lukema on jokaisen kierroksen välillä, jolloin jokaiselle "m": lle luodaan neljä erilaista moottorikoodia. Moottorikoodit ovat arvoja, jotka myöhemmin lähetetään servoille.
Kehityksen jokaisessa vaiheessa 4 yksilöä kilpailee indeksoinnissa. Kaksi parasta yksilöä ovat kahden vauvan vanhemmat, vauvat korvaavat kaksi pahinta yksilöä. Kun vauvoja tehdään, toisen vanhemman "geneettisen koodin" liitos vaihdetaan toisen vanhemman viipaleeksi, jolloin syntyy kaksi uutta yksilöä.
Jos yksikään yksilö ei toimi ollenkaan, yksilöiden mutaatio tapahtuu uusien luomiseksi.
Löydät koodin GitHubista:
Vaihe 3: Kuinka kouluttaa sitä?
Tämä on hankala osa. Jotta voisit treenata kunnolla, sinun on "nollattava" se jokaisen ajon jälkeen. Tämä tarkoittaa, että sinun on asetettava se samaan asentoon joka kerta.
Olen laittanut koodiin muutamia tarkistuspisteitä varmistaakseni, että robotti on lähtöasennossaan.
Kohdista robotti ja anna sen käydä.
Se testaa neljä henkilöä ja valitsee sitten kaksi parasta vanhemmiksi. Kun pahimmat on korvattu vauvoilla, se tulostaa joitain tietoja yksilöiden suorituskyvystä. Se tulostaa myös 50x50 -taulukon. On viisasta kopioida tämä Excel -taulukkoon tai vastaavaan. (tai kirjoita tarvittava koodi käsittelyssä) Jos Due palautuu (tämä johtuu eri syistä), et menetä harjoitustyötäsi. Voit kopioida/liittää taulukon koodiin ja jatkaa harjoittelua, jos jäit.
Robotini oppi ryömimään parin tunnin kuluttua. Lataa video nähdäksesi sen indeksoinnin. Se ei mennyt siihen suuntaan kuin luulin sen menevän!
Kokeile myös erilaisia kerroksia! Robottini toimi parhaiten nailonmatolla.
Mahdolliset parannukset:
1. Olisi parempi hankkia erillinen nano PS/2 -hiiren lukemiseen ja lähettää sarjassa siirretty etäisyys nanolle. PS/2 -hiiren lukema oli hieman heikko. Tästä syystä hiiri lukee/tyhjentää koodin osia.
2. jonkinlainen testauslaite, joka veti robotin takaisin lähtöasentoonsa, nopeuttaisi harjoittelua.
3. Mielestäni on viisasta harjoittaa sitä hieman hitaammin kuin minä. Hitaampi harjoittelu varmistaa, että se on koulutettu "oikeaan suuntaan". Useiden testiajojen keskimääräinen suorituskyky voisi olla mahdollinen tapa.
Suositeltava:
Miniaturisoiva Arduinon itsenäinen robotti (Land Rover / auto) Vaihe 1 Malli3: 6 vaihetta
Miniaturisoiva Arduinon autonominen robotti (Land Rover / auto) Vaihe 1 Malli 3: Päätin pienentää Land Roverin / Auton / Botin pienentääkseni projektin kokoa ja virrankulutusta
Itseoppiva sokkelorapurobotti PROTOTYYPPI 1 TILAN VAATIMUS: 11 vaihetta
Itseoppiva sokkelorapurobotti PROTOTYYPPI 1 TILAN VAATIMUS: VASTUUVAPAUSLAUSEKE !!: Hei, pahoittelen huonoja kuvia, lisään myöhemmin lisää ohjeita ja kaavioita (ja tarkempia tietoja. En dokumentoinut prosessia (sen sijaan tein vain time lapse video). Myös tämä ohje on epätäydellinen, kuten tein
Tasapainotusrobotti / 3 -pyöräinen robotti / STEM -robotti: 8 vaihetta
Tasapainotusrobotti / 3 -pyöräinen robotti / STEM -robotti: Olemme rakentaneet yhdistetyn tasapainotus- ja kolmipyörärobotin koulukäyttöön kouluissa ja koulujen jälkeen. Robotti perustuu Arduino Unoon, mukautettuun kilpeen (kaikki rakenteelliset tiedot toimitetaan), Li -ion -akkuun (kaikki
Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)
Voi -robotti: Arduino -robotti eksistentiaalisessa kriisissä: Tämä projekti perustuu animaatiosarjaan "Rick and Morty". Yhdessä jaksossa Rick tekee robotin, jonka ainoa tarkoitus on tuoda voita. Bruface -opiskelijoina (Brysselin teknillinen tiedekunta) meillä on tehtävä mecha
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: 9 vaihetta (kuvilla)
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: Rakenna 1/20 kuutiometrin robotti, jossa on tarttuja, joka voi poimia ja siirtää pieniä esineitä. Sitä ohjaa Picaxe -mikrokontrolleri. Uskon, että tällä hetkellä tämä voi olla maailman pienin pyörillä varustettu robotti, jossa on tarttuja. Se epäilemättä ch