Consigli per la realizzazione progetto scolastico

Salve a tutti :slight_smile:
Sto realizzando un progetto scolastico e avrei alcuni dubbi su come realizzare tutta la parte elettronica del progetto, ma faccio prima a spiegarlo in modo che si possa capire.
Il mio progetto consiste nella realizzazione di una macchinina elettrica motorizzata tramite Arduino.
La particolarità del progetto consiste che la macchina dovrà muoversi tramite gps (le coordinate saranno ricevute da una particolare app programmata da me) e dovrà ricevere degli impulsi da sensori per evitare ostacoli.
Ora il mio quesito, essendo un neofita di Arduino, riguarda quali componenti dovrei usare per creare il progetto.
Ringrazio in anticipo chi avrà la pazienza di aiutarmi e consigliarmi.
Mi scuso in anticipo nel caso abbia infranto qualche regola nonostante l'abbia letto.
Buona giornata a tutti :smiley: :smiley:

Prima domanda: parli di GPS, quindi supponiamo che la macchinina debba lavorare all'aperto esatto? Si muoverà in un piazzale/campo, o in un'area al chiuso (una palestra? Una stanza?)?
Seconda domanda: derivata dalla prima, il percorso è quindi di centinaia di metri o qualche decina, o meno?
Terza domanda: quale tipo di ostacoli prevedi? Es. solo ostacoli (rilevabili da sensori ultrasuoni e/o infrarosso) o anche discese, salite e buche (per cui ti serve anche un giroscopio per rilevare la pendenza, o un sensore verso terra per capire che non si può avanzare lì)?

in base alle risposte alle precedenti domande, ovviamente si aprono scenari totalmente diversi, sia come caratteristiche dei componenti da utilizzare e relative caratteristiche, sia poi nel programma (in pratica dalla tua descrizione potrebbe essere assimilato ad un sistema di guida autonoma per fuoristrada, o, se vogliamo, anche un rover come quelli su Marte...). Quindi identifica e descrivi bene l'ambito nel quale vuoi lavorare, e poi possiamo darti qualche indicazione. E considera che più "esageri" con le caratteristiche, più tempo richiederà lo studio, progettazione, implementazione e test.

Premetto ringraziando per la risposta :slight_smile:
Allora il modello verrà esposto in un cortile quindi dovrà percorrere una distanza limitata.
Mentre per gli ostacoli si saranno ostacoli semplici rilevabili tramite infrarossi o altro, anche se l'idea di implementare un giroscopio per le pendenze mi intriga parecchio.
Spero di aver dato i dettagli necessari nel caso avessi dimenticato qualcosa che potrebbe servire chiedete pure.

Grazie mille ancora e buona giornata :smiley: :smiley:

P.S. L'implementazione del giroscopio comporterebbe un aumento della difficoltà del progetto? Perchè sennò essendo già complicato il progetto non vorrei aggiungere troppa mole di lavoro :sweat_smile:

Altro caso di "sindrome di gundam" :slight_smile:
Il tuo progetto è molto complesso e dubito seriamente che hai le conoscenze per portarlo a termine, p.e. la sola parte matematica per l'obstacle avoidance, come prerequisito richiede il path planning e dead reckoning, è molto complessa e fuori portata per un processore 8 bit.
Idem per la gestione della navigazione tramite gps, per giunta in spazi piccoli come un cortile il gps è quasi inutile in quanto l'errore di sicuro è non meno di 3-4 metri, a meno che non usi una coppia di gps rtk, quasi 600 Euro di materiale tra gps e data link.

Fanny15:
Allora il modello verrà esposto in un cortile quindi dovrà percorrere una distanza limitata.
Mentre per gli ostacoli si saranno ostacoli semplici rilevabili tramite infrarossi o altro, anche se l'idea di implementare un giroscopio per le pendenze mi intriga parecchio.

Ok, allora se sei convinto di poter e voler fare questo tipo di progetto, che sicuramente è più semplice, ci sono alcune considerazioni che hanno impatto sul materiale necessario e relativo effort per la realizzazione del software. La cosa è interessante, ma comunque, anche con varie semplificazioni che sto prendendo in esame, non è banale quindi devi decidere tu se intraprendere questa strada o meno in base alle tue capacità e tempo disponibile.

Per la parte hardware, come già ti hanno fatto notare, il GPS ha una risoluzione insufficiente (in linea di massima considera +/-10 metri), quindi per un cortile è insufficiente. Se hai bisogno di un posizionamento più preciso potresti usare tre sorgenti Bluetooth posizionati attorno al campo, e tramite misura dell'intensità del segnale di ognuno rilevato dal rover (chiamiamolo così) triangolarne la posizione. Fattibile, anche se non proprio banale.
Per gli ostacoli direi almeno 3 sensori ultrasonici anteriormente per coprire circa 180 gradi frontali, oppure uno solo centrale ma posizionato su un servo per poterlo ruotare e "vedere" attorno. Aggiungerei anche qualche sensore di prossimità IR (almeno 3 anche in questo caso) per rilevare eventuali ostacoli bassi o troppo vicini per poterli rilevare decentemente con gli ultrasuoni.

