Sommario:
Video: Robot caotico ad autoapprendimento: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Ti interessa l'apprendimento automatico, l'intelligenza artificiale e i robot? Non hai bisogno di lavorare in qualche università di lusso. Questa è una descrizione del mio caotico robot. È un robot molto semplice per dimostrare come utilizzare il codice di autoapprendimento e come implementarlo in una piattaforma arduino, in questo caso un Arduino due. È una piattaforma molto economica!
Il codice fa evolvere il robot in modo che il robot impari a gattonare. Riceve feedback dal mouse che viene trascinato dietro. Il codice è "genetico". Ciò significa che un numero di individui viene testato e i migliori vengono mantenuti e avranno bambini. Ciò significa che il codice si evolve in modo evolutivo.
Passaggio 1: hardware AKA il robot
Hai bisogno:
- 1 Arduino Due
- 8 microservi
- 1 mouse PS/2
- 1 cambio di livello
- qualche variante di un sensore-scudo o simile, mi sono stancato dello scudo del sensore e ho saldato il mio.
-fili
-alimentazione esterna 5V per i servi
- alcuni pezzi di ferraglia, un po' di colla e un po' di filo d'acciaio. E nastro!
Quindi metti il Due sul pavimento. Metti i servi in un anello attorno ad esso. Mettili insieme con rottami metallici, colla e filo. Questa è la parte del caos! Poiché è caotico nel suo design, è imprevedibile determinare come muoversi per farlo strisciare. Ecco perché il codice di autoapprendimento è la strada da percorrere!
Suggerimenti: utilizzare delle parti metalliche abbastanza pesanti, facilita lo spostamento del robot.
Collegate i servi al dovuto, nel mio caso sono collegati a D39, 41, 43, 45, 47, 49, 51, 53.
Collegare i servi all'alimentazione esterna 5V. Per questo, costruisci una sorta di scudo o usa uno scudo per sensori o simili. NON alimentare i servi dal pin 5V dovuto, non è abbastanza, Due brucerà. Ho usato una piccola scheda prototipo per distribuire i 5 V a tutti i servi. Questa scheda contiene anche il cambio di livello per il clock del mouse PS/2 e le linee dati. La scheda alimenta anche il mouse con 5V. Ricorda di collegare la terra dall'alimentazione esterna ad Arduino a causa della terra! lo schema mostra come collegare il tutto.
Collegare PS/2 all'alimentazione (5V) e alla terra. Collega il clock e la linea dati del PS/2 al Due attraverso un traslatore di livello. (due va a 3,3 V, PS/2 a 5 V). Collegare l'orologio su D12 e i dati su D13.
Per i dettagli sul protocollo PS/2, questo è un ottimo tutorial:
www.instructables.com/id/Optical-Mouse-Od…
La libreria PS/2 di jazzycamel che ho usato:
Passaggio 2: il codice
Per prima cosa lasciatemi dire: NON sono un programmatore. Alcune parti sono molto estese, un programmatore esperto potrebbe ovviamente accorciarle e così e così.
Il codice è autoapprendente e questo è il cuore del progetto. Questa è la parte divertente! Significa che il robot si evolve e migliora sempre di più, in questo caso migliora nel gattonare. La cosa sorprendente di questo è che il robot si evolverà in base a ciò che gli dai un feed-back. In questo caso trascina un mouse PS/2 e più a lungo viene trascinato il mouse, più punti ottiene.
Ciò significa anche che puoi usare questo codice per addestrare il tuo robot a fare qualcos'altro, a patto che venga misurato e restituito al robot!
Come puoi vedere nelle immagini, il mouse viene trascinato su un filo sottile. All'inizio è stato trascinato nel cavo del mouse. Tuttavia, il cavo è un po' rigido, quindi il robot ha imparato a scuotere il mouse, invece di trascinarlo. L'agitazione ha prodotto punti alti…
Il codice utilizza 50 individui. Il nucleo di questo è un array di 50x50 byte.
Un individuo è un array di byte. Quando l'individuo viene utilizzato per eseguire il robot, questo individuo viene inviato a una funzione nel codice chiamata "tolken".
All'inizio di una corsa ci sono 8 variabili m1, m2, m3, m4, m5, m6, m7 e m8 (una per ogni servo). In questo robot hanno tutti valori iniziali costanti. In "tolken" i mś vengono trasformati in un loop case/swich a seconda dei valori dell'individ. ad esempio un valore "1" esegue quanto segue: m1 = m1 + m2.
Se un individuo è: 1, 2, 3, 0, 0, 0, 0….. allora il mś sarà trasformato nel modo seguente:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken è un elenco di 256 diverse operazioni matematiche, quindi ogni possibile valore dell'array individs rappresenta un cambiamento matematico degli m valori.
Il processo Tolken viene ripetuto 4 volte, con lettura ad ogni giro, generando quattro differenti codici motore per ogni "m". I codici motore sono i valori che in seguito vengono inviati ai servi.
In ogni fase dell'evoluzione, 4 individui competono nel gattonare. I due migliori individui saranno genitori di due bambini, i bambini sostituiranno i due peggiori individui. Quando i bambini vengono creati, una giunzione di "codice genetico" di un genitore viene scambiata con una fetta dell'altro genitore, questo crea due nuovi individui.
Se nessun individuo si esibisce affatto, la mutazione degli individui avverrà per generarne di nuovi.
Puoi trovare il codice su GitHub:
Passaggio 3: come addestrarlo?
Questa è la parte difficile. Per allenarsi correttamente, è necessario "reimpostarlo" dopo ogni corsa. Ciò significa che devi metterlo nella stessa posizione ogni volta.
Ho inserito alcuni punti di controllo all'interno del codice per assicurarmi che il robot sia nella posizione di partenza.
Quindi allinea il robot e lascialo funzionare.
Mette alla prova 4 individui e poi sceglie i 2 migliori per essere genitori. Dopo aver sostituito il peggio con i bambini, stampa alcuni dati sulle prestazioni degli individui. Stampa anche l'array 50x50. È consigliabile copiarlo in un foglio excel o simile. (o scrivere del codice necessario durante l'elaborazione) Se il Due si ripristina (questo accade per vari motivi) non perderai il tuo lavoro di formazione. Puoi copiare/incollare l'array nel codice e continuare ad allenarti dove sei rimasto.
Il mio robot ha imparato a gattonare dopo un paio d'ore. Scarica il video per vederlo strisciare. Non è andata nella direzione in cui pensavo!
Prova anche piani diversi! Il mio robot si è comportato meglio su un tappeto di nylon.
Possibili miglioramenti:
1. Sarebbe meglio avere un nano separato per leggere il mouse PS/2 e inviare la distanza elaborata spostata su seriale al nano. La lettura del mio mouse PS/2 è un po' traballante. Questo è il motivo per cui il mouse legge/cancella parti del codice.
2. una sorta di test rig che riportasse il robot nella posizione di partenza velocizzava l'addestramento.
3. Penso che sia saggio allenarlo un po' più lentamente di me. Un allenamento più lento assicura che sia addestrato "nella giusta direzione". La media delle prestazioni di diversi test potrebbe essere un modo possibile.
Consigliato:
Arduino - Robot per risolvere labirinti (MicroMouse) Robot che segue il muro: 6 passaggi (con immagini)
Arduino | Robot Maze Solving (MicroMouse) Robot Wall Following: Benvenuto Sono Isaac e questo è il mio primo robot "Striker v1.0".Questo Robot è stato progettato per risolvere un semplice Labirinto.Nella competizione avevamo due labirinti e il robot è stato in grado di identificarli. Qualsiasi altro cambiamento nel labirinto potrebbe richiedere un cambiamento nel
Come costruire un robot SMARS - Arduino Smart Robot Tank Bluetooth: 16 passaggi (con immagini)
Come costruire un robot SMARS - Arduino Smart Robot Tank Bluetooth: questo articolo è orgogliosamente sponsorizzato da PCBWAY.PCBWAY realizza PCB di prototipazione di alta qualità per le persone di tutto il mondo. Provalo tu stesso e ottieni 10 PCB per soli $ 5 su PCBWAY con un'ottima qualità, grazie PCBWAY. Lo scudo motore per Arduino Uno
Robot Labirinto ad autoapprendimento Granchio PROTOTIPO 1 STATO INCOMPLETO: 11 passaggi
Autoapprendimento Maze Crab Robot PROTOTIPO 1 STATO INCOMPLETO: DISCLAIMER!!: Ciao, mi scuso per le scarse immagini, aggiungerò più istruzioni e schemi in seguito (e dettagli più specifici. Non ho documentato il processo (invece ho solo fatto un video time lapse). Anche questo istruibile è incompleto, come ho fatto io
Robot di bilanciamento / Robot a 3 ruote / Robot STEM: 8 passaggi
Robot di bilanciamento / Robot a 3 ruote / Robot STEM: Abbiamo costruito un robot combinato di bilanciamento e 3 ruote per l'uso educativo nelle scuole e nei programmi educativi dopo la scuola. Il robot è basato su un Arduino Uno, uno shield personalizzato (tutti i dettagli costruttivi forniti), un pacco batteria agli ioni di litio (tutti co
[Robot Arduino] Come realizzare un robot per la cattura del movimento - Pollici Robot - Servomotore - Codice sorgente: 26 passaggi (con immagini)
[Robot Arduino] Come realizzare un robot per la cattura del movimento | Pollici Robot | Servomotore | Codice sorgente: Thumb Robot. Usato un potenziometro del servomotore MG90S. È molto divertente e facile! Il codice è molto semplice. Sono solo circa 30 linee. Sembra una cattura del movimento. Si prega di lasciare qualsiasi domanda o feedback! [Istruzioni] Codice sorgente https://github.c