Sommario:

EyeRobot - il bastone bianco robotico: 10 passaggi (con immagini)
EyeRobot - il bastone bianco robotico: 10 passaggi (con immagini)

Video: EyeRobot - il bastone bianco robotico: 10 passaggi (con immagini)

Video: EyeRobot - il bastone bianco robotico: 10 passaggi (con immagini)
Video: Quando provi a fare un complimento a una ragazza... 2024, Luglio
Anonim
EyeRobot - il bastone bianco robotico
EyeRobot - il bastone bianco robotico

Riassunto: utilizzando iRobot Roomba Create, ho prototipato un dispositivo chiamato eyeRobot. Guiderà gli utenti non vedenti e ipovedenti attraverso ambienti disordinati e popolati utilizzando Roomba come base per sposare la semplicità del tradizionale bastone bianco con l'istinto di un cane vedente. L'utente indica il movimento desiderato spingendo e ruotando intuitivamente la maniglia. Il robot prende queste informazioni e trova un percorso libero lungo un corridoio o attraverso una stanza, utilizzando il sonar per guidare l'utente in una direzione adeguata intorno a ostacoli statici e dinamici. L'utente segue quindi il robot mentre guida l'utente nella direzione desiderata grazie alla notevole forza percepita attraverso l'impugnatura. Questa opzione robotica richiede poco allenamento: spingi per andare, tira per fermarti, gira per girare. La lungimiranza fornita dai telemetri è simile a quella di un cane dall'occhio vedente, ed è un vantaggio considerevole rispetto ai continui tentativi ed errori che contraddistinguono l'uso del bastone bianco. Eppure eyeRobot fornisce ancora un'alternativa molto più economica rispetto ai cani guida, che costano oltre $ 12, 000 e sono utili solo per 5 anni, mentre il prototipo è stato costruito per ben meno di $ 400. È anche una macchina relativamente semplice, che richiede alcuni sensori economici, vari potenziometri, un po' di hardware e, naturalmente, un Roomba Create.

Passaggio 1: dimostrazione video

Dimostrazione video
Dimostrazione video

Versione di alta qualità

Passaggio 2: panoramica dell'operazione

Panoramica delle operazioni
Panoramica delle operazioni

Controllo utente: il funzionamento di eyeRobot è progettato per essere il più intuitivo possibile per ridurre o eliminare notevolmente l'allenamento. Per iniziare il movimento, l'utente deve semplicemente iniziare a camminare in avanti, un sensore lineare alla base del bastone rileverà questo movimento e inizierà a muovere il robot in avanti. Utilizzando questo sensore lineare, il robot può quindi adattare la sua velocità alla velocità desiderata dell'utente. eyeRobot si sposterà alla velocità desiderata dall'utente. Per indicare che si desidera una svolta, l'utente deve semplicemente ruotare la maniglia e, se possibile, il robot risponderà di conseguenza.

Navigazione robot: quando si viaggia in uno spazio aperto, eyeRobot tenterà di mantenere un percorso rettilineo, rilevando qualsiasi ostacolo che potrebbe ostacolare l'utente e guidando l'utente attorno a quell'oggetto e tornando sul percorso originale. In pratica, l'utente può naturalmente seguire il robot con poco pensiero cosciente. Per navigare in un corridoio, l'utente dovrebbe tentare di spingere il robot in una delle pareti su entrambi i lati, dopo aver acquisito un muro il robot inizierà a seguirlo, guidando l'utente lungo il corridoio. Quando viene raggiunto un incrocio, l'utente sentirà il robot iniziare a girare, e potrà scegliere, ruotando la maniglia, se abbassare la nuova propaggine o proseguire su un percorso rettilineo. In questo modo il robot è molto simile al bastone bianco, l'utente può sentire l'ambiente con il robot e utilizzare queste informazioni per la navigazione globale.

Passaggio 3: sensori di portata

Sensori di portata
Sensori di portata

Ultrasuoni: l'eyeRobot trasporta 4 telemetri a ultrasuoni (MaxSonar EZ1). I sensori a ultrasuoni sono posizionati ad arco nella parte anteriore del robot per fornire informazioni sugli oggetti davanti e ai lati del robot. Informano il robot sulla portata dell'oggetto e lo aiutano a trovare un percorso aperto attorno a quell'oggetto e tornare sul suo percorso originale.

Telemetri IR: l'eyeRobot trasporta anche due sensori IR (GP2Y0A02YK). I telemetri IR sono posizionati in modo da essere rivolti verso l'esterno di 90 gradi a destra e a sinistra per aiutare il robot a seguire il muro. Possono anche avvisare il robot di oggetti troppo vicini ai suoi lati in cui l'utente potrebbe entrare.

Passaggio 4: sensori di posizione della canna

Sensori di posizione della canna
Sensori di posizione della canna

Sensore lineare: affinché l'eyeRobot corrisponda alla sua velocità con quella dell'utente, l'eyeRobot rileva se l'utente sta spingendo o ritardando il suo movimento in avanti. Ciò si ottiene facendo scorrere la base della canna lungo un binario, poiché un potenziometro rileva la posizione della canna. L'eyeRobot utilizza questo ingresso per regolare la velocità del robot. L'idea dell'eyeRobot che si adatta alla velocità dell'utente attraverso un sensore lineare è stata in realtà ispirata dal tosaerba di famiglia. La base del bastone è collegata a un blocco guida che si muove lungo un binario. Attaccato al blocco guida è un potenziometro a scorrimento che legge la posizione del blocco guida e la segnala al processore. Per consentire al bastone di ruotare rispetto al robot, c'è un'asta che scorre attraverso un blocco di legno, formando un cuscinetto rotante. Questo cuscinetto viene quindi fissato a una cerniera per consentire al bastone di adattarsi all'altezza dell'utente.

Sensore di torsione: il sensore di torsione consente all'utente di ruotare la maniglia per ruotare il robot. Un potenziometro è fissato all'estremità di un'asta di legno e la manopola è inserita e incollata nella parte superiore dell'impugnatura. I fili scorrono lungo il tassello e alimentano le informazioni sulla torsione nel processore.

Passaggio 5: processore

Processore
Processore

Processore: il robot è controllato da uno Zbasic ZX-24a seduto su una scheda madre avanzata Robodyssey II. Il processore è stato scelto per la sua velocità, facilità d'uso, costo accessibile e 8 ingressi analogici. È collegato a una grande breadboard di prototipazione per consentire modifiche facili e veloci. Tutta l'alimentazione per il robot proviene dall'alimentatore sulla scheda madre. Lo Zbasic comunica con il roomba attraverso la porta del vano di carico e ha il pieno controllo sui sensori e sui motori di Roomba.

Passaggio 6: panoramica del codice

Panoramica del codice
Panoramica del codice

Evitare gli ostacoli: per evitare gli ostacoli, eyeRobot utilizza un metodo in cui gli oggetti vicino al robot esercitano una forza virtuale sul robot allontanandolo dall'oggetto. In altre parole, gli oggetti allontanano il robot da se stessi. Nella mia implementazione, la forza virtuale esercitata da un oggetto è inversamente proporzionale alla distanza al quadrato, quindi la forza della spinta aumenta man mano che l'oggetto si avvicina e crea una curva di risposta non lineare: PushForce = ResponseMagnitudeConstant/Distance2Le spinte provenienti da ciascun sensore vengono sommate; i sensori sul lato sinistro spingono a destra, e viceversa, per ottenere un vettore per il viaggio del robot. Le velocità delle ruote vengono quindi modificate in modo che il robot ruoti verso questo vettore. Per garantire che gli oggetti morti davanti al robot non mostrino una "nessuna risposta" (perché le forze su entrambi i lati si bilanciano), gli oggetti sul fronte morto spingono il robot verso il lato più aperto. Quando il robot ha superato l'oggetto, utilizza gli encoder di Roomba per correggere la modifica e tornare al vettore originale.

Wall Following: il principio del wall following è di mantenere una distanza desiderata e un angolo parallelo a un muro. I problemi sorgono quando il robot viene ruotato rispetto al muro perché il singolo sensore fornisce letture di portata inutili. Le letture della distanza vengono effettuate tanto dall'angolo del robot rispetto alla parete quanto dalla distanza effettiva dalla parete. Per determinare l'angolo e quindi eliminare questa variabile, il robot deve avere due punti di riferimento che possono essere confrontati per ottenere l'angolo del robot. Poiché l'eyeRobot ha solo un telemetro IR rivolto verso un lato, per raggiungere questi due punti deve confrontare la distanza dal telemetro nel tempo mentre il robot si muove. Quindi determina il suo angolo dalla differenza tra le due letture mentre il robot si muove lungo la parete. Quindi utilizza queste informazioni per correggere il posizionamento improprio. Il robot entra in modalità wall following ogni volta che ha a fianco un muro per un certo periodo di tempo e ne esce ogni volta che incontra un ostacolo sul suo percorso, che lo spinge fuori percorso, oppure se l'utente utilizza la maniglia girevole per portare il robot lontano dal muro.

Passaggio 7: elenco delle parti

Elenco delle parti
Elenco delle parti

Parti necessarie:1x) Roomba create1x) Grande foglio di acrilico2x) Telemetro IR Sharp GP2Y0A02YK4x) Telemetri a ultrasuoni Maxsonar EZ11x) Microprocessore ZX-24a1x) Scheda madre avanzata Robodyssey II1x) Potenziometro a scorrimento1x) Potenziometro a giro singolo1x) Cuscinetto lineare1x) breadboard senza saldatura)))) Cerniere, tasselli, viti, dadi, staffe e fili

Passaggio 8: motivazione e miglioramento

Motivazione e miglioramento
Motivazione e miglioramento

Motivazione: Questo robot è stato progettato per colmare l'ovvio divario tra il cane guida capace ma costoso e il bastone bianco economico ma limitato. Nello sviluppo di un bastone bianco robotico commerciabile e più capace, Roomba Create era il veicolo perfetto per progettare un prototipo rapido per vedere se il concetto funzionava. Inoltre, i premi fornirebbero un sostegno economico per la notevole spesa necessaria per costruire un robot più capace.

Miglioramento: la quantità che ho imparato a costruire questo robot è stata sostanziale e qui cercherò di esporre ciò che ho imparato mentre passo avanti per tentare di costruire un robot di seconda generazione: 1) Evitare gli ostacoli: ho imparato molto sugli ostacoli in tempo reale evitare. Nel processo di costruzione di questo robot sono passato attraverso due codici di evitamento degli ostacoli completamente diversi, iniziando dall'idea di forza dell'oggetto originale, passando poi al principio di trovare e cercare il vettore più aperto, e poi tornando all'idea di forza dell'oggetto con la realizzazione chiave che la risposta dell'oggetto dovrebbe essere non lineare. In futuro correggerò il mio errore di non fare alcuna ricerca online dei metodi utilizzati in precedenza prima di intraprendere il mio progetto, poiché ora sto imparando che una rapida ricerca su Google avrebbe prodotto numerosi ottimi articoli sull'argomento.2) Design del bastone sensori - All'inizio di questo progetto ho pensato che la mia unica opzione per un sensore lineare fosse quella di utilizzare un vaso di scorrimento e una sorta di cuscinetto lineare. Ora mi rendo conto che un'opzione molto più semplice sarebbe stata quella di attaccare semplicemente la parte superiore dell'asta a un joystick, in modo tale che spingendo lo stick in avanti si spingesse anche il joystick in avanti. Inoltre un semplice giunto cardanico permetterebbe di tradurre la torsione dello stick nell'asse di torsione di molti moderni joystick. Questa implementazione sarebbe stata molto più semplice di quella che utilizzo attualmente.3) Ruote girevoli libere - Sebbene ciò sarebbe stato impossibile con Roomba, ora sembra ovvio che un robot con ruote girevoli libere sarebbe l'ideale per questo compito. Un robot che rotola passivamente non richiederebbe motori e una batteria più piccola e quindi sarebbe più leggero. Inoltre, questo sistema non richiede un sensore lineare per rilevare la spinta dell'utente, il robot semplicemente rotola alla velocità dell'utente. Il robot poteva essere girato sterzando le ruote come un'auto e, se l'utente aveva bisogno di essere fermato, potevano essere aggiunti dei freni. Per la prossima generazione di eyeRobot utilizzerò sicuramente questo approccio molto diverso.4) Due sensori distanziati per seguire il muro - Come discusso in precedenza, sono sorti problemi quando si cercava di seguire il muro con un solo sensore rivolto lateralmente, quindi era necessario spostare il robot tra le letture per raggiungere diversi punti di riferimento. Due sensori con una distanza tra loro semplificherebbero notevolmente l'inseguimento al muro.5) Più sensori - Anche se questo sarebbe costato più soldi, era difficile provare a codificare questo robot con così poche finestre sul mondo al di fuori del processore. Avrebbe reso il codice di navigazione molto più potente con un sonar più completo (ma ovviamente i sensori costano, cosa che all'epoca non avevo).

Passaggio 9: conclusione

Conclusione
Conclusione

Conclusione: iRobot si è rivelato una piattaforma di prototipazione ideale per sperimentare il concetto di un bastone bianco robotico. Dai risultati di questo prototipo è evidente che un robot di questo tipo è effettivamente praticabile. Spero di sviluppare un robot di seconda generazione dalle lezioni che ho imparato usando Roomba Create. Nelle future versioni di eyeRobot immagino un dispositivo in grado di fare di più che guidare una persona lungo un corridoio, piuttosto un robot che può essere messo nelle mani dei non vedenti per l'uso nella vita di tutti i giorni. Con questo robot, l'utente parlerebbe semplicemente della propria destinazione e il robot lo guiderebbe lì senza sforzo cosciente da parte dell'utente. Questo robot sarebbe abbastanza leggero e compatto da essere facilmente trasportato su per le scale e nascosto in un armadio. Questo robot sarebbe in grado di eseguire una navigazione globale oltre a quella locale, essendo in grado di guidare l'utente dall'inizio alla destinazione senza che gli utenti ne siano a conoscenza o abbiano esperienza. Questa capacità andrebbe ben oltre anche il cane guida, con GPS e sensori più avanzati che consentono ai non vedenti di navigare liberamente nel mondo, Nathaniel Barshay, (inserito da Stephen Barshay) (grazie speciali a Jack Hitt per Roomba Create)

Passaggio 10: costruzione e codice

Costruzione e codice
Costruzione e codice

Alcune parole estranee sulla costruzione: Il ponte è costituito da un pezzo di acrilico tagliato in un cerchio con un'apertura sul retro per consentire l'accesso all'elettronica, e viene quindi avvitato nei fori di montaggio accanto alla stiva. La scheda di prototipazione è avvitata nel foro della vite nella parte inferiore dell'alloggiamento. Lo Zbasic è montato con una staffa a L con le stesse viti del deck. Ogni sonar è avvitato in un pezzo di acrilico, che a sua volta è fissato a una staffa a L fissata al ponte (le staffe a L sono piegate indietro di 10 gradi per dare una visione migliore). Il binario per il sensore lineare è avvitato direttamente nel deck e lo slide pot è montato con staffe a L accanto. Una descrizione più tecnica della costruzione del sensore lineare e dell'asta di controllo può essere trovata nel passaggio 4.

Codice: ho allegato la versione completa del codice robot. Nel corso di un'ora ho tentato di ripulirlo dalle tre o quattro generazioni di codice che erano nel file, dovrebbe essere abbastanza facile da seguire ora. Se hai l'IDE ZBasic dovrebbe essere facile da visualizzare, in caso contrario usa il blocco note che inizia con il file main.bas e passa attraverso gli altri file.bas.

Consigliato: