Innholdsfortegnelse:
Video: Selvlærende kaotisk robot: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Er du interessert i maskinlæring, AI og roboter? Du trenger ikke jobbe på et fancy universitet. Dette er en beskrivelse av min kaotiske robot. Det er en veldig enkel robot for å demonstrere hvordan du bruker selvlæringskode og hvordan du implementerer den i en arduino -plattform, i dette tilfellet en Arduino på grunn. Det er en veldig billig plattform!
Koden utvikler roboten slik at roboten lærer å krype. Den får tilbakemelding fra musen som er draget bak. Koden er "genetisk". Dette betyr at en rekke enkeltpersoner blir testet og de beste blir beholdt og vil ha babyer. Dette betyr at koden utvikler seg på en evolusjonær måte.
Trinn 1: Maskinvare AKA the Robot
Du trenger:
- 1 Arduino Due
- 8 mikroservoer
- 1 PS/2 mus
- 1 nivåskift
- en eller annen variant av et sensor-skjold eller lignende, jeg ble lei av sensor-skjoldet og sveiset mitt eget.
-ledninger
-ekstern 5V strømforsyning for servoene
- noen metallbiter, litt lim og litt ståltråd. Og tape!
Så legg Due på gulvet. Sett servoene i en ring rundt den. Legg dem sammen med metallskrap, lim og tråd. Dette er kaosdelen! Siden den er kaotisk i utformingen, er det uforutsigbart å bestemme hvordan den skal bevege seg for å få den til å krype. Det er derfor selvlæringskode er veien å gå!
Tips: bruk noen ganske tunge metalldeler, det gjør det lettere for roboten å bevege seg.
Koble servoene til due, i mitt tilfelle er de koblet til D39, 41, 43, 45, 47, 49, 51, 53.
Koble servoene til den eksterne 5V strømforsyningen. For dette må du bygge en slags skjold, eller bruke et sensorskjerm eller lignende. IKKE mate servoene fra kontingentets 5V pin, det er ikke nok, Due vil brenne. Jeg brukte et lite prototypekort for å distribuere 5 V til alle servoer. Dette brettet holder også nivåskifteren for PS/2 museklokke og datalinjer. Brettet mater også musen med 5V. Husk å koble bakken fra ekstern strøm til Arduino due ground! skjematikk viser hvordan du kobler det hele sammen.
Koble PS/2 til strøm (5V) og jord. Koble klokken og datalinjen til PS/2 til Due gjennom en nivåskifter. (forfaller 3,3V, PS/2 går 5V). Koble klokken på D12 og data på D13.
For detaljer om PS/2 -protokollen, er dette en veldig god instruks:
www.instructables.com/id/Optical-Mouse-Od…
PS/2 -biblioteket av jazzycamel som jeg har brukt:
Trinn 2: Koden
La meg først si: Jeg er IKKE programmerer. Noen deler er veldig omfattende, en dyktig programmerer kan selvfølgelig forkorte det og så og så.
Koden er selvlæring, og dette er kjernen i prosjektet. Dette er den morsomme delen av det! Det betyr at roboten utvikler seg og blir bedre og bedre, i dette tilfellet blir den bedre i å krype. Det fantastiske med dette er at roboten vil utvikle seg til det du noen gang gir den tilbakemelding på. I dette tilfellet drar den en PS/2 -mus, og jo lenger musen dras, desto høyere poeng får den.
Dette betyr også at du kan bruke denne koden til å lære roboten din å gjøre noe annet, så lenge den måles og mates tilbake til roboten!
Som du kan se på bildene, dras musen på en tynn snor. Først ble den dratt inn i musekabelen. Kabelen er imidlertid litt stiv, så roboten lærte å riste musen i stedet for å dra den. Risting ga høydepunkter …
Koden bruker 50 enkeltpersoner. Kjernen i dette er en matrise på 50x50 byte.
En individ er en rekke byte. Når individet brukes til å kjøre roboten, sendes denne personen til en funksjon i koden kalt "tolken".
Ved starten av et løp er det 8 variabler m1, m2, m3, m4, m5, m6, m7 og m8 (en for hver servo). I denne roboten har de alle konstante startverdier. I "tolken" transformeres mś i en case/swich loop avhengig av individets verdier. for eksempel utfører verdien av "1" følgende: m1 = m1 + m2.
Hvis en person er: 1, 2, 3, 0, 0, 0, 0….. så blir mś transformert på følgende måte:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken er en liste over 256 forskjellige matematiske operasjoner, så hver mulig verdi av individs array representerer en matematisk endring av m -verdiene.
Tolken-prosessen utføres 4 ganger, med avlesning mellom hver runde, og genererer fire forskjellige motorkoder for hver "m". Motorkodene er verdiene som senere sendes til servoene.
I hvert trinn i utviklingen konkurrerer 4 enkeltindivider om å krype. De to beste enkeltpersonene vil være foreldre til to babyer, babyene vil erstatte de to verste enkeltpersonene. Når babyer lages, byttes en skive med "genetisk kode" fra den ene forelder for et stykke fra den andre forelder, dette skaper to nye individer.
Hvis ingen enkeltpersoner presterer i det hele tatt, vil mutasjon av individer finne sted for å generere nye.
Du finner koden på GitHub:
Trinn 3: Hvordan trene det?
Dette er den vanskelige delen. For å trene skikkelig må du "tilbakestille" den etter hvert løp. Dette betyr at du må sette den i samme posisjon hver gang.
Jeg har satt noen sjekkpunkter inne i koden for å sikre at roboten er i utgangsposisjon.
Så juster roboten og la den gå.
Den tester 4 enkeltpersoner, og deretter velger den de 2 beste å være foreldre. Etter å ha erstattet det verste med babyene, skriver det ut noen data om enkeltpersoners ytelse. Den skriver også ut 50x50 -matrisen. Det er lurt å kopiere dette til et Excel -ark eller lignende. (eller skriv en behovskode under behandling) Hvis forfallet tilbakestilles (dette skjer av forskjellige årsaker) vil du ikke miste treningsarbeidet. Du kan kopiere/lime inn matrisen i koden og fortsette å trene der du forlot.
Min robot lærte å krype etter et par timer. Last ned videoen for å se den gjennomgå. Det gikk ikke i den retningen jeg trodde det ville!
Prøv også forskjellige etasjer! Roboten min fungerte best på et nylonteppe.
Mulige forbedringer:
1. Det ville være bedre å ha en egen nano for å lese PS/2 -musen, og sende den behandlede distansen flyttet over serienummer til nano. Når jeg leser min PS/2 -mus, er det litt ristet. Dette er grunnen til at musen leser/sletter deler av koden.
2. en slags testrigg som dro roboten tilbake til utgangsposisjonen, ville øke treningen.
3. Jeg tror det er lurt å trene det litt saktere enn jeg gjorde. Langsommere trening sikrer at den er trent "i riktig retning". Gjennomsnittlig ytelse for flere testkjøringer kan være en mulig måte.
Anbefalt:
Arduino - Maze Solving Robot (MicroMouse) Wall Following Robot: 6 trinn (med bilder)
Arduino | Maze Solving Robot (MicroMouse) Wall Following Robot: Welcome I'm Isaac, og dette er min første robot " Striker v1.0 " Denne Roboten ble designet for å løse en enkel labyrint. I konkurransen hadde vi to labyrinter og roboten Alle andre endringer i labyrinten kan kreve en endring i
Hvordan bygge SMARS Robot - Arduino Smart Robot Tank Bluetooth: 16 trinn (med bilder)
Hvordan bygge SMARS Robot - Arduino Smart Robot Tank Bluetooth: Denne artikkelen er stolt sponset av PCBWAY. PCBWAY lager prototyper av høy kvalitet for mennesker over hele verden. Prøv det selv og få 10 PCB for bare $ 5 på PCBWAY med veldig god kvalitet, takk PCBWAY. Motorskjermen for Arduino Uno
Selvlærende Maze Crab Robot PROTOTYPE 1 STATUS UFULL: 11 trinn
Selvlærende Maze Crab Robot PROTOTYPE 1 STATUS INCOMPLETE: DISCLAIMER !!: Hei, jeg beklager de dårlige bildene, jeg vil legge til flere instruksjoner og diagrammer senere (og mer spesifikke detaljer. Jeg dokumenterte ikke prosessen (i stedet laget jeg bare en time lapse -video). Denne instruksjonen er også ufullstendig, som jeg gjorde
PAPIR HUNGRY ROBOT - Pringles Recycle Arduino Robot: 19 trinn (med bilder)
PAPER HUNGRY ROBOT - Pringles Recycle Arduino Robot: Dette er en annen versjon av Hungry Robot som jeg bygde i 2018. Du kan lage denne roboten uten 3d -skriver. Alt du trenger å gjøre er bare å kjøpe en boks Pringles, en servomotor, en nærhetssensor, en arduino og noen verktøy. Du kan laste ned alle
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw