[Curiosità] robot che torna alla base

Salve.

Dopo aver letto tantissimo su quel che si può fare con Arduino, mi sono anche fatto moltissime domande su altri aspetti di elettronica.

In particolare, mi chiedo come funziona l'individuazione e l'avvicinamento alla base di un robot domestico (tipo Roomba iRobot aspirapolvere).

Quale tecnologia usa?

Ho visto molti progettini di robottini su 2-3 ruote che evitano ostacoli: potrebbero implementare quella tecnologia, usando Arduino?

Grazie

il ritorno in base è un problema un pò più complicato che semplicemente evitare gli oggetti, e non di poco

lesto:
il ritorno in base è un problema un pò più complicato che semplicemente evitare gli oggetti, e non di poco

Certo, non voleva essere un paragone, ma curiosità di sapere come funziona.

Grazie.

scusa, risposta elusiva la mia.
Dunque, di solito si usa un sistema misto, ovvero il rover ricorda "la strada" che ha percorso, in oltre la stazione invia un segnale che il rover, tramite antenna direzionale, indivua la posizione e segue. Infine per l'aggancio in posizione "precisa" si potrebbero usare dei sensori hall oppure l'effetto calamita.

lesto:
scusa, risposta elusiva la mia.
Dunque, di solito si usa un sistema misto, ovvero il rover ricorda "la strada" che ha percorso, in oltre la stazione invia un segnale che il rover, tramite antenna direzionale, indivua la posizione e segue. Infine per l'aggancio in posizione "precisa" si potrebbero usare dei sensori hall oppure l'effetto calamita.

ok!

Nel caso di un iRobot, dato che vaga a caso confidando in una copertura della superficie totale entro un certo tempo, immagino che difficilmente ricorderà il percorso, imho. Da un mio conoscente, avevo osservato che un robot tagliaerba si avvicinava molto lentamente quando si trovava a circa mezzo metro, procedendo con piccoli zig-zag, come se aggiustasse via via la posizione, fino ad "agganciarsi".

Questo potrebbe spiegare l'avvicinamento in più fasi e quindi con diverse tecnologie (antenna direzionale, sensore effetto hall ecc.) ?

Non ho visto nulla di implementato a livello di hobbistica, magari con Arduino, forse è molto complesso...

più che costoso noioso, e serve una buona meccanica che raramente ho visto fare in casa.

che difficilmente ricordi il percorso non è vero, a te basta il vettore che punta alla base (quindi in pratica sommi tutti i vettori spostamento parziali fino ad ottenere un solo vettore (un freccia per capirci) che va dall'origine alla tua posizione attuale. Percorri questa linea, aggirando gli ostacoli, e torni a casa.
Ovvio che poi c'è l'errore di somma, dei sensori, arrotondamenti, etc.. e quindi questa cosa da sola non basta.

Spesso i rumba mappano la casa, in pratica fanno una megascacchiera in cui la prima volta che partono segnano muri, ostacoli etc.. e poi stimano la posizione in base a quanto credono di essersi mossi e agli ostacoli rilevati e presenti sulla sua mappa interna.. esattamente come farebbe una persona, ma hanno una memoria molto più forte, ma incapacità di distinguere tra ostacoli temporanei e ostacoli permanenti

lesto:
che difficilmente ricordi il percorso non è vero, a te basta il vettore che punta alla base

Te lo puoi scordare di mappare un appartamento, o più semplicemente tenere aggiornato il vettore che punta alla base, con la meccanica da due soldi dei roomba, non hanno nemmeno gli encoder su i motori, e comunque è una cosa complessa da fare pure su un robot dotato di ottima meccanica, sensori a gogo e molta potenza di calcolo.
Il roomba, e similari, sfruttano un banale sistema ad infrarossi per rintracciare la stazione di ricarica, sopra hanno più ricevitori disposti in cerchio che oltre a rilevare il trasmettitore consentono di avere un orientamento per dirigersi in quella direzione, più si avvicina e più il sistema diventa preciso e quando si trova a meno di un metro può rilevare l'emissione di due fasci ir posti a tot gradi rispetto il primario in modo da disporre di un vero e proprio canale di avvicinamento.
Stessa cosa per i taglia erba con la differenza che loro sfruttano un cavo interrato che oltre a delimitare il perimetro fa anche da sistema di avvicinamento.
Gli aspirapolvere robot di fascia alta usano un sistema di localizzazione assoluta derivato dal NorthStar, versione semplificata e low cost, che gli consente non solo di sapere sempre dove si trovano, ma anche di ottimizzare il percorso per pulire l'ambiente.

sìsì, abbiamo già affrontato questo discorso, la mappatura è solo una parte del lavoro che può aiutare, ma sicuramewnte non sufficiente

serve una buona meccanica che raramente ho visto fare in casa.

Ovvio che poi c'è l'errore di somma, dei sensori, arrotondamenti, etc.. e quindi questa cosa da sola non basta.

hai ragione sul fato che non mappano i roomba, avevo sentito dei "muri virtuali", ma sono degli emettitori.

per la mappatura vera e prorpia ci sono molti lavori le cam con openCV (ma niente arduino, ovviamente), oppure laser 2d (costoooosi)

edit: comunque si può fare, iRobot modificato con mappatura tramite IR, si nota bene lo shift: http://www.societyofrobots.com/robot_iRobot_Create_mod.shtml

io per un mio progetto avevo pensato di usare un sensore mouse messo sotto il robot e poi con la bussola calcolare gli spostamenti sull'asse x e y, le mie ambizioni non sono grandi, se riuscissi a muovermi senza perdermi per 4 metri quadrati sarei soddisfatto.... purtroppo però non sono ancora riuscito a realizzare e testare questo progetto del tutto...

?R è una cosa che penso anche io di fare da un po', ma non ho mai tempo.
mi manca la base del rover, non mi riesce di trovare qualcuno che ha una macchinetta RC scrausa da regalarmi

?R:
io per un mio progetto avevo pensato di usare un sensore mouse messo sotto il robot e poi con la bussola calcolare gli spostamenti sull'asse x e y,

La bussola va bene solo per esterni, e ti ho già spiegato il motivo, col mouse sotto ci fai poco o niente, non è un sistema affidabile sul pavimento, la soluzione si chiama girodometria e algoritmo slam.
Ti consiglio di leggere "Where am i" di Borenstein, è disponibile come download free[1], che è il testo di partenza per tutti quelli che vogliono realizzare un robot mobile fatto bene, poi subito dopo leggi "Planning Algorithms" di Steven M. Lavalle, anche questo disponibile come download free[2].

[1] http://www-personal.umich.edu/~johannb/Papers/pos96rep.pdf
[2] http://planning.cs.uiuc.edu/

beh ragazzi, eccezionali, veramente... :astonished:

messi insieme in questa comunità riuscite a fare ogni cosa! :slight_smile:

astrobeed:

?R:
io per un mio progetto avevo pensato di usare un sensore mouse messo sotto il robot e poi con la bussola calcolare gli spostamenti sull'asse x e y,

La bussola va bene solo per esterni, e ti ho già spiegato il motivo, col mouse sotto ci fai poco o niente, non è un sistema affidabile sul pavimento, la soluzione si chiama girodometria e algoritmo slam.
Ti consiglio di leggere "Where am i" di Borenstein, è disponibile come download free[1], che è il testo di partenza per tutti quelli che vogliono realizzare un robot mobile fatto bene, poi subito dopo leggi "Planning Algorithms" di Steven M. Lavalle, anche questo disponibile come download free[2].

[1] http://www-personal.umich.edu/~johannb/Papers/pos96rep.pdf
[2] http://planning.cs.uiuc.edu/

grazie per i link quando ho tempo li guardo :wink:
comunque io avevo anche un'altra idea che consisteva nel sostituire i sistemi di antenne con gli IR che magari costano meno e sono più pratici per degli hobbysti e fare quel che fanno i miei robot che seguono la pallina, ovvero cercare la base nello spazio e raggiungerla... Questo sistema però ha un grosso limite: non ci devono essere ostacoli tra gli emettitori IR e i ricevitori e non ci deve essere neanche troppa distanza...

?R:
Questo sistema però ha un grosso limite: non ci devono essere ostacoli tra gli emettitori IR e i ricevitori e non ci deve essere neanche troppa distanza...

Guarda come funziona il NorthStar, lo puoi realizzare diy utilizzando la telecamera del WiiMote.

An infrared sensor determines its position and orientation from the position of two points of light

ah, ingegnioso :slight_smile: con lo stesso principio puoi usare una webcam e OpenCV per individuare i quadri/mobili :slight_smile:

però secondo me usando un sensore di distanza abbastanza preciso e con un buon range (magari 10m con precisione +-1cm) puoi mappare i muri da una posizione neutra e partire da lì. poi un sistema IR ti guida nella breve distanza per tornare in base.

vero che c'è l'errore che si accumula, ma sarebbe talmente infinitesimale, senza contare che la prima mappatura della stanza a partire dalla base fa fede come mappatura assoluta

per il problema di oggetti che si muovono un guess factor dovrebbe bastare, ovvero per ogni punto mappato dai una probabilità che quel punto sia lì; ogni lettura che fai modifichi la probabilità dai punti visti/non visti