Perché non ci sono abbastanza sviluppatori per la robotica?
In generale, agli sviluppatori software non piace avere a che fare con l’hardware. Diremo di più: in realtà è molto probabile che conosciate o che siate voi stessi degli sviluppatori SW nell’ambito IT/OT e che non abbiate mai pensato di entrare nel mondo della robotica.
Vediamo perché, e come le cose stanno cambiando.
Robotisti che programmano robot
Probabilmente pensate che per programmare i robot sia necessario conoscere l’elettronica e forse anche la meccanica. Probabilmente pensate che l’hardware e il software siano troppo accoppiati nei robot e che non si possa toccare una cosa senza toccare l’altra. Questo significa interagire molto con l’hardware e l’interazione con l’hardware è qualcosa che molti sviluppatori di software non amano – dopo tutto, hanno deciso di diventare sviluppatori di software, non di hardware.
Per questo motivo, la programmazione dei robot è stata affidata ai robotisti, che sono le figure che costruiscono i robot. Forse alcuni di loro non sono direttamente coinvolti nella creazione della macchina, ma di sicuro non hanno problemi a intervenire sull’hardware e a cercare di risolvere alcuni problemi legati all’hardware per far funzionare il loro programma. Ma ammettiamolo, la maggior parte dei robotisti è più brava a progettare che a programmare. Ecco perché la robotica potrebbe trarre grandi benefici dall’arrivo di molti programmatori esperti. La buona notizia è che, grazie a ROS, l’ingresso di sviluppatori nel settore è più possibile che mai.
Cos’è ROS?
ROS è l’acronimo di Robot Operating System. Anche se è scritto così, ROS non è un vero e proprio sistema operativo, poiché va ad appoggiarsi a Linux Ubuntu. ROS è un framework che permette di astrarre l’hardware dal software. Ciò significa che è possibile pensare in termini software per tutto l’hardware del robot. È una buona notizia per i tecnici, perché significa che è possibile creare programmi per robot senza doversi occupare dell’hardware.
Perché ROS?
Una storia piuttosto comune nello sviluppo della robotica è la seguente: un giorno, un giovane ingegnere inizia un nuovo progetto di robotica. Inizia a pianificare e a lavorare sul progetto. Ben presto scopre che non è così semplice. La robotica è difficile da imparare e ci vuole tempo per sviluppare un buon software per un robot. Inizia quindi a lavorare su come comunicare tra tutti i programmi, su come implementare una simulazione 3D del robot e così via.
Il progetto si conclude. Non è stato fatto alcun progresso reale e lo sviluppatore inizia a perdere fiducia. Ha passato tutto il suo tempo a cercare di scrivere un framework robotico, ma ha lavorato poco sul progetto vero e proprio. Presto il progetto viene abbandonato, o forse riesce a finire qualcosa con un po’ di codice modificato.
Qualche settimana dopo, un altro ragazzo inizia un nuovo progetto di robotica. Pensa: “e se trovassi un framework che posso usare direttamente?” Trova il primo codice su Internet, ma il codice non sembra davvero riutilizzabile per la sua applicazione. Quindi, inizia a scrivere tutto da zero.
E così via. Molte aziende e persone che lavorano nello sviluppo di software per robot non sviluppano applicazioni robotiche. Sviluppano framework robotici che finiscono per essere non riutilizzabili, non supportati, non conosciuti e rapidamente dimenticati. Questa situazione si verifica spesso per chi sta svolgendo ricerca, in genere con un orizzonte temporale di 2-3 anni per progetto.
Questo è uno dei principali fattori che rallentano la Ricerca e lo Sviluppo nel campo della robotica e ROS sta cercando di risolvere questo problema.
Il principale obiettivo di ROS
ROS consente di smettere di reinventare la ruota. Come abbiamo appena visto, reinventare la ruota è uno dei principali fattori che uccidono le nuove applicazioni innovative.
L’obiettivo di ROS è quello di fornire uno standard per lo sviluppo di software robotico, utilizzabile su qualsiasi robot.
Che si tratti di programmare un robot mobile a guida autonoma, un braccio robotico, un drone, una barca, un distributore automatico, beh… si può usare il Robot Operating System.
E ogni volta che si avvia una nuova applicazione, diventa sempre più facile. Non è necessario reimparare a usare ROS. Sono finiti i tempi in cui ogni nuova applicazione robotica veniva sviluppata da zero, con una base di codice diversa ogni volta.
Questo standard consente di concentrarsi sulle caratteristiche principali dell’applicazione, utilizzando una base esistente, invece di cercare di fare tutto da zero.
Robot Operating System, nonostante il nome, non è un sistema operativo. ROS è piuttosto un middleware, qualcosa di simile a un “framework” di basso livello basato su un sistema operativo esistente. Con ROS, è possibile separare facilmente la propria base di codice in pacchetti contenenti piccoli programmi, chiamati nodi. Nell’ambiente ROS è possibile anche creare alcune impostazioni globali, denominate parametri, in modo che più nodi possano accedere allo stesso insieme di impostazioni da qualsiasi punto dell’applicazione robotica, e si può lanciare l’intera applicazione con un solo file XML, chiamato file di lancio.
Per la maggior parte dei blocchi di sviluppo comuni nella robotica, è possibile trovare un pacchetto o un nodo ROS open source. Questa è la magia del software open source. Quando qualcuno sviluppa un buon pacchetto, può pubblicarlo e condividerlo con la community. E poi, altre persone possono usarlo e continuare a migliorarlo, creando un circolo virtuoso.
Cosa sono le API ROS per i robot?
Grazie al Robot Operating System, ROS, è possibile astrarre completamente l’hardware dal software, quindi è possibile programmare un robot semplicemente conoscendo le API ROS. Utilizzando le API ROS, si può dimenticare l’hardware e concentrarsi solo sul software che fa fare al robot ciò che si desidera.
Le API ROS sono l’elenco degli argomenti, dei servizi, dei server di azione e dei messaggi ROS che un determinato robot mette a disposizione per dare accesso al suo hardware, cioè ai sensori e agli attuatori. In parole povere, nel linguaggio degli sviluppatori, gli argomenti/servizi/messaggi sono come le funzioni software che si possono chiamare in un robot per ottenere dati dai sensori o per fargli compiere un’azione. Include anche i parametri che si possono trasmettere a tali funzioni. Se, a differenza di Jobot (che è un robot ROS 2 nativo), il robot con cui volete lavorare non esegue ROS, potete comunque farlo funzionare con ROS modificandolo. “ROSificare” significa adattare il robot per farlo funzionare con ROS. Per ROSificare un robot di solito è necessario del tempo e avere accesso all’hardware, nonché imparare a comunicare con l’elettronica che fornisce i dati dei sensori o che accede ai motori del robot.
ROS per i robot di servizio
ROS sta diventando lo standard nella programmazione robotica, almeno nel settore dei robot di servizio. Inizialmente ROS è nato nelle università, ma si è rapidamente diffuso nel mondo delle imprese. Ogni giorno, sempre più aziende e startup basano le loro attività su ROS. Prima di ROS, ogni robot doveva essere programmato utilizzando le API del produttore. Ciò significa che se si cambiava robot, si doveva ricominciare a scrivere l’intero software, oltre a dover imparare le nuove API. Inoltre, bisognava sapere molto su come interagire con l’elettronica del robot per capire come si comportava il programma. La situazione era simile a quella dei computer degli anni ’80, quando ogni computer aveva il proprio sistema operativo e bisognava ricreare lo stesso programma per ogni tipo di computer. ROS sta ai robot come Windows sta ai PC o Android ai telefoni. Avendo un robot ROSificato, cioè un robot che funziona con ROS, è possibile creare programmi che possono essere condivisi tra diversi robot. Se il robot (come Jobot) è aperto alle personalizzazioni e contiene molti sensori e attuatori diversi, ROS consente di creare un sistema distribuito tra tutti i componenti, invece di avere un unico grande monolite di codice che sarà difficile da mantenere e scalare.