Conceitos Gerais¶

Vejamos o sistema ROS a partir de uma visão de nível muito alto. Não precisa se preocupar como qualquer um dos seguintes funciona, vamos cobrir isso mais tarde.

ROS começa com o ROS Master. O Mestre permite que todos os outros softwares ROS (Nodos) encontrem e falem uns com os outros. Dessa forma, não temos que nunca dizer especificamente “Envie estes dados do sensor para aquele computador em 127.0.0.1.Podemos simplesmente dizer ao Nodo 1 para enviar mensagens para o Nodo 2.

Como os Nodos fazem isso? Ao publicar e subscrever Tópicos.

Vamos dizer que temos uma câmara no nosso Robot. Queremos ser capazes de ver as imagens da câmera, tanto no próprio Robô, quanto em outro laptop.

No nosso exemplo, temos um Nó de Câmera que cuida da comunicação com a câmera, um Nó de Processamento de Imagem no robô que processa dados de imagem, e um Nó de Exibição de Imagem que exibe imagens em uma tela. Para começar, todos os nós se registraram no Master. Pense no Master como uma tabela de busca onde todos os nós vão para encontrar exatamente para onde enviar mensagens.

No registro no ROS Master, o Nó de Câmera declara que irá Publicar um Tópico chamado /image_data (por exemplo).Ambos os outros nós registram que eles são Subscrevidos ao Tópico /image_data.

Assim, uma vez que o Nó de Câmera recebe alguns dados da Câmera, ele envia a mensagem /image_data diretamente para os outros dois nós. (Através do que é essencialmente TCP/IP)

Agora você pode estar pensando, e se eu quiser que o Nó de Processamento de Imagem solicite dados do Nó de Câmera em um momento específico? Para isso, o ROS implementa Serviços.

Um Nó pode registrar um serviço específico com o Mestre ROS, assim como registra suas mensagens. No exemplo abaixo, o Nó de Processamento de Imagem primeiro solicita /image_data, o Nó de Câmera reúne os dados da Câmera, e então envia a resposta.