Entendendo os nós do ROS

ROS

No meu último artigo, dei uma breve explicação sobre o ROS e qual sua finalidade. Neste artigo pretendo que você ganhe familiaridade com os comandos e conceitos do ROS. Supõe-se que você tenha lido o artigo citado e que tenha feito a instalação do ROS Indigo seguindo o guia apresentado. Vamos utilizar o simulador que acompanha o ROS, turtlesim, para entender como inicializar um nó.

 

Primeiramente, em uma janela de terminal, precisamos inicializar o ROS com o seguinte comando:

 

 

Nota: Sempre que você for utilizar o ROS não se esqueça de inicializa-lo com o comando descrito acima.

 

Se o comando acima for bem sucedido, você verá uma tela similar a essa:

 

 

 

O comando ROSNODE

 

Ao inicializar o ROS será criado um nó e dois tópicos. Nesse momento, em outra janela de terminal, você pode executar o comando ROSNODE para examinar o nó criado pelo comando ROSCORE.

 

Como o próprio nome sugere, ROSNODE é um comando utilizado para que você obtenha mais informações sobre os nós que estão sendo executados pelo ROS. Com esse comando, podemos obter informações de nós que estão sendo executados em sua máquina local e/ou nós executados em máquinas remotas conectadas na mesma rede.

 

Execute o seguinte comando:

 

 

Será exibida a lista de todos os nós que estão rodando em sua rede no momento. No nosso caso será exibido apenas o nó /rosout, ou seja, nossa rede está rodando apenas o ROSCORE. O nó /rosout tem o objetivo de coletar e exibir mensagens de debug de outros nós.

 

É interessante saber todos os nós que estão rodando em sua rede. Entretanto, talvez você queira descobrir mais detalhes sobre um determinado nó. Isso pode ser feito através do seguinte comando:

 

 

No nosso caso, queremos saber mais informações sobre o nó /rosout:

 

 

Você obterá uma tela semelhante a essa:

 

 

Explicando o significado da tela acima:

  1. Node: Indica o nome do nó;

  2. Publications: Essa seção indica em quais tópicos o nó publica informações. Nesse caso, o nó /rosout publica mensagens no tópico /rosout_agg do tipo rosgraph_msgs/Log;

  3. Subscriptions: Essa seção indica em quais tópico o nó está inscrito. Nesse caso, o nó /rosout está inscrito no tópico /rosout de um tipo desconhecido;

  4. Services: Indica os serviços criados pelo nó em questão. Nessa caso, o nó /rosout possui os seguintes serviços: /rosout/set_logger_level e /rosout/get_loggers. Os serviços são semelhantes aos tópicos, com ele um nó pode se comunicar com outro nó enviando um request e recebendo um response;

  5. Contacting node: Indica com qual máquina o nó está se comunicando. Nesse caso, minha máquina possui o nome ascc-pc-035. Logo, seu endereço é http://ascc-pc-035:55459. O número após os dois pontos representa a porta de comunicação que é determinada automaticamente pelo ROS.

 

 

O comando ROSRUN

 

Antes de utilizarmos o turtlesim, gostaria de introduzir o comando rosrun. Esse comando possui a seguinte sintaxe básica:

 

 

Com esse comando podemos inicializar um nó de qualquer pacote ROS instalado em seu sistema. Também é possível inicializar um nó com determinados parâmetros que dependem do nó que você está trabalhando no momento.

 

 

O simulador Turtlesim

 

O simulador Turtlesim é uma ferramenta didática utilizada por quem está aprendendo o ROS. Com o uso desse simulador é possível entender conceitos importantes do ROS. Como o nome sugere, o turtlesim simula os movimentos de uma tartaruga.

 

Para inicializar o Turtlesim use o seguinte comando:

 

 

Você verá uma tela semelhante à Figura 1. Não se preocupe se sua tela não for igual à minha. A tela do turtlesim muda sempre que o simulador é iniciado.

 

Simulador turtlesim do ROS.
Figura 1: Simulador turtlesim.

 

Agora, veja novamente os nós que estão sendo executados em sua rede ROS:

 

 

Você verá um novo nó listado:

 

 

Com o comando rosrun é possível modificar o nome do nó criado:

 

 

Nota: execute o comando acima sem fechar o turtlesim que já foi iniciado. Você verá que é possível inicializar vários nós iguais contanto que eles possuam nomes diferentes.

 

O comando acima irá abrir uma nova janela do turtlesim. Ao executar o comando rosnode list, você verá a seguinte lista de nós:

 

 

Nesse caso, o parâmetro __name:= tem a função de inicializar o nó com um nome diferente. Desta forma, você pode executar, ao mesmo tempo, diversos nós iguais. Se você tentar executar o mesmo nó, que já está sendo executado, mas sem modificar o seu nome, você verá que o nó mais antigo será encerrado para que o mais novo seja executado.

 

 

Conclusão

 

Nesse artigo, você aprendeu três comandos básicos, mas de extrema importância ao se utilizar o ROS: roscore, rosnode e rosrun. No próximo artigo utilizaremos o turtlesim novamente para explicar como publicar mensagens usando comandos do ROS. Após isso, começaremos uma série de artigos para ensiná-lo a criar seu próprio pacote no ROS e a escrever seus próprios nós usando C++.

 

 

Referências

 

ROS Beginner tutorial: Understanding nodes

Outros artigos da série

<< Uma introdução ao Robot Operating System (ROS)Entendendo as mensagens e tópicos do ROS >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Jéssica Motta Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Jéssica Motta
Visitante
Jéssica Motta

Excelente artigo!! Muito didático!