Obstacle Robot

Ciao ragazzi, :slight_smile:
sono un neofita e vorrei costruire un robot che possa evitare gli ostacoli.
Stavo pensando di munire il robot con due emettitori IR e un ricevitore IR anteriormente (come quelli nella scheda dell’immagine) e altri due emettitori e un ricevitore posteriormente.

A questo punto mi sorge spontaneo porvi delle domande:

  • pensate che questa soluzione possa funzionare?
  • affinchĂ© il robot riesca a muoversi in un percorso evitando tutti gli ostacoli e non rimanendo mai bloccato (non andando mai a sbattere), è indispensabile la presenza dei sensori posteriori?

Ringrazio sin da subito tutti coloro che mi risponderanno e che vorranno approfondire la questione dandomi un aiuto.

Andrea :wink:

il mondo della robotica è vasto, quello che ti consiglio e una estesa ricerca in rete per vedere esempi, scegliere quello che ti piace in funzione delle tue capacità, riprodurlo per farti le ossa e poi ti fai la tua soluzione

Ciao stefa24, innanzitutto grazie per avermi risposto. Si... in effetti il mondo della robotica è veramente vasto, ma dato che sono un neofita qualche consiglio mi farebbe comodo. Ho fatto tante ricerche in questi giorni, ma sinceramente un aiutino mi consentirebbe di partire con il piede giusto. Sapresti rispondere alle due domande che mi sono posto? Grazie di nuovo,

Andrea :)

  • pensate che questa soluzione possa funzionare?
  • affinchĂ© il robot riesca a muoversi in un percorso evitando tutti gli ostacoli e non rimanendo mai bloccato (non andando mai a sbattere), è indispensabile la presenza dei sensori posteriori?

possono andare, e dei sensori posteriori pure, ma per quello che vedo andrai a fare una cosa molto minima, del tipo:
avanti stop
ruoto un po dx o sx
avanti stop
indietro stop
ruoto un po dx o sx
avanti stop
indietro stop
…

dipende dal modello di comportamento che vuoi ricreare

Ok, grazie! Ma secondo te i sensori posteriori sono indispensabili per ottenere un buon movimento? Oppure è sufficiente avere quelli anteriori e magari montare 2 o 3 ricevitori anziché 1 solo? Inoltre, è meglio avere un ricevitore e due emettitori oppure due emettitori e due ricevitori? Scusa le tante domande ma devo capire ancora molti aspetti.

Il fatto di volere utilizzare frontalmente due emettitori e un ricevitore dipenda dal funzionamento che vorrei dare al robot quando incontra un ostacolo: - Se il segnale che riceve il ricevitore proviene dall'emettitore di sx, il robot torna un po' indietro e gira a dx di 90°; - Se invece il segnale ricevuto è stato emesso dall'emettitore di dx, allora il robot va indietro e gira a sx.

Infine ho qualche incertezza sull'angolo di rotazione... non so se 90° siano opportuni o troppi. Grazie di nuovo! :)

stefa24:
…
dipende dal modello di comportamento che vuoi ricreare

Una cosa del genere ?

:stuck_out_tongue: :smiley: :smiley: :smiley:

Non penso proprio di poter arrivare ad un risultato del genere!!! :o :) Però l'idea è quella... riuscire a fare un percorso senza colpire nessun ostacolo e senza che il robot si fermi mai... hai qualche suggerimento? E soprattutto, cosa risponderesti alle mie domande sopra? Grazie!!! ;D

https://sites.google.com/site/ngbengkiat/Downhome

questo e' il sito del giovane speeddriver

Ciao ragazzi, grazie per i consigli che mi avete dato sinora! ;) Avete qualche altro suggerimento da fornirmi? Stavo pensando di inserire tre sensori frontalemente (costituiti ciascuno da un emettitore e un ricevitore IR), uno al centro e due in diagonale. In questo modo non metterei nulla sul retro... in fondo è indispensabile avere dei sensori anche sul retro per ottenere una buona funzionalità??

Grazie!! ;)

Supponiamo che tu abbia inserito due LED IR nella parte anteriore del robot, inseriti i un tubicino in modo da rendere il raggio maggiormente "direttivo", come nella foto.

Supponiamo anche che, per evitare interferenze con altre sorgenti luminose, moduli i LED ad un certa frequenza e che il ricevitore abbia un filtro sintonizzato alla stessa frequenza e di un opportuno amplificatore.

Un modulo che fa tutto questo è lo SHARP GP2Y0A02YK che misura distanze da 20 a 150 cm, restituendo un segnale analogico tra 2.5V e 0.5V.

Costa un po' (circa €17), ma ti evita tutte le problematiche analogiche.

Grazie per il consiglio! :) Se io decidessi di utilizzare un sensore ad ultrasuoni, anteriormente e fisso, secondo te ne basterebbe uno soltanto oppure ne metteresti 2 o tre, dato che la visuale di questo tipo di sensori è di circa 30° (se non ho capito male)?

Il fatto di utilizzare piĂą sensori (supponiamo 3, uno centrale e due in diagonale) mi fa sorgere dei dubbi ai quali non so dare una risposta:

una volta percepito un ostacolo, il robot deve girare finché i sensori continuano a captare la presenza dell'ostacolo stesso, oppure l'angolo di virata deve essere fisso ogni volta che ne viene percepito uno?

Te lo chiedo perché se io usassi 3 sensori, mi verrebbe spontaneo pensare ad uno schema di funzionamento di questo tipo, ma logicamente non so se risulterebbe corretto: - Se l'ostacolo è percepito dal sensore di sx, il robot deve girare a dx di tot gradi (45°?) - Se l'ostacolo è percepito dal sensore di dx, il robot deve girare a sx di tot gradi (45°?) - Se invece a percepire l'ostacolo è il sensore centrale, allora il robot dovrà girare a sx o a dx di 90° a seconda di dove la visuale è più libera.

Il comportamento del robot lo decidi tu, sperimentando con lo sketch finche' trovi il risultato migliore per il tuo scopo ... ne esistono diverse versioni, e non tutte usano lo stesso sistema ...

A proposito, i sensori ad ultrasuoni hanno portate maggiori degli IR, ma sono molto meno direttivi, quindi non ti potrebbero dire in che posizione e' esattamente l'ostacolo ... ad esempio, se il cono di risposta ha un'apertura di 45 gradi, il sensore ti puo dire che, diciamo, hai un'ostacolo a 20cm, ma non ti puo dire in quale posizione all'interno di quel cono di 45 gradi si trova ... per fare una cosa del genere con gli ultrasuoni avresti bisogno di sensori 3D CHIRP a doppia frequenza, funzionanti almeno a 500KHz o piu, del costo di diverse centinaia di Euro, e di un sistema di elaborazione dell'eco e di ricostruzione dell'immagine acustica molto piu potente di quello che puoi avere da una MCU, purtroppo ...

Grazie Etemenanki! Aldilà del tipo di sensore che potrei utilizzare, una delle cose che non riesco proprio a capire è come gestire la relazione distanza - angolo di virata. Il fatto è che un ostacolo io lo potrei percepire a 10 cm di distanza come a 50 e l'angolo di rotazione necessario per evitarlo non sarebbe lo stesso. Infatti a 50 cm di distanza basterebbe una rotazione minore rispetto al caso in cui l'ostacolo venga percepito ad una distanza di 10 cm. Quello che mi chiedo è come fare a regolare dinamicamente questo meccanismo. Come fa il robot a capire di quanti gradi deve ruotare in base alla distanza dall'ostacolo?

Essendo un progetto in cantiere sul quale sto cercando di ragionare, per ora non ho ancora nulla di fisico tra le mani. Mi piacerebbe chiarirmi un po' le idee prima di iniziare perché sono ancora un po' confuso..

Be', potresti (ma e' solo un'idea), farlo fermare e ruotare di 5 o 10 gradi, ripetendo la lettura finche' l'ostacolo non lo rileva piu, prima di farlo ripartire (che e' il sistema piu semplice) ... oppure rallentare e curvare finche' l'ostacolo e' fuori dalla traiettoria (ma servirebbe sapere in anticipo la distanza a cui il sensore rileva l'oggetto, per decidere le velocita' e gli angoli di sterzata, e non tutti gli oggetti riflettono gli IR allo stesso modo, quindi tranne in caso di oggetti tutti dello stesso materiale, non potresti saperlo ... e poi comunque, per sicurezza, ti servirebbero almeno tre sensori per angolo (diritto, 45 gradi e 90 gradi), piu un paio extra di fronte per gli ostacoli piccoli (se i sensori stanno a 20cm uno dall'altro, la gamba di un tavolo larga 5cm magari non la rileverebbero) ...

Scusa, spiegami una cosa… ma i sensori IR mandano e ricevono i segnali solo linearmente oppure riescono a coprire un cono più ampio, di tot gradi tipo quelli ad ultrasuoni?

Dipende dall’ottica che usano (SE la usano) e dalle schermature che gli metti … ad esempio quelli che usano di piu per Arduino, i TCRT5000, hanno un cono abbastanza ampio, quindi per renderli “direzionali” serve schermarli con un tubetto di materiale plastico o comunque opaco agli infrarossi, o con delle paratie, o comunque in modo da ridurre il loro angolo di rilevazione … non si possono purtroppo usare ottiche con quelli, perche’ gli assi dell’emettitore e del ricevitore sono differenti …

Poi ci sono di diversi tipi e modelli, ognuno con caratteristiche ottiche diverse … ad esempio, i 5000 anche se sono ottimizzati per una distanza di pochi millimetri hanno un cono abbastanza ampio, mentre quelli di questo tipo, ad esempio, http://www.dx.com/p/ir-infrared-sensor-switch-orange-121348 hanno una specie di ottica integrata "anche se di plastica stampata :P) che ne riduce l’apertura ed aumenta il raggio d’azione (pero’ costano un po di piu e sono piu ingombranti) … questi invece http://www.dx.com/p/ir-infrared-sensor-switch-module-121517 sembrano una via di mezzo, ma non li conosco bene … poi ce ne sono almeno un centinaio di altri modelli diversi …

Il LED emettitore ha una lente sul corpo che dovrebbe garantire un angolo di emissione tra 20° e 30°.

Quindi, ad una distanza di 50cm e nel caso angolo di 30° lo spot IR dovrebbe avere un diametro massimo della metà (25cm).

Se ti accontentassi di una distanza massima dall'ostacolo di 30cm, puoi usare un altro tipo di sensore (GP2Y0A41SK0F).

Secondo voi, quindi, mettendo un sensore frontale e due in diagonale a circa 30° da quello centrale potrei avere una buona copertura?

Cosa ne dite :)

Io userei per le collisioni laterali due semplici “baffi” da 5-10cm collegati a due microswitch: è un sistema collaudato semplice ed efficace.