Cos’è il Robot Operating System (ROS) e come può essere significativo nell’industria 4.0

Il Robot Operating System (ROS) è un framework open-source progettato per lo sviluppo di applicazioni per robot. Comprende una ricca raccolta di tools, librerie e pezzi di codice/algoritmi che mirano a semplificare e rendere più rapido lo sviluppo di applicazioni per la generazione di comportamenti robotici complessi. ROS viene spesso definito anche un sistema operativo per applicazioni robotiche proprio per le sue proprietà che verranno descritte di seguito.

Nella robotica, se si guarda dal punto di vista del robot, molti problemi ed azioni che possono sembrare banali per gli esseri umani includono molte variabili che dipendono soprattutto dall’ambiente circostante. ROS è stato costruito da zero per incoraggiare lo sviluppo di software di robotica collaborativa e rendere più rapida l’implementazione di funzioni. Per esempio, uno sviluppatore potrebbe aver sviluppato un algoritmo per la navigazione indoor sfruttando un sensore Lidar, la stessa implementazione software potrà essere utilizzabile da chiunque per la propria applicazione robotica. Sfruttando queste collaborazioni, aggiungere una funzione complessa al proprio robot potrebbe risultare veloce e poco dispendiosa da implementare. ROS include molte funzionalità progettate specificamente per semplificare questo tipo di collaborazione su larga scala.

Un po’ di storia

Prima della creazione del Robot Operating System c’era comunque un attivo e continuo sviluppo nel campo della robotica a partire già dagli anni ‘70 ma non esistevano piattaforme standard o una community sullo sviluppo di applicazioni robotiche. Gli sviluppatori erano costretti a produrre il proprio software per il proprio robot che, per la maggior parte dei casi, non poteva essere riutilizzato per altri robot. Pertanto, ogni sviluppatore era costretto a scrivere il proprio software partendo da zero per ogni robot diverso, il che richiedeva un grande investimento in termini di tempo. Inoltre, la maggior parte del codice sviluppato non veniva mantenuto attivamente rendendolo obsoleto in breve tempo. Prima di ROS la prototipazione robotica era piuttosto complessa e richiedeva molte risorse.

ROS con il passar degli anni è diventato un progetto molto grande e complesso supportato e portato avanti da molti ricercatori, collaboratori ed Università di tutto il mondo. ROS è nato proprio dalla necessità di avere un framework completamente aperto e libero per tutti coloro che vogliono sviluppare applicazioni nel campo della robotica sfruttando pacchetti software e strumenti già sviluppati e collaudati da altri utenti. ROS è nato in seguito ad alcuni prototipi interni sviluppati per diversi progetti, come il programma STanford AI Robot (STAIR) e il programma Personal Robots (PR), presso la Stanford University a metà del 2000 che consistevano in alcuni software per robot molto dinamici e flessibili coinvolgendo anche un’intelligenza artificiale (AI). Nel 2007, il laboratorio di ricerca di robotica e incubatore tecnologico destinato allo sviluppo di hardware e software open-source per applicazioni robotiche, Willow Garage Inc., fornì risorse significative per estendere ulteriormente il concetto di software dinamico e flessibile creando un insieme di implementazioni ben collaudate chiamandole con il nome ROS (Robot Operating System). Successivamente, innumerevoli ricercatori da tutto il mondo contribuirono a potenziare ulteriormente il framework ROS fornendo pacchetti software fondamentali. Tutto il framework ROS è mantenuto utilizzando una licenza open-source BSD che ne consente l’uso commerciale e non commerciale.

Architettura e filosofia di sviluppo

Ogni framework impone la propria filosofia di sviluppo ai vari collaboratori in modo diretto o indiretto, attraverso il loro idioma e pratiche comuni. In generale, con ROS si segue la stessa filosofia di Unix. Questo tende a far sembrare ROS facile da utilizzare per gli provenienti da piattaforma Unix. Alcuni aspetti filosofici di ROS paragonabili con il mondo Unix sono: peer-to-peer, tools-based, multilingua e open-source.

La filosofia peer-to-peer consiste in numerose piccole e semplici applicazioni per computer che possono interagire tra di loro scambiandosi continuamente dei messaggi. Questi messaggi viaggiano direttamente da un programma all’altro senza l’utilizzo di un servizio di routing centrale.

