Sommario:

Bot Hawking: 5 passaggi
Bot Hawking: 5 passaggi

Video: Bot Hawking: 5 passaggi

Video: Bot Hawking: 5 passaggi
Video: 5 Мифических монстров, которые существовали на самом деле 2024, Luglio
Anonim
Image
Image
Costruisci il tuo Hawking Bot
Costruisci il tuo Hawking Bot

L'Hawking Bot è un progetto Lego MINDSTORMS EV3 ispirato al compianto Stephen Hawking. Stephen Hawking aveva un buon senso dell'umorismo, quindi sono sicuro che avrebbe approvato questo progetto. Il robot Hawking può aggirare gli ostacoli e rispondere ai movimenti, quindi emette uno dei famosi suoni di Stephen Hawking e si muove nella direzione dell'oggetto in movimento. Utilizza il sensore a ultrasuoni che sta scansionando il suo ambiente con un ampio movimento della testa.

Passaggio 1: costruisci il tuo robot Hawking

Tutti i pezzi necessari sono nel set base EV3 Lego MINDSTORMS ad eccezione del sensore a ultrasuoni (i suoi occhi) che deve essere acquistato separatamente.

Passo 2:

Immagine
Immagine

Il codice per Hawking Bot è tutto scritto in python 3. Un file immagine avviabile per eseguire python in un ambiente Debian Linux su Hawking Bot può essere scaricato dal sito Web ev3dev. Il codice per eseguire Hawking Bot può essere scaricato da qui. Tutto il codice è contenuto all'interno di un file di classe in modo da poter utilizzare i metodi esistenti o anche modificarli se lo desideri.

Guarda questo video con istruzioni dettagliate su come configurare Debian Linux e Python3 sul tuo robot. Sebbene questo sia specifico per una configurazione Mac, sarà comunque utile avere una comprensione generale del processo. Questo è un lavoro in corso. Il sensore a ultrasuoni a volte è inaffidabile e ciò richiede un codice più intelligente per rilevare "valori anomali". Mi piacerebbe vedere i contributi di altri per rendere il codice più efficiente e meno soggetto a errori.

Passaggio 3: crea i tuoi brani sonori di Hawking

OK, ora vuoi avere alcune citazioni famose o solo alcune semplici espressioni del Prof Hawking. Ci sono un sacco di video in cui puoi sentirlo parlare e poi ci sono le sue lezioni che sono un tesoro di saggezza e frasi utili.

Hai bisogno di un programma come Audacity che funzioni su molte piattaforme per selezionare e ritagliare i tuoi brani preferiti.

Salva il tuo soundbite come file wav mono come SH6, SH7, …SH11, SH12 e così via.

Di seguito trovi alcuni campioni che ho creato secondo il metodo sopra.

Passaggio 4: suggerimenti e trucchi

Suggerimenti e trucchi
Suggerimenti e trucchi
Suggerimenti e trucchi
Suggerimenti e trucchi

Hawking Bot è dotato di un modulo di autocontrollo per garantire che tutti i cavi siano collegati e che la batteria sia sufficiente. Connessioni allentate, mancanti o addirittura danneggiate possono verificarsi facilmente. Quindi questo modulo è molto utile. Il metodo 'checkConnection' controlla solo se c'è una connessione elettrica. È comunque necessario assicurarsi che i motori siano collegati alla porta corretta.

Il movimento della testa di scorrimento è essenziale per consentire all'Hawking Bot di scansionare il terreno e trovare il percorso più lungo senza ostacoli davanti a sé. I cavi necessitano di spazio sufficiente per accogliere i movimenti della testa; si consiglia quindi di legarli tra loro come mostrato in fotografia.

Hawking Bot funziona al meglio con grandi ostacoli e su una superficie piana e liscia. I tappeti sono più impegnativi per i motori e potrebbe essere necessario regolare le impostazioni per regolare il comportamento per le diverse superfici.

L'Hawking Bot non è affatto perfetto e questo è un prototipo che beneficerà di ulteriori miglioramenti. Il codice è completamente commentato e dovrebbe essere facile per te capire cosa fanno i vari metodi. Vari bit sono stati commentati con #, se rimuovi il # davanti a 'print' il programma in esecuzione ti mostrerà le varie letture e calcoli del sensore.

Passaggio 5: miglioramenti suggeriti, aggiornamenti e idee future

Ora che hai costruito con successo il tuo robot, vuoi portarlo al livello successivo. Potresti migliorare il metodo MotionDetector. In questo momento mai così spesso ottiene una lettura sbagliata. Puoi vedere le letture effettive decommentando disA e disB (nella parte inferiore del blocco del metodo). La lettura errata di solito si distingue dalle altre letture, quindi potresti scrivere un algoritmo per impedire al robot di rispondere a una lettura errata.

Forse vuoi assumere il pieno controllo del robot e controllare a distanza le sue varie funzioni. Puoi farlo tramite Bluetooth e scrivere un programma Android per comunicare con il robot. Tuttavia, un approccio molto più semplice sarebbe quello di trovare un posto in cui il sensore a infrarossi prenda il controllo di Hawking Bot.

Che ne dici di far conoscere al robot il suo ambiente? Ciò potrebbe essere ottenuto con un approccio k-nerest neighbor o eventualmente una rete neurale. Il mattoncino EV3 ha una potenza di elaborazione limitata sebbene supporti Numpy. Un'alternativa sarebbe un BrickPi che ti permetterebbe di eseguire una libreria AI come Tensorflow, ma l'intenzione di questa guida era quella di utilizzare il kit Lego EV3 MINDSTORMS senza la necessità di acquistare molti costosi pezzi aggiuntivi oltre al sensore a ultrasuoni.

Tuttavia, l'approccio di apprendimento del rinforzo dei vicini più vicini dovrebbe funzionare sul mattone EV3 e questo è l'algoritmo suggerito. Lascio a te il compito di trovare un'implementazione funzionante o individuare eventuali problemi:

Apprendimento di rinforzo per Hawkings Bot

L'idea è che le 7 letture USS siano codificate in un vettore e gli ultimi 10 colpi di testa siano usati per creare un vettore sequenziale di 70 voci. Le prime letture sono incomplete, quindi verranno riempite con zeri. Ogni voce contiene il valore della distanza dalla USS. Questo è il vettore di stato s. Il sistema consente 1000 voci. Successivamente la voce più vecchia verrà sostituita e le voci di età per ogni coppia s-r saranno ridotte di uno.

Il bot non deve avvicinarsi a un oggetto di più di 10 cm. Questo crea una ricompensa negativa. Per semplicità; le buone azioni sono premiate con 1 e quelle cattive con 0. In effetti questo crea una probabilità per la ricompensa per ogni combinazione di azione-stato. Utilizzeremo ricompense scontate e politica epsilon greedy.

Questo crea 3 grandi tabelle di stato – ricompensa (s-r) per tutte e tre le azioni destra, dritto e sinistra – potrebbe essere possibile avere velocità alte e basse per ogni azione. Avremmo quindi 6 azioni e 6 tabelle di ricerca s-r.

Ogni volta che viene registrato un nuovo stato s viene confrontato con le tabelle, la distanza euclidea (o misura simile) viene utilizzata per trovare il vicino più prossimo. Questo non verrà classificato, ma verrà impostata una soglia t per accettare lo stato come molto simile, sovrascrivere lo stato esistente e aggiornare per la ricompensa più alta ed eseguire l'azione associata a. Se non è simile (d>t) inserisci una nuova coppia s-r per ogni azione a. Se c'è un pareggio tra le azioni per per s-r (hanno tutte la stessa ricompensa) scegli a caso ma questo non è comune e potrebbe essere omesso.

t dovrà essere determinato sperimentalmente, se t è troppo piccolo stati simili verranno ignorati e ogni stato verrà visto come unico. Troppo grande a t significa che anche stati piuttosto dissimili sono raggruppati insieme, il che potrebbe influenzare la capacità di scegliere buone azioni. Potrebbe essere possibile utilizzare metodi statistici per determinare il miglior t.

La tabella ha un aspetto simile a questo: Voce n. - Vettore di stato - Ricompensa per l'azione 1 - Ricompensa per l'azione 2 - Ricompensa per l'azione 3.

Immagino che l'implementazione effettiva sarà complicata, ma dovrebbe valere la pena. Buona fortuna!

Consigliato: