robot tagliaerba e inseguimento perimetro

Ciao a tutti,
sto cercando di realizzare un robot tagliaerba per un piccolo giardino.
La parte elettronica del filo perimetrale è fatta, e funziona, ora sto provando ad occuparmi del "ritorno alla base" del robot.
Posso seguire 2 strade:

  • quando è scarico segue il filo perimetrale fino alla base.
  • tramite i dati sulla posizione calcolati, fa un percorso a ritroso per tornare alla base (a grandi linee direi così).

Mi sono concentrato sulla prima strada.. Il problema vero che ho al momento non è seguire il filo, che potrebbe anche essere semplice, ma posizionarsi sul filo!

Considerate che il robot può arrivare sul filo da ogni direzione, quindi come faccio a dirgli di posizionarsi sul filo in modo da poter iniziare l'inseguimento?

Il robot è rettangolare, 2 ruote motrici e 2 sensori magnetici sul fronte. Sono posizionati a 45° rispetto al senso di marcia così rilevo meglio in qualsiasi direzione arrivo. In realtà non sono molto convinto che sia proprio necessario averne 2, ma al momento è così.

Avete qualche consiglio?
grazie

Bel problema, la soluzione potrebbe portare a una nuova classe di elettrodomestici intelligenti, mi interessa questa problematica e non poco.
Circa 7 anni fa ho visto negli USA il roomba, un robottino da 150$ che ti spazza il pavimento in modo autonomo, aveva solo due interruttori frontali nel senso di marcia, forse a 45° rispetto al punto centrale, quindi 90° o giu li li, quando sbatteva su un angolo cambiava direzione, e in modo sistematico riusciva a percorrere tutta la stanza razzolando tutto comprese sigarette e monete.
Memorizzare il percorso fatto per tornare alla base penso sia improponibile, ci vorrebbe molta memoria e grande precisione nel percorso fatto, propendo piu per qualche altra soluzione che adesso non mi viene in mente
edit
Una cosa che mi viene in mente è che per uscire da un labirinto, qualunque sia, anche a occhi bendati, basta tenere una mano su una parete e non staccarla mai, destra o sinistra non importa, alla fine si esce fuori.

Ipotesi buttata così al volo...
Sulla base una sorta di faro (che emetta IR o segnali in radiofrequenza), e sul tagliaerba un "ricevitore" che acquisito / visto il segnale guida il robot alla base.

Il perimetro di recinzione elettronica potrebbe essere molto esteso, per cui seguirlo non conviene.

Un faro IR puntato verso il centro dell'area potrebbe essere un'idea, ma potrebbero esserci degli ostacoli rispetto al punto dove si trova il robot, per cui dovrebbe esserci un buon algoritmo di ricerca.

Trasmettitore IR a frequenza (o meglio codice) noto (per evitare interferenze con la luce ambiente).

Corona di ricevitori schermati da paratie sulla cima del robottino, piazzati fra due piani orizzontali, in modo da schermare piu possibile il tutto, e posti alla stessa altezza dell'emettitore .

Se il led IR e' "in vista", in base all'intensita' degli IR captata da due o piu diodi adiacenti della corona, il robot calcola in che direzione girarsi, una volta che il ricevitore frontale (schermato in modo leggermente diverso) ha la massima intensita', si dirige da quella parte ... se non riceve nulla (ostacolo in mezzo) si sposta di un metro e rilegge, e continua finche' riceve qualcosa ...

un po come nel disegno allegato, buttato giu "alla buona" con Eagle, anche perche' me lo sono appena inventato al volo e non ho alcun progetto disegnato meglio di cosi :stuck_out_tongue: (brevetto "MadDoctor" numero 130475 - 020304054 - 7284905 - 76 v0.1 alpha, tutti i rovesci riservati :stuck_out_tongue: :D)

Il blu sono paratie (plastica, cartone, lamiera, basta che sia opaco agli IR), i cerchi sono i fototransistor o fotodiodi, quello in alto ovviamente e' l'emettitore ... quando il mezzo si trova, ad esempio, in direzione opposta all'emettitore, lo si fa girare a caso, quando si trova di lato lo si fa girare nella direzione migliore, quando si trova di fronte lo si fa avanzare ... inoltre, configurando le alette paraluce come nel disegno, si ottiene una direzionalita' migliore sul fronte, e contemporaneamente anche un'indicazione di massima della distanza dalla sorgente, infatti ad una distanza maggiore tutti e tre i ricevitori leggono il trasmettitore, perche' l'ombra non copre completamente i due laterali (il che volendo potrebbe persino essere usato per calcolare meglio la direzione, se ci si vuole complicare la vita :P), mentre quando l'emettitore e' piu vicino di una certa distanza, i due coni d'ombra laterali fanno in modo che solo il frontale legga la luce quando la direzione e' corretta (anche qui, volendo, si puo usare la cosa per calcolare la direzione con maggiore precisione, facendo letture mentre si ruota lentamente e rilevando cosi il vettore migliore in base alle intensita')

Con piu ricevitori ovviamente e' piu preciso, ma impiegherebbe anche piu ingressi analogici, quindi l'esempio l'ho disegnato con 4, che dovrebbe dare comunque l'idea :wink:

Oh, se con la mia idea ci fate i milioni, voglio almeno un caffe' pagato al bar, va bene ? ... :stuck_out_tongue: :smiley:

scusa ma se sei in giardino, hai piena ricettività GPS. E' in casa il vero problema dell'orientamento (da qui i costi di un Roomba, che per inciso ha elettronica e algoritmi estremamente più complicati di quanto prospettato dall'utente triac60), non certo all'aperto!

Con il GPS, con un semplice dato in arrivo sulla porta seriale, sai dove sei, in che direzione vai, e a che velocità ci stai andando, a costi relativamente ridotti (20-50 euro a seconda del fornitore e delle caratteristiche tecniche).
E' all'interno che questi dati non sono disponibili e bisogna ricavarli in modo indiritto (encoder su ruote, rilevazioni ottiche ecc ecc)

Una volta che sei vicinoo alla base (e l'errore tipico con un GPS è di 5-10 metri max, non ti aspettare certo i centimetri anche del migliore dei GPS al mondo), allora accenderai i ricevitori infrarossi, che ti consentiranno di raggiungere la base con precisione millimetrica. 5-10 metri è un range assolutamente accettabile per un fascio ad infrarossi (ovvio, servono opportuni diodi led trasmettitori)
Per questa parte, guarda come sono fatte le basi dei robot aspirapolveri e anche dei "muri virtuali" che alcuni produttori supportano.
Sono stretti fasci di infrarossi (normali diodi infrarossi da telecomando) orientati in una direzione (non importa troppo quale). Per renderli a fascio stretto, si usa semplicemente metterli dietro ad una fessura, in modo che passi solo una parte del fascio.

In sosntanza, giunto nei pressi della base, prendi una direzione (come se dovessi fare il giro intorno alla base per intenderci) e vai avanti pianto, aspetti di intercettare il fascio di infrarossi. Se non lo intercetti, torni indietro sui tuoi passi, prima o poi lo intercetti.
Quando lo intercetti, vai in quella direzione. Vai avanti (molto piano).
Appena smetti di intercettarlo, vuol dire che non sei esattametne in rotta verso la base.
Ti giri su te stesso finché non lo reintercetti (generalmente pochi gradi) e torni ad andare avanti pianto
Reiteri questa operazione finché non centri la base.
E' per questo che è indispensabile che il fascio sia potente ma relativamente stretto.

I led infrarossi non saranno accesi fissi, ma saranno modulati in frequenza, così il ricevitore potrà distinguere tra gli infrarossi della luce solare (fissi) da quelli emessi dalla base (modulati su una frequenza specifica)

Visto che con pochi centesimi si trovano ricevitori (fototransitor) che hanno già la parte di schermatura fisica (filtro che lascia passare solo gli infrarossi) e decodifica della portante (per distinguere Sole dalla base), ti consiglio vivamente di prendendere uno di questi e non reiventarti la ruota. Questi ricevitori sono molto affidabili (sono usati dalle TV per riconoscere il telecomando dalle altre fonti di luce infrarosse).

A proposito di telecomandi, potresti prendere in prestito uno dei protocolli standard dei telecomandi TV e mettere più di un fascio, Poi mettere più di un trasmettitore. Ad esempio il trasmettitore che trasmette in continuo "1" sai che è il fascio puntato diritto verso il davanti della base, quello che trasmette il "2" è a 45° a destra, quello che trasmette il 3 a 90°, quello che trasmette il 5 e il 6 idem ma speculari rispetto all' "1".
Così quando intercetti l'infrarosso, sai anche quale degli infrarossi hai intercettato e sai se ti stai avvicinando alla base da destra, sinistra, sotto ecc

Ricapitolando:

  • posizione grossolana: GPS
  • bordi + eventuali zone "off limits": GPS (grossolano, ad esempio per rallentare o accendere il rilevatore di campi magnetici solo in prossimità dei bordi)
  • base IR: trasmette in più direzioni stretti fasci infrarossi codificati (non inventare la ruota, ci sono librerie arduino per simulare telecomandi!)
  • ricevutori IR su robot: 4 ricevitori per TV messi a 90°, di quelli con decodifica della portante già integrata + una delle librerie per la decodifica dei telecomandi che trovi già fatta per Arduino.

Per tua fortuna, trovare una base in un giardino è un compito enormemente più facile che trovarla dentro una casa.

Ti consiglio vivamente di perdere qualche tempo a cercare su Google. Tutto quello che ho scritto si trovava facilmente con una manciata di minuti di ricerca. Non reinventare la ruota, documentati prima su come funzionano i prodotti in vendita, poi potrai fare tutte le varianti e migliorie e personalizzazioni che vuoi, ma parti dall'esperienza degli altri, altrimenti perdi centinaia di ore per scoprire che esiste l'acqua calda...

(EDIT, ho visto che nel tempo impiegato a scrivere altri hanno risposto, la mia risposta non tiene conto di quanto eventualmente appena scritto da altri)

Ciao a tutti,
scusate la tardiva risposta ma sono stato un pò impegnato.

Allora...
L'idea degli infrarossi di etemenanki per localizzare la base è sicuramente buona, ma non tiene conto del fatto che ci possono essere interferenze ed inoltre il sistema si complica parecchio dovendo montare una specie di torretta dove mettere i ricevitori IR e tutta la loro gestione.
Tant'è che nessun robot commerciale, almeno da quello che ho letto (potrei sbagliarmi), usa questa strada.
L'unico momento in cui si usano gli IR è per il posizionamento finale descritto da nabla.

Il GPS non è una soluzione accettabile, se si ha un campo da calcio ok, ma in un giardinetto medio la precisione del gps è troppo grossolana.

Comunque ho fatto un pò di progressi nel frattempo, il robot segue il filo fino alla base, dove il posizionamento di fino viene fatto dagli infrarossi.

Se a qualcuno interessa poi vi tengo aggiornati!

10m per gli infrarossi in un giardino sono veramente cosi pochi? La tecnica degli infrarossi è molto usata in casa dove tutto è allo stesso livello, in un giardino non puoi garantire una linearità del terreno di 10m.
Forse la strada del segui il filo ed esegui l'allineamento finale con gli infrarossi non è cosi male.

Ogni soluzione ha i suoi pro ed i suoi contro. Visto che non stiamo parlando (mi sembra) di un prototipo per una realizzazione in serie è giusto che la soluzione scelta sia la migliore per il proprio caso d'uso.

Nel mio giardino ad esempio seguire il perimetro sarebbe impossibile perché a tratti troppo scosceso. Un robot potrebbe tranquillamente andare in quelle zone scoscese a rasare l'erba perché ovviamente dipende tutto dalla direzione in cui il robot si muove (si spera il robot oltre che evitare ostacoli tramite sensori ottici o bumper, cambi da solo anche direzione di movimento in caso di eccessivo sforzo dei motori di trazione), ma a seguire esattamente il profilo dovrebbe avere motori molto sovradimensionati e sopratutto la batteria ancora carica.

Giusto per la cronaca il GPS non è poi così male come descritto, lo dico per esperienza diretta. Il trucco, se così si può dire, è non prendere per oro colato quel che arriva dalla seriale, ma (a parte filtrare via i dati vistosamente sbagliati come variazioni che richiederebbero spostamenti a velocità non conformi con quanto i motori dovrebbero consentire in quel dato momento) stimare la propria posizione da un insieme di dati. Ad esempio anche solo facendo un mix tra le indicazioni ricevute dagli encoder sulle ruote e dal GPS, si riesce a filtrare via sia gli errori degli encoder che quelli del GPS ed avere un notevole incremento della precisione.
Ovvio anche in questo caso non si raggiungono precisioni centimetriche neanche per sogno, ma con una approssimazione di qualche spanna riesci a capire dove sei (approssimazione estremamente variabile a seconda del tipo di terreno e della conformazione dell'area ci si muove).

A 10 metri di infrarosso (ricordo, i "muri" infrarossi sono stretti lungo un asse ma non nell'altro, ed inoltre la base di ricarica tendenzialmente non si mette nel punto più impervio del giardino) sono tanti ed è quasi certo che non si abbia tutta quella portata in tutte le direzioni intorno alla base. Al robot però serve tuttavia semplicemente captare il segnale per un breve tratto per poter avere un'idea della direzione da prendere, è per questo che l'implementazione suggerita prevedeva una fase in cui il robot girovaga quasi casualmente nella zona in cui ritiene di poter intercettare l'infarosso, ma non sta fermo, si muove (piano) proprio perché è in cerca di segni di vita dalla base.

Sarà ovvio, e non è direttamente connesso alla questione, ma meglio scriverlo una volta di troppo che non scriverlo. Mi raccomando che il robot fermi la lama in caso di ribaltamento, onde evitare pericolosi incidenti. L'ideale sarebbe riuscire a bloccarla, ma già solo spegnere il motore è già una buona cosa.

vaka85:
... non tiene conto del fatto che ci possono essere interferenze ed inoltre il sistema si complica parecchio dovendo montare una specie di torretta dove mettere i ricevitori IR e tutta la loro gestione...

Le interferenze si eliminano usando luce pulsata invece che continua (il che permette, fra l'altro, di emettere piu potenza) ... un "codice" di impulsi, o piu semplicemente, una sequenza ad una certa frequenza, il ricevitore ignora tutto il resto ...

La torretta va montata per forza, ma si riduce, alla fine, ad una struttura a disco, alta un paio di cm e con diametro di 10 o 15 cm, o quello che e' lo spazio disponibile (oltre tutto, il disco superiore scherma pure dalla luce solare i ricevitori, eliminando anche quell'interferenza ;)) ... probabilmente i sistemi commerciali non la usano perche' fare un pezzo in piu costa troppo in produzione, diverso e' il discorso di una realizzazione casalinga, dove uno ci mette quello che vuole lui :wink:

ciao,potresti gentilmente postare gli schemi del circuito usato per la parte ricevente e trasmittente del circuito?...stavo iniziando a studiare un sistema simile e sarebbe una buona base di partenza...ciao e grazie

Allora, la mia era un'idea "di principio", sul come poterlo realizzare, ancora non ho alcun ciecuito fatto, ed al momento non ho la posibilita' di farlo ... ma se vuoi provare a realizzare un circuito per vedere se funziona, ti allego lo schema che stavo progettando (ovviamente per provare basta realizzarne una, delle 4 sezioni, per vedere fino a che punto arduino e' in grado di rilevare un segnale ed utilizzarlo in pratica) ...

Fondamentalmente l'idea e' abbastanza semplice ... il trasmettitore puo essere continuo o modulato (per questo ci sono due schemi diversi come TX, uno trasmette in continuazione una portante non modulata a 38KHz, l'altro trasmette la stessa portante, ma modulata ad impulsi ... l'utilizzo di uno o dell'altro dipende da come si vuole gestire la rilevazione del segnale, se basta leggerne la presenza e l'intensita', va bene il primo schema, se si vuole anche controllare per sicurezza che gli IR siano modulati da una frequenza nota, si usa il secondo, ma poi la gestione a livello software si complica) ... era pensato per usare 3 led IR di potenza a 940/950nm (perche' i fotodiodi utilizzati sono piu sensibili a quella lunghezza d'onda, ed inoltre in questo modo si taglia fuori una parte maggiore dei possibili disturbi da altre fonti, dato che non c'e' molto che emette a quella frequenza) disposti uno in fianco all'altro, leggermente inclinati, in modo da coprire un raggio maggiore ... led di questo tipo, ad esempio, 1pc 3W Infrared IR 940nm Power LED For night vision camera flashlight 20mm base | eBay, che necessitano di un supporto che faccia anche da dissipatore, e sono completamente invisibili, al contrario dei normali 800nm ...

La parte ricevente, che e' tutta da controllare nella pratica (perche' me la sono inventata da zero, e ancora non ho avuto il tempo di provarla), si basa su fotodiodi SFH205 (o 206, l'unica differenza e' che uno ha il lato sensibile sul piatto, l'altro sulla curva del corpo ... entrambi hanno il massimo della sensibilita' sui 950nm, e la plastica del case "dovrebbe" tagliare via quasi tutte le frequenze nel campo del visibile, riducendo il problema delle interferenze), seguiti da filtri passivi passabanda (con quei valori dovrebbero avere un centro banda di circa 38KHz, in modo da cercare di eliminare altre frequenze), da un primo operazionale per amplificare il segnale, un misero integratore passivo (diodo e condensatore), ed un secondo operazionale per fare da buffer ... sempre in teoria, con quella configurazione, dovrebbero dare un segnale proporzionale all'intensita' della luce ricevuta, una volta tarati i trimmer per adattarli alle distanze che servono ... in teoria :cold_sweat:

Nota anche che su quello schema non sono presenti ne alimentazione ne condensatori di filtro, era ancora uno studio di possibilita', ovviamente vanno aggiunti ... sulla sezione TX, in particolare, sul 12V che alimenta i led, ci va almeno un 1000uF, anche di piu, dato che i led "ciucciano" impulsi da 1/2A ...

no scusa Etemenanki,non mi rivolgevo a te ,ma all'autore del post...intendevo lo schema del trasmettitore del filo interrato e del ricevitore installato sul robot tagliaerba...grazie comunque per le tue dritte!!...aspetto notizie dall'autore del post....saluti

molto interessanti le vostre proposte in ogni caso..
Al momento la soluzione di inseguimento del filo sembra più o meno funzionare, quindi cerco di affinare quella.
Vi tengo aggiornati!
Ibbba lo schema elettrico è disegnato su un quaderno, non ho tempo di farlo al pc :slight_smile:
Il tx è un NE555 che pilota un transistor sul cui collettore è collegato il filo con in serie una resistenza di pochi ohm per limitare la corrente.
Il rx è fatto con filo smaltato avvolto a mano su un nucleo di ferrite, così ho un'induttanza di circa 1 mH.
Il circuito LC accordato sulla frequenza del trasmettitore è poi collegato ad un amplificatore operazionale che và poi all'arduino.

una foto dello schemino?? :slight_smile: :slight_smile: