Concetti generali¶

Guardiamo il sistema ROS da una visione di alto livello. Non c’è bisogno di preoccuparsi di come funziona tutto ciò che segue, ne parleremo più tardi.

ROS inizia con il ROS Master. Il Master permette a tutti gli altri pezzi di software ROS (Nodi) di trovare e parlare tra loro.In questo modo, non dobbiamo mai dire specificamente “Invia questi dati del sensore a quel computer a 127.0.0.1.Possiamo semplicemente dire al Nodo 1 di inviare messaggi al Nodo 2.

Come fanno i Nodi? Pubblicando e sottoscrivendo Topics.

Diciamo che abbiamo una telecamera sul nostro Robot. Vogliamo essere in grado di vedere le immagini dalla telecamera, sia sul Robot stesso, sia su un altro portatile.

Nel nostro esempio, abbiamo un Camera Node che si occupa della comunicazione con la telecamera, un Image Processing Node sul robot che elabora i dati delle immagini, e un Image Display Node che visualizza le immagini su uno schermo. Per iniziare, tutti i nodi si sono registrati con il Master. Pensate al Master come una tabella di ricerca dove tutti i nodi vanno per trovare dove esattamente inviare i messaggi.

Nella registrazione con il ROS Master, il Camera Node dichiara che pubblicherà un argomento chiamato /image_data (per esempio).Entrambi gli altri nodi registrano che sono iscritti all’argomento /image_data.

Quindi, una volta che il nodo Camera riceve dei dati dalla telecamera, invia il messaggio /image_data direttamente agli altri due nodi. (Attraverso quello che è essenzialmente TCP/IP)

Ora potreste pensare, cosa succede se voglio che il nodo di elaborazione delle immagini richieda i dati dal nodo telecamera in un momento specifico? Per fare questo, ROS implementa dei servizi.

Un nodo può registrare un servizio specifico con il ROS Master, proprio come registra i suoi messaggi.Nell’esempio seguente, il nodo di elaborazione delle immagini richiede prima /image_data, il nodo della telecamera raccoglie i dati dalla telecamera e poi invia la risposta.