Robot Operating System: il framework per eccellenza per applicazioni robotiche

Integrare applicazioni robotiche può essere complesso, soprattutto quando è difficile trovare del codice valido. Spesso gli sviluppatori cercano software da utilizzare per i loro progetti e non trovano nulla di utilizzabile, quindi ne creano uno proprio. Il tempo impiegato per questa ricerca può frenare gli sviluppatori e ostacolare la diffusione dei robot a livello internazionale.

Il Robot Operating System (ROS) risolve questo problema. Il Robot Operating System (ROS) non è un vero e proprio sistema operativo, ma un framework e un insieme di strumenti che forniscono le funzionalità di un sistema operativo su un cluster di computer eterogeneo. La sua utilità non è limitata ai robot, ma la maggior parte degli strumenti forniti si concentra sulla gestione di hardware periferico.

ROS punta a una piattaforma standardizzata, una piattaforma in cui professionisti e hobbisti possano collaborare e condividere il codice per lo sviluppo del software. Una piattaforma in cui professionisti e hobbisti possano collaborare e condividere il codice per lo sviluppo del software. In questo modo, quando si lavora a un nuovo progetto, gli ingegneri non devono reimparare a usare la piattaforma. ROS è suddiviso in più di 2000 pacchetti, ognuno dei quali fornisce funzionalità specifiche. Il numero di strumenti collegati al framework è probabilmente la sua più grande forza.

Continuate a leggere per scoprire cos’è questo sistema operativo robotico e perché abbiamo scelto ROS 2 per sviluppare il nuovo AMR Jobot. Approfondiremo altre informazioni da conoscere su ROS, come il linguaggio utilizzato per ROS e un elenco di aziende che utilizzano questo sistema operativo.

Contenuti

Che cos’è ROS?

ROS (Robot Operating System) è un kit di sviluppo software open source per applicazioni robotiche. ROS offre agli sviluppatori industriali una piattaforma software standard che li porta dalla ricerca e dalla prototipazione fino all’implementazione e alla produzione. ROS mette in contatto professionisti e amatori per condividere e riutilizzare codice per applicazioni robotiche; in altre parole, ROS sta promuovendo il futuro della robotica nell’industria, nelle imprese e tra gli sviluppatori.

Questo sistema è stato introdotto nel 2007 e funge da struttura flessibile per la scrittura di software per robot. È una raccolta di librerie e strumenti. Hobbisti, ricercatori e ingegneri possono contribuire a questa piattaforma open-source attraverso varie community. Grazie al facile accesso al codice, i robot diventano accessibili a un numero maggiore di persone in tutto il mondo.

Contrariamente a quanto si evince dall’acronimo, non si tratta di un sistema operativo: ROS opera su Linux Debian e Ubuntu. In verità, ROS funge da middleware e fornisce una serie di librerie plug-and-play per accelerare lo sviluppo dei robot.

Il middleware si occupa della comunicazione tra i diversi programmi.

Utilizzando ROS, gli ingegneri avranno più facilità a dividere le loro basi di codice in pacchetti che contengono programmi noti come nodi.

Il sistema operativo dei robot utilizza i seguenti strumenti per consentire ai programmi di comunicare tra loro:

  • Azioni: consente agli utenti di dare indicazioni non sensibili al tempo per monitorare lo stato del server.
  • Topic: un mezzo per trasmettere informazioni tra i nodi. Altri nodi all’interno dei pacchetti possono legarsi a questi nodi per ricevere i dati trasmessi.
  • Servizi: creano un canale sincrono tra i nodi. Questo metodo consente agli sviluppatori di richiedere azioni specifiche ai robot e di regolare le impostazioni.

 

Che cos’è ROS 2?

ROS 2 è una riprogettazione completa del framework, che affronta le carenze della prima generazione e lo adegua efficacemente alle esigenze e agli standard del settore. ROS 2 riesce dove ROS non è riuscito. È stato rinnovato rispetto al framework esistente del Robot Operating System e ottimizzato per l’uso industriale.

ROS 2 basa la sua comunicazione sul Data Distribution Service (DDS). Elimina la dipendenza da un nodo master della sua controparte precedente. Questo standard, combinato con l’API intra-processo di ROS 2, offre agli utenti un meccanismo di trasmissione decisamente migliorato.

In questo modo ROS 2 affronta i problemi di prestazioni di ROS 1 e si pone i seguenti obiettivi:

  • Multipiattaforma: al momento, ROS 1 si limitava a Ubuntu 18 o Linux Debian. Gli utenti ora possono usufruire di ROS su macOS, Windows, Real-Time Operating System (RTOS) e altri sistemi operativi.
  • Controllo in tempo reale: ROS 1 manca di una struttura in tempo reale. ROS 2 compensa questa debolezza migliorando le prestazioni dei robot e la tempestività del controllo.
  • Gestione di sistemi robotici multipli: ROS 2 migliorerà le prestazioni della rete e il supporto per i sistemi con robot multipli.
  • Microcontrollori: il nuovo sistema operativo supporta unità di microcontrollo (MCU) integrate.

 

In che linguaggio è scritto ROS?

Il sistema operativo per robot utilizza due linguaggi: Python e C++. Tuttavia, gli sviluppatori possono utilizzare ROS in qualsiasi linguaggio moderno. Quando usano ROS, gli sviluppatori scrivono in Python nella libreria rospy e in C++ in roscpp.

Gli utenti possono installare rosbridge per supportare qualsiasi linguaggio che parli JSON. Inoltre, gli appassionati possono cercare tra le librerie disponibili per vedere le eventuali librerie che supportano ROS.

 

Perché usare ROS?

ROS fornisce funzionalità per astrarre l’hardware, i driver dei dispositivi, la comunicazione tra processi su più macchine, gli strumenti per il test e la visualizzazione e molto altro ancora.

La caratteristica principale di ROS è il modo in cui il software viene eseguito e il modo in cui comunica, che permette di progettare software complessi anche senza sapere come funziona l’hardware. ROS fornisce un modo per collegare una rete di processi (nodi) con un hub centrale. I nodi possono essere eseguiti su più dispositivi e si collegano all’hub in vari modi.

I modi principali per creare la rete sono la creazione di servizi che possono essere richiesti o la definizione di connessioni publisher/subscriber con altri nodi. Entrambi i metodi comunicano tramite dei tipi di messaggi specifici. Alcuni tipi sono forniti dai pacchetti principali, ma è possibile definire i tipi di messaggio anche nei singoli pacchetti.

  • ROS è stato costruito tenendo conto della collaborazione trasversale. Il codice e le conoscenze di base possono essere applicati a tutte le piattaforme robotiche (bracci antropomorfi, droni, robot collaborativi mobili, ecc.). Un corollario di quanto detto è che ROS è un sistema facilmente integrabile con altri software di robotica.
  • Può essere integrato nel vostro sistema. La maggior parte dei pacchetti ROS 1 è sotto licenza BSD, mentre i pacchetti ROS 2 sono sotto licenza Apache. Questa licenza consente la modifica del codice per scopi commerciali senza dover rilasciare il codice con una licenza open-source.
  • I robot ROS possono parlare qualsiasi linguaggio. È possibile comunicare facilmente tra nodi Python e C++, ottenere librerie che consentono di utilizzare la maggior parte degli altri linguaggi o installare rosbridge e utilizzare qualsiasi linguaggio in grado di parlare JSON.
  • ROS è qui per restare: ROS e la comunità che lo circonda sono cresciuti dal 2007 grazie ai contributi di una comunità incredibilmente intelligente e attiva. Con la diffusione di ROS e il continuo sviluppo di ROS2, i robot in ROS saranno il futuro.
  • C’è un pacchetto per tutto, o quasi. Che si voglia calcolare la traiettoria, eseguire algoritmi SLAM o implementare un controllo remoto, c’è probabilmente un pacchetto ROS adatto.
  • Gemello digitale: ROS consente agli sviluppatori di simulare facilmente il proprio robot in qualsiasi ambiente, prima di implementarlo nel mondo reale. Strumenti come Gazebo consentono persino di creare simulazioni con robot che non si possiedono.
  • È open-source e cresce continuamente. ROS ha collaboratori in tutto il mondo che lo utilizzano per innumerevoli scopi diversi. Ogni contributo alimenta il continuo sviluppo di ROS.

Il modo in cui il sistema è realizzato ci permette di lavorare al meglio sull’Autonomous Mobile Robot Jobot, integrandolo, personalizzandolo e  modificandolo; in altre parole è la base che permette a Jobot di crescere in un miglioramento continuo. Con ROS 2 si può, ad esempio,

  • Sostituire al volo componenti con interfacce simili, eliminando la necessità di sospendere il sistema per le varie modifiche.
  • Multiplexare le uscite di più componenti in un input per un altro componente, consentendo la risoluzione parallela di vari problemi.
  • Collegare componenti realizzati in vari linguaggi di programmazione semplicemente implementando i connettori appropriati al sistema di messaggistica, rendendo più semplice lo sviluppo del software collegando moduli esistenti provenienti da vari sviluppatori.
  • Creare nodi su una rete di dispositivi, senza preoccuparsi di dove viene eseguito il codice e di implementare sistemi di comunicazione interprocesso (IPC) e di chiamata di procedura remota (RPC).
  • Connettersi direttamente a feed su richiesta da un hardware remoto senza scrivere codice aggiuntivo, utilizzando i due punti precedenti.

Come stiamo vedendo, rispetto ad altri approcci, ci sono diversi vantaggi chiave. ROS supporta più piattaforme e consente connessioni tra processi su più dispositivi tramite connessioni peer-to-peer gestite dietro le quinte.

ROS è fatto dalla community, pensato per la community. Dopo diversi anni, questo ha portato a una grande quantità di pacchetti riutilizzabili e semplici da modificare e integrare, grazie all’architettura del sistema.

Approcci alternativi come MRPT, CARMEN, LCM, Player, Microsoft RDS e altri forniscono alcune di queste caratteristiche, ma non tutte. Nella maggior parte dei casi, i punti deboli del progetto sono le limitazioni relative ai linguaggi, la comunicazione non ottimizzata tra i processi o la mancanza di supporto per vari dispositivi, che è probabilmente il problema più difficile da risolvere.