quindi con la capacità di:
In linea di massima in questi post seguiremo questo percorso:
Il primo argomento che affronteremo sarà la scelta della libreria di Machine Learning per guidare il robot e in via preliminare abbiamo pensato a queste librerie;
Per controllare le prestazioni di Tensor Flow Lite abbiamo seguito questo tutorial su Github senza però installare Coral USB Accelerator: qui il link per acquistare Coral USB su Amazon. Per installare Tiny ML su Raspberry abbiamo seguito questo articolo in italiano su emcelettronica. Infine come terza opzione abbiamo testato Keras seguendo questo tutorial su Teknotut. Tutte sono in grado di girare sulla piattaforma hardware che abbiamo deciso di provare, cioè un “Raspberry PI 400” con le seguenti caratteristiche:
How to install heat sinks on a Raspberry Pi 3 B+ ? https://t.co/jIn9Xg1ZmQ #raspberrypi pic.twitter.com/RWI4mXJQo3
— RaspberryTips (@TipsRaspberry) June 3, 2023
Raspberry Pi: Il Raspberry Pi è una scelta popolare per i piccoli robot perché è conveniente, piccolo e potente. È compatibile con una vasta gamma di sensori e attuatori e può eseguire una varietà di sistemi operativi, tra cui Linux che useremo nel nostro progetto.
Arduino: Arduino è un’altra scelta popolare per i piccoli robot. È un microcontrollore, il che significa che è meno potente di una CPU come il Raspberry Pi, ma è anche molto più piccolo ed economico. Arduino è compatibile con una vasta gamma di sensori e attuatori, e può eseguire una varietà di linguaggi di programmazione, tra cui C e C++.
Nvidia Jetson Nano: Nvidia Jetson Nano è una potente CPU progettata per applicazioni AI. È compatibile con una vasta gamma di sensori e attuatori e può eseguire Linux e Jetpack, la piattaforma di sviluppo AI di Nvidia.
Il nostro Rover dovrà regolare continuamente la velocità dei motori in base alle esigenze di sterzata. La architettura a 6 ruote che abbiano scelto ha bisogno di sterzare cambiando la velocità delle singole ruotei e deve farlo in maniera precisa con ritardi minimi, pena vedere il rover ondeggiare durante le manovre. Perchè ci serve un sistema PID?
Il termine proporzionale (P) è proporzionale all’errore corrente del processo, cioè alla differenza tra il valore desiderato e il valore attuale. Il termine integrale (I) tiene conto della storia dell’errore, integrando l’errore nel tempo. Infine, il termine derivativo (D) è proporzionale alla variazione dell’errore nel tempo.
Il controllo PID nel nostro rover dovrà regolare continuamente il processo in modo da minimizzare l’errore tra il valore desiderato e il valore effettivo.Il controllo PID è ampiamente utilizzato in molti settori, tra cui l’automazione industriale, il controllo di motori, il controllo della temperatura, il controllo del flusso e molto altro ancora.
con controllo PID per il rover, seguiremo questi passaggi:
E’ innegabile che le prestazioni siano un punto chiave nella scelta, perchè gli algoritmi di ML impongono la elaborazione di miliardi di singole operazione al secondo (pensiamo alla chiavette TPU come Google Coral o Orange PI). Tale carico di lavoro ci propone un serio dubbio da risolvere in fase di pianificazione: La nostra CPU dovrà elaborare in toto i dati (immagini e video ) o deve appogiarsi ad unita’ di calcolo esterno?
Nel nostro caso abbiamo deciso di scegliere la seconda strada e ricorrere alla unita di elaborazione esterna con Tensorfklow e quindi abbiamo optato per l’ecosistema Google Coral e Tensorflow.
In genere nella costuzione di robot mobili o di rover ci si orienta come prima scelta vero il Raspberry PI4 con 8GB di memoria. In alternativa si può usare una CPU della gamma Jetson Nvidia con simile capacità di memoria RAM ma con un coprocessore grafico molto più potente per sostenere il carico del riconoscimento delle immagini. Nel nostro Rover che sarà nella classe degli 8/10 Kg di peso al completo volevamo avere molta più liberta nella scelta della CPU perchè il consumo e il peso delle batterie sono meno importanti.
A suggerirci questa alternativa è stato questo video su YT con un Rover a 6 ruote e un laptop Intel letteralmente appoggiato sopra lo chassis. I vantaggi di una soluzione simile sono ovvi, primo fra tutti poter usare un PC ad alte prestazioni spendendo 100 euro su ebay o su Amazon (refurbished).
Gli svantaggi però secondo noi sono maggiori dei vantaggi, primo fra tutti il consumo di una CPU I3/5/7
Nella tabella sopra vediamo i consumi della gamma RPI a partire dal modello minore Zero fino al PI4B+ (il 400 è equivalente) in varie situazioni di utilizzo. Come possiamo notare anche sotto condizioni di forte carico l’assorbimento di corrente non supera gli 885mA. Quindi ammettendo un assorbimento di circa 1A a 5V staremo sempre comodamente sotto i 5W di consumo.
Per avere un termine di paragone un portatile Intel con un CPU i3 e disco SSD interno può consumare 4/10 volte tanto:
Il dato viene da un sito autorevole come energit.it che vi consigliamo di leggere per approfondire l’argomento.
Il controller ESP32 riesce a rilevare ostacoli negli spazi aperti usando una versione ridotta di un sistema di riconoscimento delle immagini, ma non può gestire altri compiti di ML o tantomeno far girare programmi in MicroPython a velocità accettabile. Durante le nostre prove condotte con Tiny ML siamo riusciti a riconoscere volti, animali e oggetti precisi senza ncecessità di extra RAM o di risorse di CPU aggiuntive, ma
Il controllo PID è un algoritmo di controllo di feedback che utilizza la regolazione proporzionale integrale e derivata per mantenere un valore di uscita vicino a un valore di riferimento desiderato. Nel caso di un sistema di guida per il rover, il valore di riferimento sarebbe la posizione desiderata del rover e il valore di uscita sarebbe la velocità e la direzione del rover.
Robotdazero.it - post - R.140.1.0.0