ROS – ROS2 – ROS industrial (Robot operating system)
Il Robot Operating System (ROS) è un insieme di librerie software e strumenti per la creazione di applicazioni robotiche.
Dai driver agli algoritmi all’avanguardia e con potenti strumenti di sviluppo, ROS Non è un semplice ambiente di simulazione, ma una complessa piattaforma open source, un “middleware” basato su un meccanismo di pubblicazione / sottoscrizione anonimo (server / client) che consente il passaggio di messaggi tra diversi processi ROS. che incorpora anche la possibilità operativa in real time introdotta da ROS Industial ed ulteriormente sviluppata con la nuova “suite” ROS2.
ROS Industrial è un progetto dedicato allo sviluppo di robotica basata su ROS e soluzioni di automazione per strumenti hardware e software rilevanti per il settore.
Questa iniziativa è nata come una collaborazione tra Southwest Research Institute, Yaskawa Motoman Robotics e Willow Garage (l’organizzazione che ha fondato ROS) nel 2012 e mira ad accelerare l’adozione di robot con comportamenti migliorati come la collaborazione umana, la manipolazione mobile e il movimento guidato dalla percezione ampliando l’orizzonte delle soluzioni robotiche industriali oltre a saldatura, dispensazione e movimentazione dei materiali.
Nonostante ROS2 sia ancora nella fase iniziale di sviluppo, fornisce un progetto promettente per future implementazioni industriali. Si stanno realizzando requisiti per il suo impiego in robot industriali in meccanismi di sicurezza ecc., Le prestazioni di programmazione in tempo reale e interoperabilità con ROS. motiverà migliaia di sviluppatori e ricercatori sia dell’industria che del mondo accademico a migliorare lo sviluppo di ROS2 per il campo delle automazioni a qualsiasi livello.
Aziende di robotica come ABB, Fanuc, Universal Robots, Robotiq, Omron, Staubli e Fanuc dispongono di controller ROS, pacchetti software e driver per i loro robot nel repository Github. Forniscono supporto ROS-I e soluzioni che consentono l’integrazione dei loro strumenti con altre piattaforme del settore, sfruttando l’ecosistema ROS.
Nel prossimo futuro, verranno rilasciati al pubblico altri prodotti software autonomi basati su ROS2.
I pacchetti ABB ROS-I e Fanuc ROS-I forniscono passaggi per configurare ABB ROS Server sui loro controller industriali, installare il ROS Server sul client ROS (solitamente un PC) e utilizzare l’ecosistema ROS con il loro software di simulazione personalizzato RobotStudio . Motoman fornisce soluzioni di simulazione della pianificazione del percorso e l’installazione del server ROS Motoman sui suoi controller FS, DX e FRC.
Come accennato in precedenza, ROS Industrial estende le capacità di ROS e conforma gli strumenti agli standard del settore. Il progetto definisce pacchetti standard di settore per interfacce utente grafiche (GUI), strumenti end-of-arm (EOAT), sensori, manipolatori e dispositivi di rete utilizzati nelle fabbriche.
ROS2 Consente alle industrie di sviluppare soluzioni a livello di attivitÃ, integrazione con strumenti di settore come PLC e switch e protocolli di comunicazione come CAN ed Ethercat.
Il livello ROS è in grado di interfacciare qualsiasi hardware esistente con ROS. ROS ha tre paradigmi di comunicazione di base:
- Sottoscrittore editore
- Servizi
- Agenti
Il software nativo di ogni dispositivo hardware può essere avvolto attorno al livello ROS per creare nodi ROS utilizzando gli standard industriali ROS.
Diversi pacchetti ROS Industrial di solito utilizzano l’API del software nativo per l’hardware e la integrano con l’ambiente ROS creando così un canale per interagire con loro attraverso l’ecosistema ROS.
Il cuore di qualsiasi sistema ROS 2 è il ROS graph.
Il grafico ROS si riferisce alla rete di nodi in un sistema ROS e alle loro connessioni di comunicazione.
Un nodo è un software specifico del grafico ROS, i nodi ROS utilizzano una libreria client ROS per comunicare con altri nodi.
I nodi possono pubblicare o ricecere degli argomenti (“Topics”) e possono anche fornire o utilizzare servizi e azioni. Ci sono parametri configurabili associati a un nodo che lo rende unico.
Le connessioni tra i nodi vengono stabilite tramite un processo di rilevamento distribuito.
I nodi possono trovarsi nello stesso processo, in processi diversi o su macchine diverse.
Le librerie client ROS consentono ai nodi scritti in diversi linguaggi di programmazione di comunicare.
Esiste una libreria client ROS (RCL) di base che implementa le funzionalità comuni necessarie per le API ROS di diversi linguaggi.
Vi sono librerie scritte in vari linguaggi ma principalmente le librerie client sono gestite dal team ROS 2:
- rclcpp = libreria client C ++
- rclpy = libreria client Python
ROS2 Supporta più sistemi robotici, aggiunge il supporto per sistemi multi-robot e migliora le prestazioni di rete della comunicazione tra multi-robot.
ROS2 non si rivolge solo al campo della ricerca scientifica, ma si preoccupa anche del passaggio dalla ricerca all’applicazione dei robot, che può consentire a più robot di portare direttamente i sistemi ROS2 sul mercato.
ROS2 non solo può funzionare su sistemi X86 e ARM esistenti, ma supporta anche microcontrollori incorporati come MCU (ARM-M4, core M7).
ROS2 supporta il “real time” e aggiunge anche il supporto per il controllo che può migliorare la tempestività del controllo e le prestazioni dell’intero robot.
ROS2 non solo funziona su sistemi Linux, ma aggiunge anche supporto per Windows, MacOS, RTOS e altri sistemi, offrendo agli sviluppatori più scelte.
Per la comunicazione tra nodi, ROS2 utilizza DDS, uno standard di comunicazione industriale di OMG, per il trasporto di pubblicazione-sottoscrizione.
Il vantaggio dell’utilizzo di DDS è che esistono specifiche concrete che terze parti possono esaminare, verificare e implementare con diversi gradi di interoperabilitÃ.
QoS (Quality-of-Service) di DDS offre impostazioni di parametri flessibili per controllare l’affidabilità della comunicazione, inoltre, ROS2 può lavorare con diversi fornitori di DDS come FastRTPS, RTI-Connext, OpenSplice e altri.
La portabilità tra i fornitori di DDS fornisce agli utenti alternative per selezionare i requisiti specificati, nonché contro i cambiamenti nei fornitori di DDS.
Se il modello di comunicazione di ROS1 include principalmente meccanismi di comunicazione come argomenti e servizi, il modello di comunicazione di ROS2 è leggermente più complicato in quanto sono stati aggiunti molti meccanismi di comunicazione DDS.
Il modello di comunicazione ROS2 basato su DDS contiene i seguenti concetti chiave:
Partecipante: in DDS, ogni editore o abbonato è chiamato partecipante. In corrispondenza di un utente che utilizza DDS, è possibile utilizzare un tipo di dati definito per leggere e scrivere lo spazio dati globale.
Editore: l’esecutore della pubblicazione di dati supporta la pubblicazione di più tipi di dati e può essere associato a più autori di dati (DataWriter) per pubblicare messaggi di uno o più argomenti.
Sottoscrittore: l’esecutore della sottoscrizione dati supporta sottoscrizioni di più tipi di dati. Può essere associato a più lettori di dati e iscriversi ai messaggi di uno o più argomenti.
DataWriter: l’applicazione di livello superiore aggiorna l’oggetto dei dati all’editore. Ogni scrittore di dati corrisponde a un argomento specifico, simile a un editore di messaggi in ROS1.
DataReader: l’applicazione di livello superiore legge i dati dagli abbonati. Ogni lettore di dati corrisponde a un argomento specifico, simile a un sottoscrittore di messaggi in ROS1.
Argomento (“Topic”): simile al concetto in ROS 1, gli argomenti devono definire un nome e una struttura dati, ma ogni argomento in ROS2 è un’istanza che può memorizzare i dati storici dei messaggi in quell’argomento.
Qualità del servizio: abbreviato come Politica QoS, questo è un concetto nuovo e molto importante aggiunto in ROS2. Controlla tutti gli aspetti del meccanismo di comunicazione con il livello sottostante, principalmente dagli aspetti di limite di tempo, affidabilitÃ, continuità e cronologia per soddisfare i requisiti dei dati degli utenti per diversi scenari.
La architettura di ROS 2 (ros industrial) si può esprimere con il seguente grafo:
Con la versione ROS – Industrial e ROS2 quindi si espande sempre di più il bacino d’utenza delle aziende che potrebbero adottare questa piattaforma software per lo sviluppo di nuove applicazioni basate sull’utilizzo delle nuove tecnologie emergenti anche in ambito industriale, quali quelle che adottano la “Computer Vision” (openCV) anche in abbinata alle implementazini di “machine learnig”, per quanto riguarda applicazioni del sistema SLAM ( Simultaneous localization and mapping).
Sono molte quindi le potenzialità che offre questa piattaforma a coloro i quali intendano fare un cambiamento di paradigma nello studio della robotica industriale, poiché la richiesta di mercato in questo ambito risulta ovviamente essere in forte espansione, come evidenziato dalla seguente immagine che prende in considerazione solo una minia parte dei modelli di robot che attualmente richiedono personale altamente qualificato negli studi robotici:
Per coloro che vogliono approcciarsi allo studio di Robot Operating System anche a livello di principiante, il mio consiglio è quello di partire con delle buone conoscenze di C++ e Python che fondalmentalmente sono i linguaggi principali di ROS(2) e tanto per dare una primissima infarinatura, utilizzando il più classico dei tutorial, “turtlesim”, faccio notare che in questo ambiente viene utilizzata molta manualità per l’inserimento di codice da riga di comando (da qui il cambio di paradigma richiesto per gli aspiranti professionisti).
In questo esempio, che prevede una installazione di ROS2 completa di dipendenze, come da istruzioni ufficiali del sito “https://index.ros.org/doc/ros2/” si può notare che per avere un minimo di potenzialità operativa (nel far muovere la tartarughina in un ambiente grafico c’è bisogno dell’utilizzo di:
un terminale per avere un help in linea sull’utilizzo dei comandi ROS:
Un terminale per l’help in linea per l’utilizzo del comando “run”:
Un terminale per l’help in linea per visualizzare l’elenco dei nodi del pacchetto eseguibile:
Un terminale per il “lancio” del pacchetto eseguibile, che produrrà in out la finestra grafica dell’ambiente virtuale.
Un terminale per il “lancio” del nodo di comando dell’applicazione “azione”:
In fine un terminale per il lancio del “topic” desiderato:
Tutte queste operazioni produrranno l’effetto di far disegnare un quadrato alla nostra robot-tartaruga in un ambiente protetto.
Ambienti di simulazione per applicazioni industriali evidentemente utilizzano dei plugin di ROS. Appositamente sviluppati ad esempio Il plugin “gazebo_ros_api_plugin”, che si trova con il pacchetto gazebo_ros, Questo software inizializza un nodo ROS chiamato “gazebo” che Integra lo scheduler di callback ROS (passaggio di messaggi) con lo scheduler interno di Gazebo per fornire le interfacce ROS utili alla gestione di ambienti virtuali.
Questa API ROS consente a un utente di manipolare le proprietà dell’ambiente di simulazione su ROS, nonché di generare e analizzare lo stato dei modelli nell’ambiente, come intuibile dalla seguente figura:
Per concludere, ROS (ROS2), a mio avviso è la base sulla quale coloro che intendono approcciarsi al mondo della robotica, in un’ottica professionale ad alto livello (non da operatori), dovrebbero far riferimento.
Questo articolo è stato tratto dal capitolo dedicato al Robot Operating System (ROS) del libro sulla robotica indsriale in edizione a cura G-Tronic Robotics.