O mestre

Até agora, temos falado principalmente sobre arquivos, e como eles estão organizados em pacotes. Vamos mudar de velocidade e falar sobre como executar realmente algum software ROS.

Um dos objetivos básicos do ROS é permitir aos roboticistas projetar softwares como uma coleção de pequenos programas, em sua maioria independentes chamados nós que são executados ao mesmo tempo. Para isso funcionar, esses nós devem ser capazes de se comunicar uns com os outros. A parte do ROS que facilita essa comunicação é chamado de mestre ROS.

roscore

Já vimos isto em ação no exemplo do turtlesim. Por agora, não há mais complexidade com que se preocupar sobre: roscore não aceita quaisquer argumento e não precisa ser configurado.

Você deve permitir que o mestre continue a funcionar durante todo o tempo que estiver utilizando o ROS. Um fluxo de trabalho razoável é iniciar o roscore em um terminal, e então abrir outros terminais para o seu “real” trabalho. Não existem muitas razões para parar o roscore, exceto quando você finaliza o seu trbalho com o ROS. Quando chegar a este ponto, pode parar o mestre digitando Ctrl+C em seu terminal.

⏩ Embora não sejam muitas, há algumas razões para que o reinício do roscorepossa ser uma boa ideia. Exemplos: Para mudar um novo conjunto de arquivos de registro (veja o capítulo 4) ou limpar o servidor de parâmetros (veja o capítulo 7).

⚠️A maior parte dos nós ROS se conectam com o mestre quando se iniciam, e não tentam se reconectar se essa conexão falhar mais tarde. Portanto, se você parar roscore, qualquer outro nó em funcionamento no momento não serão capazes de estabelecer novas conexões, mesmo que você reinicie o roscoredepois.

O comando roscore mostrado aqui é usado para iniciar explicitamente o mestre ROS. No capítulo 6, aprenderemos sobre uma ferramenta chamada roslaunch, cujo objetivo é iniciar varios nós de uma so vez; essa ferramenta é esperta o suficiente para iniciar um mestre se nenhuma outra estiver funcionando, mas também irá usar felizmente um mestre existente se houver um.