Per la parte software, ovviamente tutto dipende dai sensori disponibili (quindi dalla scelta fatta in precedenza), ma come ha detto giustamente anche astro, il software per una ricerca autonoma del percorso migliore (quantomeno obstacle avoiding e relativa logica per ritornare sulla rotta prevista dopo aver superato l'ostacolo corrente) non è anche questo affatto banalissimo, a meno che non si adottino alcune semplificazioni, ad esempio che gli ostacoli posti sul percorso non siano molti, e magari tutti di dimensioni simili e non eccessive (es. vari blocchetti di legno disposti a caso). Con queste premesse il progetto potrebbe probabilmente risultare fattibile per un Arduino, ed in tempi non biblici, ma lavorandoci full time (supponendo di avere già le giuste competenze hw/sw) si fa forse in un mesetto.

Salendo di difficoltà potresti anche pensare di usare Arduino come semplice periferica di un sistema centrale (es. un PC portatile) al quale fornisce le letture dei sensori e riceve i comandi per l'avanzamento, per cui tutta la logica la sposti su una piattaforma più performante (es. sviluppando un programma di controllo in C# che magari mostra a video anche una rappresentazione grafica della posizione del rover e degli ostacoli man mano rilevati). Ma qui andiamo su un progetto di svariati MESI direi, e non so se sia alla tua portata.

Poi non ho ancora capito, ambito "scolastico" in che senso? Liceo o Università? Ovviamente se il primo è un discorso, per il secondo è una cosa più "seria". Ma in entrambi i casi se il progetto è impegnativo per una sola persona, e se approvato dai tuoi insegnanti, potresti considerare la possibilità di formare un gruppo di studenti per lavorare insieme al progetto...

Con gli ultrasuoni come sensori per gli ostacoli fai ben poco, questo per via dell'ampio cono di emissione che rende impossibile capire dove si trova esattamente l'oggetto da evitare.
In pratica non appena ricevi l'eco di ritorno del sonar l'oggetto può trovarsi in un qualunque punto all'interno del cono, tipicamente di oltre 60° di apertura, ovvero anche a 1 solo metro di distanza l'oggetto si può trovare all'interno di un arco di circonferenza di quasi 1 metro, anche fare la spazzolata con un servo aiuta poco.
L'uso del sonar va bene solo per la scoperta di un possibile ostacolo nel suo raggio d'azione, che tipicamente è di almeno 4-5 metri, poi è necessario usare altri sensori a maggiore definizione per "capire" dove si trova esattamente l'ostacolo e le sue dimensioni in modo da impostare una rotta per evitarlo.
Un mix tra sonar a lunga distanza e un lidar, va benissimo il lidar lite, orientabile tramite un servo, è una soluzione minimale abbastanza buona, meglio ancora realizzare un vero lidar 2D facendo ruotare il lidar lite, tramite uno stepper, per ottenere una mappa perimetrale 2D.
Da notare che in esterno i sensori telemetrici, low cost , di Sharp non funzionano, la luce solare li abbaglia, pertanto è d'obbligo l'uso degli ultrasuoni, lidar per esterno, visione artificiale.
Una possibile soluzione low cost è utilizzare una CMUCAM V, nota anche come Pixy, se gli ostacoli sono tutti di forma regolare e di un colore solido a forte contrasto con lo sfondo.
Qui un breve video di un semplice test che ho fatto con la Pixy, in questo caso Arduino si limita a controllare la posizione dei servo, pan e tilt, in funzione delle coordinate dell'oggetto, inviate sulla SPI dalla CMUCAM in modo da tenerlo sempre al centro dell'inquadratura.

Un bel progetto per un robot relativamente semplice capace di movimento olonomico (si può spostare in tutte le direzioni) in grado di seguire una riga tracciata per terra tramite la CMUCAM.
Il sistema della linea da seguire, anche di colori diversi, è largamente utilizzato nel mondo industriale per i robot che si occupano di spostare gli oggetti nei magazzini.

astrobeed:
Con gli ultrasuoni come sensori per gli ostacoli fai ben poco, questo per via dell'ampio cono di emissione che rende impossibile capire dove si trova esattamente l'oggetto da evitare.

Verissimo, ma nell'ambito della semplificazione che avevo indicato direi che gli basta sapere che c'è qualche ostacolo e a che distanza, e quindi per sapere con maggiore precisione "dove" (con l'approssimazione sufficiente per un progetto scolastico, ricorda...) basta una rotazione di pochi gradi del servo del sensore ultrasuoni (SRF05 ovviamente;)), e quindi, sempre con la rotazione, verificare il lato più libero da ostacoli tra destra e sinistra e far ruotare il rover diciamo di 20-40 gradi verso la direzione migliore.

Passare ad un LIDAR, seppure "lite", a 150 dollari a pezzo mi pare eccessivo per un progetto di questo tipo e per ambito nel quale va pensato, non ti pare?

astrobeed:
... in esterno i sensori telemetrici, low cost , di Sharp non funzionano, la luce solare li abbaglia ...

Intendi la serie GP2Y ? ... io una volta ho risolto parzialmente chiudendone uno in una specie di scatolina su misura fatta con il lamierino di ottone piegato e saldato, con un lato aperto, in modo che coprisse tutto il sensore dietro ed ai lati, e sporgesse sopra circa 3cm sul lato anteriore, con i fianchi tagliati a 45 gradi per tenere il lato inferiore piu rientrato in modo che non riflettesse all'interno ... pero' e' una soluzione parziale, evita l'abbagliamento solo finche' un riflesso abbastanza forte non colpisce frontalmente, in quel caso c'e' poco da fare ...

docdoc:
basta una rotazione di pochi gradi del servo del sensore ultrasuoni (SRF05 ovviamente;)), e quindi, sempre con la rotazione, verificare il lato più libero da ostacoli tra destra e sinistra e far ruotare il rover diciamo di 20-40 gradi verso la direzione migliore.

Hai mai provato a farlo sul serio ?
L'errore è troppo alto per ottenere dati sicuri, basta che vai a vedere qualche competizione di robot, p.e. in occasione del maker faire, per vedere con i tuoi occhi che nessuno usa gli ultrasuoni come sensori per "trovare" oggetti, solo come scoperta lontana per poi passare a sensori con maggiore definizione, oppure come antibumper per la corta distanza.
Altro breve video di un mio robot, siamo nel 2011, in grado di muoversi con precisione in un ambiente domestico sia grazie all'odometria, motori dotati di encoder ad alta risoluzione, e i sensori, sono tre sonar di precisione, roba che all'epoca costava quasi 50E l'uno, e 16 telemetri IR sharp, su ogni lato una coppia composta da uno 8-80 cm e uno 20-150 cm, solo in questo modo riesci a far muovere un robot con quella precisione senza che vada a sbattere da tutte le parti.
Da notare che sul robot del video erano montati 3 processori dsPIC (16 bit con core dsp), uno di tipo MC per la gestione dei due motori e due di tipo GP per la gestione della navigazione, una sbc FriendlyArm linux embedded, data link per la telemetria tramite Xbee.

Etemenanki:
Intendi la serie GP2Y ?

si proprio loro, purtroppo in esterno sono inutilizzabili, anche se li schermi danno lo stesso problemi, inoltre per un uso esterno il range è troppo limitato, alla fine la soluzione migliore, e la più economica, rimane sempre il Lidar Lite o similari.

astrobeed:
Hai mai provato a farlo sul serio ?
L'errore è troppo alto per ottenere dati sicuri

Non lo metto in dubbio, ma non deve fare una competizione né realizzare un rover da mandare su Marte, e non credo voglia spendere molto per i componenti.

Ma oggi sei in "polemic mode on"? :smiley: E aspetta un attimino per vedere che dice l'amico, è lui che deve decidere l'ambito nel quale vuole/può lavorare! :wink: Essibbono, su...

docdoc:
Ma oggi sei in "polemic mode on"? :smiley: E aspetta un attimino per vedere che dice l'amico, è lui che deve decidere l'ambito nel quale vuole/può lavorare! :wink: Essibbono, su...

No sono in "realistic mode" perché so molto bene quali sono i problemi su un robot outdoor che deve essere in grado di evitare ostacoli. :slight_smile:

astrobeed:
No sono in "realistic mode" perché so molto bene quali sono i problemi su un robot outdoor che deve essere in grado di evitare ostacoli. :slight_smile:

Hehe, si, si immagino, ma mi pare di parlare con Sheldon Cooper... :wink:

docdoc:
… Sheldon Cooper… :wink:

… chi ? … (:stuck_out_tongue: :D)

Mi scuso per il ritardo della risposta.
Dunque per il progetto posso allestire lo spazio dove opererà la macchina come voglio quindi per gli ostacoli e il fondo (con relativi problemi di riflesso ecc) posso "giocarmela" io.
Il budget per il progetto non è ancora fisso, cioè se devo spendere tot spendo tot ovvio se posso risparmiare su certi elementi sono più contento diciamo ahahahah.
Per quanto riguarda il fattore gps invece se l'errore è di un paio di metri la cosa è ancora fattibile sennò opterò per la triangolazione bluetooth quello lo deciderò una volta parlato coi docenti.
Per i sensori invece chiedo consiglio a voi tenendo conto appunto del costo/affidabilità dei sensori e della scelta dello spazio di movimento come ho scritto sopra.
Vi chiederei un ultimo favore ovvero se poteste scrivermi l'elenco dei componenti che servirebbe essendo appunto un neofita di Arduino.
Grazie mille in anticipo per la disponibilità e la collaborazione.
Buona giornata :slight_smile: :slight_smile: