Nuova sezione libri disponibile!

Il fondamento della piattaforma di Cloud Robotics: Robotics Operating System

Ludovico Russo

lettura in 3 minuti

La base tecnologica su cui si basa la piattaforma di cloud robotics è ROS (Robotic Operating System). ROS è un framework software open source che permette lo sviluppo e la programmazione di robot. Fornisce le stesse funzioni di un sistema operativo come: astrazione dell'hardware, controllo dei dispositivi tramite driver, comunicazione tra processi, gestione delle applicazioni e altre funzioni di uso comune. Si presta particolarmente bene alle nostre esigenze legate all'internet delle cose poichè è un sistema distribuito, il che significa che diversi programmi sono distribuiti su robot differenti e comunicano tutti tramite la piattaforma.

Inoltre è particolarmente interessante perchè è utilizzato da tutti i principali sviluppatori software al mondo (sia accademici che industriali) come ad esempio Google, Stanford, ETH, MIT ecc.. Tant'è che è diventato lo standard de fact0. Di conseguenza ha un enorme community molto competente pronta a risolvere problemi e bachi ad ogni momento e lo sviluppo di codice open source rende la comunità molto attiva.

Iniziamo a vedere come funziona!

Un’applicazione ROS è una rete di processi che scambiano dati in una rete di comunicazione composta da macchine diverse (gli oggetti dell'Internet dell cose o i robot).

  • Nodo: un singolo processo (programma in esecuzione) all’interno della rete ROS
  • Messaggio: struttura dati con cui usata per lo scambio di informazioni. Un messaggio può essere di diversi formati sia standard che custom. Ad esempio un messaggio che contiene un semplice intero sarà fatto così { int32 x }
  • Topic: canale all’interno del quale due o più nodi si scambiano messaggi. Immaginate un topic come un canale di comunicazione dove i messaggi vengono trasmessi. Ogni topic usa il carattere slash prima del nome del topic (/nome_del_topic) ad esempio /chatter il topic dove due nodi si scambiano un semplice messaggio {String s}. La caratteristica importante e la potenzialità dei topic è che qualunque nodo può ascoltare (subscribe) o inviare messaggi (publish) sullo stesso topic in modo asincrono.

Nell'immagine sopra un esempio di comunicazione tra nodi attraverso i diversi topic. I nodi sono le figure ovali e i topic le frecce. Rivediamo ora meglio i vari attori in piattaforma!

Effettuate l'accesso alla piattaforma

Andate sul sito di Hotblack Robotics (http://hotblackrobotics.github.io/) ed entrate nella piattaforma http://hotblackrobotics.github.io/login?next=%2Fcloud%2F. Inserite le vostre credenziali e siete in cloud!

La parte relativa la spiegazione di ROS la trovate nel menù in alto a sinistra sotto la voce "ROS".

Nodi

Un nodo è un processo (un programma in esecuzione) all’interno della rete ROS che esegue calcoli.

  • Ogni nodo è identificato da un nome unico nella rete
  • I nodi si scambiano messaggi per interagire tra loro tramite i topic
  • Ad ogni nodo è associato un compito. Due categorie
    • Driver (controlla un sensore o attuatore
    • Elaborazione (esegue calcoli)

In piattaforma trovate sempre sotto la voce "ROS" (http://hotblackrobotics.github.io/cloud/webgui/console) sotto la voce "Nodes List" la lista dei nodi attivi.

Topic

I topic sono i canali attraverso i quali i nodi comunicano nella rete.

  • Ogni topic è identificato da un nome unico
  • Un nodo che invia dati su un topic è detto publisher
  • Un nodo che riceve dati su un topic è detto subscriber

Sotto alla sezione "Nodes List" trovate la lista dei topic ("Topics List").

I messaggi

I messaggi sono i tipi di dati che vengono inviati attraverso il topic

  • Informano i nodi su come interpretare i bites scambiati nei topic
  • Ad ogni topic è associato un messaggio specifico
  • Possono essere tipi semplici (int, float, bool) o strutture dati

Namespace

Per distinguere nodi e topic con lo stesso nome si usano i namespace.

  • Prefisso da applicare ai topic e nodi
  • Definiscono una sottorete della rete ROS
  • Utili per distinguere lo stesso nodo/topic riferito a macchine diverse ma con la stessa funzione

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di più sulla mia Privacy Policy.

Ti potrebbe anche interessare

Non avete un robot? C'è il robot in cloud accessibile da remoto tramite il vostro PC o da cellulare
Non avete un robot? C'è il robot in cloud accessibile da remoto tramite il vostro PC o cellulare
Avete problemi hardware? C'è il robot in cloud accessibile da remoto tramite il vostro PC o cellulare
Avete problemi hardware? C'è il robot in cloud accessibile da remoto tramite il vostro PC o cellulare
Installiamo ROS su Raspberry Pi
Un breve tutorial su come utilizzare ROS sul Raspberry Pi
Video Corso ROS Rokers - Completati i video di Introduzione
Sono disponibili online i video tutorial del corso di ROS partito dalla community Rokers
NTBD: guida step by step
Cos'è e come utilizzare NTBD step by step, primo articolo della serie
Inviare Goals alla Navigation Stack - versione nodo ROS Python
Inviare un goal all ROS navigation stack utilizzando un nodo Python
Inviare una sequenza di Goals alla ROS NavStack usando Python
Inviare una sequenza di pose desiderate alla ROS Navigation Stack usando un nodo Python
Come creare messaggi custom in ROS
Creare nuovi tipi di messaggio ROS
Benvenuto a ROS 2.0
Primo contatto con ROS 2.0
Usare il braccio robotico Dobot con ROS
Come usare il braccio robotico con Robot Operating System
Un Video Corso di ROS
Il mio video corso su come utilizzare ROS è disponibile
Sviluppiamo un Robot con tecnologie Open Source
Inizio una serie di videoguide, in cui voglio introdurvi al mondo della robotica di servizio in modo pratico, facendo vedere come è possibilile, sfruttando tecnologie completamente Open Source, quali Arduino, Raspberry Pi, ROS e Docker, costruire un piccolo robot di Servizio.
Robot Open Source - Introduzione a Docker
È disponibile il video "Introduzione a Docker".
Buildare e usare container Docker per Raspberry Pi
In questa guida vediamo come buildare ed utilizzare Docker su Raspberry Pi (ed in generale sistemi Linux Embedded) per velocizzare la produzione di applicazioni Linux Embedded
Robot Open Source - Docker e Raspberry
È disponibile il video "Docker e Raspberry".