Robot tagliaerba

Buonasera a tutti! Ormai siamo nel 2020, tutto è smart e anche io da nuovo neofita vorrei riproporre una rivisitazione per i più esperti di voi per realizzare un robot tagliaerba fatto bene. L'idea è simile ai 3 o 4 progetti già presenti (senza una guida ben definita per un neofita che vuole iniziare) e a questo punto vorrei realizzarla mentre costruisco il progetto. L'idea di base è un telaio, due motoriduttori con ruote, il motore con la lama, due ruote libere per permettere i movimenti laterali, sensori a ultrasuoni, sensore per filo interrato e ritorno a "casa" in caso di batteria scarica o pioggia. L'idea di come formulare il programma per arduino ce l'ho, però ho bisogno del vostro aiuto per i componenti in particolare, primo per evitare di bruciare arduino, e poi per scelta motoriduttori, motore rasaerba, scrittura linguaggio e sensori di prossimita/filo interrato. Qualcuno vuole darmi un paio di dritte per realizzare una bella guida semplice per chi è interessato a realizzare il progetto?

Se fai click sulla “lente”, in alto a destra, e scrivi dentro “tagliaerba”, ti vengono fuori varie discussioni passate sull’argomento con varie soluzioni. Prova a darci un’occhiata.

Guglielmo

P.S.: Mi raccomando, essendo discussione molto vecchie, in conformità al punto 16.9 del REGOLAMENTO, NON ti accodare ad esse, ma usale solo come eventuale riferimento continuando la discussione in questo tuo thread.

P.P.S.: Ti informo inoltre che, in conformità al punto 15.2 del suddetto regolamento, se dovessi riscontrare delle “pericolosità” nel progetto dovrò chiudere il therad.

Buongiorno a tutti, aggiorno questo thead nella speranza di trovare altri appassionati come me, sicuramente più esperti e ferrati nello scrivere codice che possano aiutarmi a realizzare questo robot rasa erba. Prima di tutto voglio rassicurare il sign. Guglielmo che il progetto sarà realizzato nel massimo della sicurezza e senza pericolo di farsi male in quanto ho in mente alcuni accorgimenti che spiegherò poi. Volevo inoltre informare Guglielmo che ho fatto diverse ricerche con la lente di ingrandimento non trovando aimè troppe informazioni sul progetto che vorrei realizzare. iniziamo: In questo mese mi sono documentato, ho fatto ricerche, trovato articoli interessanti e ho rotto le cosidette a più di 100 persone (logicamente nessuna era interessata ad aiutarmi o supportarmi in questo progetto). Di seguito vi elenco un paio di link e il progetto che vorrei realizzare con l'aiuto di tutti voi. L'idea iniziale è partita dal voler costruire un rasa erba elettrico economico accessibile a tutti e con una guida semplice; le particolarità sarebbero: -Stazione di ricarica con alimentazione. -Alimentazioni con 2 batterie da moto a 12v -Sensore di disattivazione lama in caso di ribaltamento/presa in mano -Sensori laterali finecorsa per gli oggetti -Sensori magnetici per il filo interrato -Mappa del perimetro del giardino con sucessivo taglio a spirale verso il centro. -Ritorno alla base di ricarica in autonomia.

ora questi sono i link che ho trovato e che vorrei prendeste in considerazione:

il video del robot con sotto i link al codice e allo schema di collegamento: https://www.youtube.com/watch?v=3xfuK8QGKPw La bussola (modulo LSM303) abbinato al gps (Ultimate Breakout GPS di adafruit) anche se ho letto che va parecchio male quindi in alternativa prenderei in considerazione il modulo RTK o simile o LiDAR radar che potete vedere di seguito: https://github.com/iliasam/OpenSimpleLidar In alternativa anche in questo link c'è un progetto di un rasa erba robot, logicamente propongono un kit già fatto ma allegano molte spiegazioni interessanti http://wiki.ardumower.de/index.php?title=Hauptseite

Ora cosa ne pensate? Dite che sia fattibile qualcosa del genere? Qualcuno è disposto o interessato ad aiutarmi?

Certo che è fattibile ! però dipende molto da quanto ci sai fare con la programmazione.

Hai già abbozzato qualcosa del codice ?

Edit: interessante può essere interessante, come strumento didattico, ovvero quando l'hai finito avrai imparato una marea di cose, GPS, sensori ecc...

Moce993:
Certo che è fattibile ! però dipende molto da quanto ci sai fare con la programmazione.

Hai già abbozzato qualcosa del codice ?

Edit: interessante può essere interessante, come strumento didattico, ovvero quando l’hai finito avrai imparato una marea di cose, GPS, sensori ecc…

si ho già una bozza della struttura e del codice che ho scaricato dal link del video, purtroppo sono neofita e autodidatta di python e mi servirebbe tutto il vostro aiuto per mettere su il progetto a tempo perso. Magari se sei interessato possiamo vedere assieme il codice?

giacomogaldino: purtroppo sono neofita e autodidatta di python e mi servirebbe tutto il vostro aiuto per mettere su il progetto a tempo perso.

Phyton ? :cold_sweat: Arduino usa framework Wiring, ovvero C/C++...

giacomogaldino: Magari se sei interessato possiamo vedere assieme il codice?

Sicuramente se posti il codice, nel limite delle mie competenze ti posso aiutare (mi considero attualmente nel punto più basso della curva dunning Kruger, ovvero so di non sapere e che ho ancora molto da imparare ;D). Comunque sono sicuro che anche persone molto più esperte di me ti aiuteranno.

Eccoci: posto il codice che ho copiato e incollato. Purtroppo fino ad oggi ho studiato python e questo codice è in c++ quindi da questo momento mi metto a studiare c++ da neofita, chi può aiutarmi è il benvenuto. Lascio qui il link a cui vedere il codice perchè non so se è consentito postarlo direttamente in questa finestra. https://github.com/RedActarus/RobotNocciola/commit/654809e1036994be7e30166089d933dcd2ba4e9a

nessuno interessato ad aiutarmi a sviluppare questo progetto?

Moce993: mi considero attualmente nel punto più basso della curva dunning Kruger, ovvero so di non sapere e che ho ancora molto da imparare ;D .

Possiamo darci la mano allora. Ogni volta che visito questo forum e ricevo consigli credo di aver imparato qualcosa (ed effettivamente è così), però poi guardo un poco oltre e mi accorgo che quello è solo un nuovo inizio per imparare altre cose ancora. Ecco quindi che "scivolo" indietro al punto di prima :-).

Io continuo a dire che non si finisce mai di imparare.

Scusate l'OT!

giacomogaldino: nessuno interessato ad aiutarmi a sviluppare questo progetto?

Ma non ho ben capito, se hai trovato già un codice ed un progetto, in cosa esattamente dovremmo aiutarti? ;) Se intendi dire che vorresti adattare e modificare quel progetto, temo che se sei abbastanza a zero con Arduino è una cosa che rischia di essere per te o frustrante (perché devi "reinventare l'acqua calda" ossia imparare molte cose) o di alcuna utilità (perché ti limiteresti a fare "copiaincolla" di cose che non capisci).

Se stai iniziando ad imparare o vuoi iniziare, ti conviene iniziare da qualcosa di più semplice, anche relativamente come ad es. il classico robottino, che trovi anche in kit, che cammina ed evita gli ostacoli. E già così, oltre alla programmazione in C, imparerai la gestione dei motori e dei sensori (quantomeno quelli ad ultrasuoni). Quando avrai almeno queste conoscenze di base, allora potrai pensare di fare qualcosa di più complesso.

Comunque se vuoi divertirti comunque su questa cosa, cerca sul sito Instructables dove ci sono parecchi progetti con istruzioni passo-passo e video, ad esempio QUESTO.

Ma, ripeto, se vuoi veramente divertirti ed imparare qualcosa, meglio se inizi con le cose che ti ho decritto.. ;)

docdoc: Ma non ho ben capito, se hai trovato già un codice ed un progetto, in cosa esattamente dovremmo aiutarti? ;) Se intendi dire che vorresti adattare e modificare quel progetto, temo che se sei abbastanza a zero con Arduino è una cosa che rischia di essere per te o frustrante (perché devi "reinventare l'acqua calda" ossia imparare molte cose) o di alcuna utilità (perché ti limiteresti a fare "copiaincolla" di cose che non capisci).

Se stai iniziando ad imparare o vuoi iniziare, ti conviene iniziare da qualcosa di più semplice, anche relativamente come ad es. il classico robottino, che trovi anche in kit, che cammina ed evita gli ostacoli. E già così, oltre alla programmazione in C, imparerai la gestione dei motori e dei sensori (quantomeno quelli ad ultrasuoni). Quando avrai almeno queste conoscenze di base, allora potrai pensare di fare qualcosa di più complesso.

Comunque se vuoi divertirti comunque su questa cosa, cerca sul sito Instructables dove ci sono parecchi progetti con istruzioni passo-passo e video, ad esempio QUESTO.

Ma, ripeto, se vuoi veramente divertirti ed imparare qualcosa, meglio se inizi con le cose che ti ho decritto.. ;)

Hai ragione, ma se non ho qualcuno che mi supporta posso anche seguire tutti i tutorial di questo mondo che poi una volta che iniziò il mio progetto non ci saranno persone per darmi dritte che mi serviranno e allora sarà tempo buttato. Se so che il mio progetto si può fare da parte di persone esperte, mi ci metto, altrimenti se di base non si può fare lascio perdere.

giacomogaldino: Hai ragione, ma se non ho qualcuno che mi supporta posso anche seguire tutti i tutorial di questo mondo che poi una volta che iniziò il mio progetto non ci saranno persone per darmi dritte che mi serviranno e allora sarà tempo buttato.

E chi te lo ha detto, scusa? Se tu segui un tutorial o un progetto esistente e fai le cose descritte dovresti riuscire, ma se dovessi avere problemi QUI ci sono proprio persone che possono darti dritte che ti serviranno. Ma non puoi pensare di partire da ZERO con un progetto relativamente complesso, non ti pare? Devi fare TU per primo qualcosa, ossia le cose che ti ho suggerito prima.

Se so che il mio progetto si può fare da parte di persone esperte, mi ci metto, altrimenti se di base non si può fare lascio perdere.

Il progetto si può fare, si può fare tutto (almeno tutto ciò che è stato già fatto da altri), ma questo che dici significa che o trovi gente esperta che in pratica fa le cose più complicate per conto tuo, o lasci perdere? Non è questo lo spirito, mi spiace, e spero che tu non pensi veramente questo, anche perché è scritto pure nel regolamento che qui nessuno programma o progetta "per conto terzi".

docdoc: Ma non puoi pensare di partire da ZERO con un progetto relativamente complesso, non ti pare? Devi fare TU per primo qualcosa, ossia le cose che ti ho suggerito prima.

Sono d'accordo in parte, ovvero da un lato può essere demoralizzante per la vastità di cose da fare (e che non si conosco) ma d'altro canto può essere più motivante che far lampeggiare un led. Ciò non toglie che le basi bisogna comunque smazzarsi ed impararle.

Detto questo, ti do un mio personale consiglio: comincia con lo scomporre il tuo progetto in tanti progetti più piccoli ovvero sensore ultra suoni, GPS, movimentazione ecc...

Per esempio io comincerei con il GPS, ovvero scrivi un programma nel quale dai "coscienza di se" nello spazio al tuo Arduino.

Poi non ho capito una cosa, hai un Arduino e qualche sensore con cui puoi fare le prove o stai parlando solo per via teorica ?

P.S. stai pur certo che se trovi delle difficoltà qui saranno pronti ad aiutarti (come hanno fatto con me), ma scordati che qualcuno faccia il lavoro al posto tuo. :D

Moce993:
Sono d’accordo in parte, ovvero da un lato può essere demoralizzante per la vastità di cose da fare (e che non si conosco) ma d’altro canto può essere più motivante che far lampeggiare un led.

Veramente gli dicevo di iniziare realizzando un robottino che evita gli ostacoli, cosa ben più complessa di un led lampeggiante… Se vuole fare Gundam e farlo senza sforzo da parte sua, allora mi spiace ma non credo che potrà trovare molti “aiuti”.
Invece iniziare anche solo con un led lampeggiante inizia a farti capire i meccanismi di base delle uscite digitali di Arduino, resistenze e correnti, poi si mette un pulsante per attivare o disattivare il lampeggiamento, e qui iniziamo a parlare di pullup e di gestire millis(), per cui anche questo tipo di esperimenti sono utili a lui per capire almeno le basi, che poi applicherà in tutti i progetti che vorrà realizzare. Ed in questo caso si che troverà sempre aiuto qui da tutti noi!

Per esempio io comincerei con il GPS, ovvero scrivi un programma nel quale dai “coscienza di se” nello spazio al tuo Arduino.

Cominciare col GPS? Ma anche no…

docdoc: Veramente gli dicevo di iniziare realizzando un robottino che evita gli ostacoli, cosa ben più complessa di un led lampeggiante...

Non volevo assolutamente sminuire i tuoi consigli, anzi... :D

Io intendo che molto spesso è frustrante (almeno per me lo è stato) fare sketch di esempi senza sapere quale utilità può avere una data funzione in futuro. Cerco di spigarmi meglio, so come chiamarla, so che parametri vuole che gli passi, so cosa fa nel suo corpo, so cosa mi ritorna ma non vedo in cosa mi possa essere utile. Se invece parto da un problema più grande e lo scompongo in problemi più piccoli e li vado a cercarmi le librerie, funzioni ecc.. che mi servono. Poi questo è il mio personale pensiero, magari sbagliato :D

Ciao,
leggo dalla tua presentazione che studi elettronica ma fai il progettista meccanico.
Quindi deduco che hai già ben chiaro come fare tutta la parte meccanica, partendo dallo chassis e dalla meccanica di base, lama, ruote, motori, ecc. comprese tutte le protezioni cui hai accennato.
Ottimo, inizia a condividere tutta questa parte.
Poi, si passa alla parte elettronica.
Hai già arduino visto che hai indicato un preciso modello che vorresti usare, hai anche altro? es. uno starter kit o qualcosa di più?
Passa a sperimentare ogni singolo aspetto di elettronica che ti potrà servire, ad es. un sensore che rilevi la presenza di metallo.
Prova progetti semplici per testare singolarmente sensori, attuatori, ecc.
il difficile è accendere il led, non fare il robot completo.
Si tratta di risolvere tanti piccoli problemi elementari.
Una volta fatto questo si passa a metterli tutti assieme.
Ma si può iniziare a testare i singoli componenti in modo distinto uno alla volta.
Vedrai che fatto questo il rest sarà tutto in discesa.

Invece di pensare a far tornare alla base il robottino, pensa come fare a farlo muovere in avanti e poi come fargli fare una semplice curva, e poi…

Un piccolo passettino alla volta.

Ok, prima di essere bacchettato, è più o meno quello che ti stava cercando di dire docdoc :stuck_out_tongue: e Moce993 prima di lui.

Vedrai che se inizi a fare qualcosa ed entri nel merito su qualche elemento, troverai molto più aiuto rispetto a fare una semplice domanda generica su un progetto articolato.

Ora tiro il fiato e mi metto in attesa di sviluppi, perchè il progetto mi incuriosisce.

Maurizio

Moce993: Non volevo assolutamente sminuire i tuoi consigli, anzi... :D

Io intendo che molto spesso è frustrante (almeno per me lo è stato) fare sketch di esempi senza sapere quale utilità può avere una data funzione in futuro. Cerco di spigarmi meglio, so come chiamarla, so che parametri vuole che gli passi, so cosa fa nel suo corpo, so cosa mi ritorna ma non vedo in cosa mi possa essere utile. Se invece parto da un problema più grande e lo scompongo in problemi più piccoli e li vado a cercarmi le librerie, funzioni ecc.. che mi servono. Poi questo è il mio personale pensiero, magari sbagliato :D

Si, concordo, e conoscendolo, anche docdoc la pensa così. Hai il progettone? bene, scomponilo e testa i singoli elementi, da soli però, così non hai conflitti o interferenze. Una volta fatto inizia a metterli assieme un pezzo per volta. Cercare di fare subito tutto assieme è estremamente difficile per un neofita e non solo, perchè i problemi si intersecano e fai fatica a venirne fuori. Se poi parti da un software copiato e articolato, che non riesci nemmeno a capire al 100% diventa pure peggio. Quindi, un passettino alla volta. Ovvio che il progettone lo devi scomporre in parti e ordinarle con un certo senso. Non provi a fargli testire il taglio a spirale se ancora non hai capito come fare a muovere un motore.

ciaooo Maurizio

Ragazzi intanto grazie, si vede il vostro buon animo e questo mi incoraggia. Giusto per chiarire un paio di cosette, probabilmente nei primi messaggi non mi sono espresso bene ovvero lungi da me il fatto che voglio che terzi facciano il lavoro al posto mio assolutamente: che senso avrebbe? mi toglie tutto il divertimento. Quindi un passo indietro giusto per farvi capire la mia domanda. Il progetto sicuramente è realizzabile, la vera domanda è se è fattibile/realizzabile il taglio dell'erba in modalità spirale verso il centro con un margine di precisione abbastanza alto. E chiedo questo perchè lo sappiamo tutti che il tempo libero è sempre poco sopratutto se sei sposato. Quindi ok sono daccordo a passare giorni interi a documentarsi e iniziare a fare le prime prove (attualmente ho arduino uno e arduino pro mini) ma ripeto se questa cosa del gps è una cosa fattibile o che qualcuno ha fatto allora procedo, se non è una cosa fattibile o mom riesco a trovare assieme a chi desidera aiutarmi una soluzione diversa (es al posto che spirale farlo avanzare avanti e indietro facendogli fare due curve a 90° e rimettendolo parallelo alla striscia appena tagliata) allora non procedo, ma non perchè sono scoraggiato o nessuno lo fa per me, ma semplicemente perchè il progetto non riuscirà a esaudire le mie necessita. Detto questo sono progettista meccanico quindi realizzare ruote telaio etc è nulla, mi serve qualche dritta per: 1 - Motoriduttori delle ruote e per il motore della lama/filo. Chiedo aiuto perchè magari qualcuno li usa di frequente o ha gia realizzato il progetto e quindi sa darmi qualche dritta su quale scegliere in rapporto spesa/potenza/consumo. 2 - Il gps magari mettendo un punto fisso nel giardino e una bussola in modo che il satellite si setta sul punto fisso e corregge l'errore. Questo mi preoccupa di più. Sarà fattibile? 3- Se il gps è scartato, attraverso laser o altro secondo i più esperti è possibile agire in altro modo per far si che il rasaerba segua una traiettoria precisa? (da mettere in conto anche alberi aiuole e ostacoli vari. Per il perimetro l'intenzione era usare un filo interrato con due sensori sotto il robot che rlevavano la presenza e lo seguissero.

Posto questo link giusto per avere altre idee https://www.researchgate.net/publication/326033151_A_Fully_Automated_Lawn_Mower_Using_Solar_Panel

Per concludere ribadisco la domanda iniziale ovvero, se so che è fattibile lo faccio (fattibile in base a chi ha già avuto esperienza e sa come muoversi), se non è fattibile e non copre le necessità del progetto la vedo solo come una perdita di tempo. Quindi se per chi è interessato vogliamo metterci a studiare un attimo i problemi della gestione del prato e risolviamo poi sarò il primo ad acquistare un mega e a iniziare subito il progetto.

giacomogaldino: lungi da me il fatto che voglio che terzi facciano il lavoro al posto mio assolutamente: che senso avrebbe? mi toglie tutto il divertimento.

Bravo, esatto! :)

la vera domanda è se è fattibile/realizzabile il taglio dell'erba in modalità spirale verso il centro con un margine di precisione abbastanza alto.

Beh, a meno che tu non abbia un giardino rotondo e senza ostacoli credo che ci sia qualche problema in ogni caso.

Diciamo che provo a dire come la vedo io, posso sbagliare qualche valutazione generale (chi non sbaglia mai?;)) ma credo che sia realistico. Se persino i robot aspirapolvere in commercio usano algoritmi semicasuali per coprire "statisticamente" tutta la superficie, ci sarà un motivo... ;) La cosa è simile anche per un tagliaerba in quanto la logica è sempre la stessa: cercare di passare su l'intera superficie ma anche evitare gli ostacoli.

Ad esempio se vuoi divertirti un poco, leggi QUESTO articolo del sito LegaNerd dove trovi molte informazioni utili oltre che divertenti, ad iniziare dal "problema del commesso viaggiatore". ;D

2 - Il gps magari mettendo un punto fisso nel giardino e una bussola in modo che il satellite si setta sul punto fisso e corregge l'errore. Questo mi preoccupa di più. Sarà fattibile? 3- Se il gps è scartato, attraverso laser o altro secondo i più esperti è possibile agire in altro modo per far si che il rasaerba segua una traiettoria precisa? (da mettere in conto anche alberi aiuole e ostacoli vari. Per il perimetro l'intenzione era usare un filo interrato con due sensori sotto il robot che rlevavano la presenza e lo seguissero.

Gli americani direbbero "no way". Intanto il GPS ha una precisione di circa 10 metri, cosa che è inutile nel tuo caso. La bussola è fattibile ma ti dice solamente la direzione verso la quale punta il robot, non la posizione. Il laser si, ma allora dovresti mettere un LIDAR per mappare correttamente ciò che c'è attorno e quindi dare una sorta di "vista" al robot e con un algoritmo calcolare come spostarsi confrontando la lettura del LIDAR con la mappa che ha in memoria. Comprendi che questa cosa, oltre al costo (un LIDAR non costa come qualche sensore ad ultrasuoni..) ha anche un carico elaborativo non indifferente, sicuramente superiore a quello di Arduino.

Un modo relativamente semplice ed economico potrebbe consistere in una triangolazione fatta con Bluetooth. Dato che il modulo BT è in grado di elencare le sorgenti BT nelle vicinanze con il livello del segnale, installando in posizioni note attorno al giardino tre trasmettitori BT (bastano tre HC-06), in base al livello del segnale potrebbe calcolare la sua posizione.

Per tornare ai robot commerciali, anche i tagliaerba usano criteri analoghi al Roomba per il movimento, mentre il discorso del filo interrato lo si usa non per farlo "seguire" dal robot, ma per marcare le zone che il robot NON deve oltrepassare (fiori, orto, alberi, scarpate e dirupi...;)): quando rileva la presenza del filo interrato deve cambiare direzione (anche qui, lo spostamento dipende dall'algoritmo).

Poi teoricamente sarebbe bello fare in modo che quando lui "sa" di aver passato tutta la superficie si spenga o che torni "a casa" (un qualche ricovero, dove magari c'è anche il caricatore). Dato che non ha modo di conoscere la posizione (sua e del ricovero) si potrebbe implementare un sistema che tramite bluetooth riesca a capire in quale direzione si trovi "casa" misurando l'intensità del segnale BT.

E per finire, dovrebbe anche avere un sensore di pioggia, nel senso che se piove deve poter tornare "a casa" per proteggersi (oltre ad essere problematico tagliare erba bagnata, che si accumulerebbe sotto al robot fino a bloccarlo).

Quindi, per riassumere basterebbe: * Sensore ad ultrasuoni per gli ostacoli * Sensore a filo per i confini * Algoritmo di taglio "pseudorandom"

Opzionali: * Bussola per tenere traccia della direzione di movimento * Posizionamento tramite Bluetooth * Sensore di pioggia

Per concludere ribadisco la domanda iniziale ovvero, se so che è fattibile lo faccio (fattibile in base a chi ha già avuto esperienza e sa come muoversi), se non è fattibile e non copre le necessità del progetto la vedo solo come una perdita di tempo.

Beh, però dipende. Se lo fai per divertirti ad imparare cose nuove e realizzare "qualcosa" di utile (anche se magari con qualche limitazione,almeno iniziale) allora non sarà mai una perdita di tempo e comunque sempre affrontando un problema alla volta, come ti ha detto anche maubarzi.

Se invece vuoi realizzare un "vero" tagliaerba efficiente al 100%, senza conoscere tu Arduino, la cosa potrebbe essere più complessa e quindi allo stato attuale dovresti prima studiare, e parecchio, e sperimentare, fare prototipi, provarli, eccetera, il che mi pare questa si, una "fatica sprecata". Oppure prendere un progetto esistente e seguirlo alla lettera (anche se in questo caso dubito che tu possa sia divertirti sia imparare realmente a progettare con Arduino).

giacomogaldino: Ma secondo te, se fosse così semplice/economico programmare un percorso “preciso”, perché quelli commerciali usano invece un moto casuale (pseudo browniano) per coprire l’intera superficie?

Se vedi, nei migliori prodotti commerciali, il GPS è usato solo come aiuto (la precisione è comunque, se va molto bene, del/dei metro/i), mentre l’uso principale e aiutare il recupero del prodotto se rubato.

Guglielmo