Negli articoli precedenti abbiamo avuto modo di conoscere meglio cosa sono i nodi in ROS.
E’ giunto il momento di introdurre un nuovo concetto fondamentale, ovvero i topic.
In questo articolo faremo una rapida introduzione concettuale su questo strumento essenziale insieme a quelli di subscriber e publisher, per poter scrivere dei nodi indipendenti e capaci di comunicare tra di loro.
Passeremo poi, nelle prossime puntate a scrivere dei publisher e dei subscriber in C++ e Python per poi proseguire con altri esperimenti sui topic in modo da comprenderne appieno le potenzialità.
ROS Topic, Subscriber e Publisher
Il concetto di topic in ROS è strettamente legato a quelli di subscriber e publisher.
Per comprendere subito cos’è un topic, un subscriber e un publisher in ROS è utile fare uso di un’analogia che, sebbene possa non essere calzante al 100%, aiuta ad acquisire un concetto completo in poco tempo.
Immagina i topic come se fossero i canali disponibili sulla rete televisiva.
In questa analogia, i publisher non sono altro che le stazioni radio che trasmettono la diretta di uno o più canali, mentre i subscriber sono i telespettatori che si collegano al canale tramite diversi dispositivi.
Ecco un’immagine esplicativa:
Questa analogia ci aiuta a capire come i topic siano uno strumento fondamentale per lo sviluppo di un’applicazione ROS in quanto permettono la comunicazione tra gli oggetti contenuti nei nodi in maniera completamente indipendente.
Ciò aiuta lo sviluppo di applicazioni robuste e modulari.
Conclusioni
Ricapitoliamo velocemente e diamo anche qualche dettaglio tecnico in più.
Un topic non è altro che un bus di comunicazione per lo scambio di messaggi unidirezionali.
Il flusso dei dati va dai publisher, che sono i produttori di informazione verso i subscriber che sono i consumatori.
I concetti fondamentali da considerare sono che:
- I publisher e i subscriber non sono al corrente di quali siano gli altri publisher e gli altri subscriber connessi al canale.
- Un publisher può comunicare su più topic contemporanemanete.
- Ogni topic ha un tipo di messaggio che ne determina la struttura e che deve essere condiviso tra publisher e subscriber per poter essere scambiato correttamente.
- Ogni nodo ROS può avere più publisher e più subscriber.
- Come i nodi, anche questi elementi possono essere scritti in Python e C++.
Nelle prossime lezioni andremo a vedere come sviluppare un publisher ed un subscriber in Python e in C++.
Scrivi un commento