Per quanto riguarda la filosofia tools-based, come dimostrato dall’architettura di Unix, applicazioni complesse possono essere create combinando tra loro diverse piccole applicazioni generiche.

Per multilingua si riferisce ai diversi linguaggi di programmazione compatibili con ROS. Molte attività sono più facile da eseguire e sviluppare in linguaggi di Scripting ad alta produttività come Python o il Ruby. Tuttavia, per applicazioni che richiedono specifiche prestazioni è sempre preferibile il linguaggio C/C++. Attualmente esistono librerie client ROS compatibile con la maggior parte dei linguaggi popolari oggigiorno.

ROS inizialmente nacque solo per sistemi operativi Linux basati su architettura i386 e amd64, successivamente fu reso compatibile anche per Windows OS e Mac OS e soprattutto per diverse architetture ARM come armhf e arm64 principalmente utilizzate nei sistemi Linux Embedded come il caso del Raspberry Pi.

In parole semplice, ROS permette la comunicazione tra due applicazioni o processi. Per esempio, tramite ROS è possibile far dialogare un’applicazione A con una B.
Un robot può disporre di molti sensori e attuatori oltre ad un’unità di calcolo. Il software del robot potrebbe essere composto da un solo programma che riesce ad interfacciarsi con tutti gli attuatori e i sensori montati. Tuttavia, il problema è che il software potrebbe diventare molto complesso con l’aumentare dei sensori e degli attuatori, diventando poco scalabile e difficile da mantenere. Il metodo migliore è quello di scrivere applicazioni indipendenti per la gestione dei sensori e per il controllo degli attuatori.

In figura vengono mostrati due programmi contrassegnati come Node 1 e Node 2. Quando vengono avviati, ogni programma entrerà in comunicazione con un programma Master chiamato ROS Master. Ogni nodo comunicherà le proprie informazioni, includendo anche le tipologie di dati che invierà o riceverà, al ROS Master. I nodi che trasmettono dati vengono chiamati Published Nodes, mentre quelli che ricevono dati vengono chiamati Subscriber Nodes. Il ROS Master conosce tutte le informazioni dei publisher e dei subscriber in esecuzione sul computer. Se per esempio il Node 1 invia dei dati particolari di un certo tipo e gli stessi dati sono richiesti dal Node 2, allora il ROS Master sarà in grado di mettere in collegamento i due nodi in modo da avviare un dialogo. I nodi ROS possono scambiarsi diverse tipologie di dati che includono anche tipi primitivi come integer, float e string. I diversi tipi di dati da poter inviare sono chiamati ROS Messages. Con i messaggi ROS è possibile inviare un singolo tipo di dato oppure insiemi di dati formati da diversi tipi. I messaggi vengono trasmessi tramite dei percorsi (path) chiamati ROS Topics. Quando un nodo pubblica su un topic, viene inviato un ROS Topic con all’interno un certo tipo di messaggio.

ROS nell’industria 4.0

Ormai già da decine di anni i robot vengono utilizzati nelle industrie di ogni settore per effettuare operazioni come la saldatura, la verniciatura, la movimentazione ed il trasporto di materiali. Ma questi tipi di operazioni fanno parte ormai dell’industria 3.0 ovvero il passaggio all’automazione industriale. Nell’industria 4.0 entra in gioco l’esigenza di rendere i sistemi robotici più intelligenti e completamente autonomi (Intelligent Autonomous System). Ovvero rendere i robot capaci di vedere e riconoscere l’ambiente circostante in modo da riuscire a muoversi ed a cooperare con altri sistemi robotici o con l’uomo.

Come per ogni settore, il prodotto è frutto dell’esigenza del mercato ed il livello tecnologico nel settore industriale negli anni tenderà sempre a crescere, quasi in modo esponenziale. Molte grandi aziende produttrici di robot utilizzano ancora linguaggi di programmazione per robot e software proprietari che possono costituire un ostacolo allo sviluppo di nuove applicazioni intelligenti perché molto complesse e costose da sviluppare. Dunque, i produttori di robot, per tenere il passo evolutivo e accelerare i processi di sviluppo hanno la possibilità di utilizzare diversi framework open-source pensati per robotica, come appunto ROS che con una community in continua crescita e un catalogo molto ampio di applicazioni già collaudate e tools potrebbe essere uno strumento essenziale per favorire lo sviluppo di nuove soluzioni intelligenti nella robotica moderna.

Redazione Fare Elettronica