Turinys:
Video: Savaime besimokantis chaotiškas robotas: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Ar jus domina mašinų mokymasis, AI ir robotai? Jums nereikia dirbti kokiame nors išgalvotame universitete. Tai mano chaotiško roboto aprašymas. Tai labai paprastas robotas, parodantis, kaip naudoti savarankiškai besimokantį kodą ir kaip jį įdiegti į „arduino“platformą, šiuo atveju „Arduino“. Tai labai pigi platforma!
Kodas tobulina robotą taip, kad robotas išmoktų ropoti. Jis gauna grįžtamąjį ryšį iš pelės, kuri yra už nugaros. Kodas yra „genetinis“. Tai reiškia, kad nemažai individų yra testuojami, o geriausi laikomi ir turės kūdikių. Tai reiškia, kad kodas vystosi evoliuciniu būdu.
1 žingsnis: Aparatūra, dar vadinama robotu
Tau reikia:
- 1 „Arduino Due“
- 8 mikroservisai
- 1 PS/2 pelė
- 1 lygio perjungiklis
- kažkoks jutiklio skydo variantas ar panašiai, aš pavargau nuo jutiklio skydo ir suvirinau savo.
-laidai
-išorinis 5 V maitinimo šaltinis servo sistemoms
- kai kurie metalo laužo gabaliukai, dalis klijų ir dalis plieninių siūlų. Ir juosta!
Taigi padėkite „Due“ant grindų. Padėkite servo žiedą aplink jį. Sudėkite juos kartu su metalo laužu, klijais ir siūlais. Tai yra chaoso dalis! Kadangi jo dizainas yra chaotiškas, nenuspėjama nuspręsti, kaip judėti, kad jis nuskaitytų. Štai kodėl kelias į savarankišką mokymąsi!
Patarimai: naudokite gana sunkias metalines dalis, todėl robotui bus lengviau judėti.
Prijunkite servo prie termino, mano atveju jie yra prijungti prie D39, 41, 43, 45, 47, 49, 51, 53.
Prijunkite servo prie išorinio 5 V maitinimo šaltinio. Norėdami tai padaryti, pastatykite tam tikrą skydą arba naudokite jutiklio skydą ar pan. NENAUDOKITE servo iš 5 V kaiščio, to nepakanka, dėl to degs. Aš naudoju mažą prototipo plokštę, kad paskirstyčiau 5 V visiems servo įrenginiams. Šioje plokštėje taip pat yra PS/2 pelės laikrodžio ir duomenų linijų lygio perjungiklis. Lenta taip pat maitina pelę 5V. Nepamirškite prijungti įžeminimo iš išorinio maitinimo šaltinio prie „Arduino“! schema rodo, kaip visa tai sujungti.
Prijunkite PS/2 prie maitinimo (5 V) ir įžeminkite. Prijunkite PS/2 laikrodį ir duomenų liniją prie „Due“per lygio perjungiklį. (mokama 3,3 V, PS/2 - 5 V). Prijunkite laikrodį D12 ir duomenis D13.
Norėdami gauti daugiau informacijos apie PS/2 protokolą, tai labai gera instrukcija:
www.instructables.com/id/Optical-Mouse-Od…
Mano naudojama jazzycamel PS/2 biblioteka:
2 žingsnis: kodas
Iš pradžių leiskite man pasakyti: aš nesu programuotojas. Kai kurios dalys yra labai plačios, kvalifikuotas programuotojas, žinoma, galėtų jį sutrumpinti ir taip.
Kodas yra savarankiškas mokymasis ir tai yra projekto esmė. Tai linksma jo dalis! Tai reiškia, kad robotas vystosi ir tampa vis geresnis, šiuo atveju jis vis geriau ropoja. Nuostabus dalykas yra tai, kad robotas išsivystys į tai, kuo kada nors grįšite. Šiuo atveju ji tempia PS/2 pelę ir kuo ilgiau pelė traukiama, tuo daugiau taškų ji gauna.
Tai taip pat reiškia, kad naudodami šį kodą galite išmokyti savo robotą daryti ką nors kita, jei tik jis bus išmatuotas ir grąžintas robotui!
Kaip matote paveikslėliuose, pelė tempiama ant plono laido. Iš pradžių jis buvo tempiamas pelės laidu. Tačiau kabelis yra standus, todėl robotas išmoko kratyti pelę, o ne vilkti. Drebulys sukėlė aukščiausius taškus …
Kodeksas naudoja 50 asmenų. Jo esmė yra 50x50 baitų masyvas.
Individas yra baitų masyvas. Kai asmuo naudojamas robotui paleisti, šis asmuo siunčiamas į funkciją, pavadintą „tolken“.
Bėgimo pradžioje yra 8 kintamieji m1, m2, m3, m4, m5, m6, m7 ir m8 (po vieną kiekvienai servo sistemai). Šiame robote jie visi turi pastovias pradines vertes. „Tolken“mś yra transformuojami į atvejo/perjungimo kilpą, atsižvelgiant į individo vertybes. pavyzdžiui, reikšmė "1" atlieka šiuos veiksmus: m1 = m1 + m2.
Jei asmuo yra: 1, 2, 3, 0, 0, 0, 0….., tada mś bus pakeistas taip:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
„Tolken“yra 256 skirtingų matematinių operacijų sąrašas, todėl visos galimos individų masyvo reikšmės reiškia matematinį m reikšmių pokytį.
Tolken procesas atliekamas 4 kartus, rodmenys rodomi tarp kiekvieno rato, generuojant keturis skirtingus variklio kodus kiekvienam „m“. Automobilių kodai yra vertės, kurios vėliau siunčiamos į servus.
Kiekviename evoliucijos etape 4 individai konkuruoja nuskaitydami. Geriausi du asmenys bus dviejų kūdikių tėvai, kūdikiai pakeis du blogiausius asmenis. Kai kūdikiai yra pagaminti, vieno iš tėvų „genetinio kodo“sujungimas keičiamas į kito tėvo gabalą, todėl sukuriami du nauji individai.
Jei nė vienas individas apskritai neatlieka, individų mutacija įvyks, kad atsirastų naujų.
Kodą rasite „GitHub“:
3 žingsnis: kaip tai išmokyti?
Tai sudėtinga dalis. Norint tinkamai treniruotis, po kiekvieno bėgimo reikia jį „iš naujo nustatyti“. Tai reiškia, kad kiekvieną kartą turite pastatyti į tą pačią padėtį.
Įdėjau keletą kontrolinių taškų į kodą, kad įsitikinčiau, jog robotas yra pradinėje padėtyje.
Taigi sulygiuokite robotą ir leiskite jam veikti.
Jis išbando 4 asmenis ir tada pasirenka 2 geriausius tėvus. Pakeitus blogiausius kūdikiams, jis atspausdina tam tikrus duomenis apie individų našumą. Taip pat spausdinamas 50x50 masyvas. Išmintinga tai nukopijuoti į „Excel“lapą ar pan. (arba parašykite apdorojimo poreikio kodą) Jei „Due“atstatomas (tai atsitinka dėl įvairių priežasčių), jūs neprarasite savo treniruočių. Galite nukopijuoti/įklijuoti masyvą į kodą ir toliau mokytis, jei likote.
Mano robotas išmoko ropoti po poros valandų. Atsisiųskite vaizdo įrašą, kad pamatytumėte jį. Tai nenuėjo ta kryptimi, kuria aš maniau!
Taip pat išbandykite skirtingas grindis! Mano robotas geriausiai pasirodė ant nailoninio kilimo.
Galimi patobulinimai:
1. Būtų geriau turėti atskirą nano, kad būtų galima perskaityti PS/2 pelę, o nusiųstą atstumą perkelti į seriją nano. Mano PS/2 pelės rodmenys šiek tiek drebėjo. Dėl šios priežasties pelė skaito/valo kodo dalis.
2. kažkoks bandomasis įrenginys, kuris robotą traukė atgal į pradinę padėtį, paspartintų mokymą.
3. Manau, kad protinga jį treniruoti šiek tiek lėčiau nei aš. Lėtesnis mokymas užtikrina, kad jis treniruojamas „teisinga linkme“. Vidutinis kelių bandymų atlikimas galėtų būti galimas būdas.
Rekomenduojamas:
Savaime balansuojantis robotas - PID valdymo algoritmas: 3 žingsniai
Savaiminio balansavimo robotas - PID valdymo algoritmas: Šis projektas buvo sukurtas, nes man buvo įdomu sužinoti daugiau apie valdymo algoritmus ir kaip efektyviai įgyvendinti funkcines PID kilpas. Projektas dar tik kuriamas, nes dar reikia pridėti „Bluetooth“modulį, kuris
Savaime balansuojantis robotas iš „Magicbit“: 6 žingsniai
Savarankiškas balansavimo robotas iš „Magicbit“: ši pamoka parodo, kaip pasigaminti savaime balansuojantį robotą naudojant „Magicbit dev“plokštę. Šiame projekte, kuris grindžiamas ESP32, mes naudojame „Magicbit“kaip plėtros lentą. Todėl šiame projekte gali būti naudojama bet kuri ESP32 kūrimo plokštė
Savarankiškai besimokantis labirinto krabų robotas PROTOTIPAS 1 BŪSENA NEPILNA: 11 žingsnių
Savarankiškai besimokantis labirinto krabų robotas PROTOTIPAS 1 BŪSENA NEPILNOJAMA: ATSISAKYMAS !!: Sveiki, atsiprašau už prastas nuotraukas, vėliau pridėsiu daugiau instrukcijų ir diagramų (ir daugiau konkrečios informacijos. Aš neužfiksavau proceso (vietoj to ką tik padariau) „Time lapse“vaizdo įrašas). Taip pat šis nurodymas yra neišsamus, kaip ir aš
„HeadBot“-savaime subalansuojantis robotas STEM mokymuisi ir informavimui: 7 žingsniai (su nuotraukomis)
„HeadBot“-savarankiškai subalansuojantis robotas, skirtas STEM mokymuisi ir informavimui: „Headbot“-dviejų pėdų aukščio, savaime subalansuojantis robotas-yra Pietų Eugenijaus robotų komandos (SERT, FRC 2521), konkurencingos PIRMOSIOS mokyklos robotų komandos, sumanymas. Robotikos varžybos, iš Eugenijus, Oregonas. Šis populiarus pagalbos robotas leidžia
Balansavimo robotas / 3 ratų robotas / STEM robotas: 8 žingsniai
Balansavimo robotas / 3 ratų robotas / STEM robotas: Mes sukūrėme kombinuotą balansavimo ir 3 ratų robotą, skirtą naudoti mokyklose ir po pamokų. Robotas sukurtas naudojant „Arduino Uno“, pasirinktinį skydą (pateikiama visa konstrukcijos informacija), „Li Ion“akumuliatorių paketą (visa tai atitinka