Pular para o conteúdo principal

Configuração rede de robos com o ROS




 Na maioria da vezes que utilizamos o ROS como base para o desenvolvimento dos nossos robos temos um sistema embarcado, seja ele um raspberry pi, jetson ou qualquer outro instalado em nosso robo. Agora do nosso lado de desenvolvimento temos nosso notebook ou desktop. Para que possamos visualizar os dados do nosso robo no notebook precisaremos fazer alguns passos para configurar o ip do ROS mestre.


1 passo : Verificar IP do notebook e sistema embarcado.


alguns comandos poderão ser utilizados para isso, como:


ifconfig

ip addr

hostname -I


Todos estes retornarão o ip no qual foi associado à rede.


exemplo:


|||||

|||||

|||||


2 passo : Adicionar os ip's no diretório de hosts


No fim do arquivo /etc/hosts será adicionado as seguintes linhas:


[IP] raspberry 

[IP] mypc


Esse processo deverá ser feito no sistema embarcado e no notebook.


3 passo : Variáveis de ambiente 


Para que o ROS faça uso dos ip's em sua inicialização será necessário setar as variáveis de ambiente ROS_HOSTNAME e ROS_MASTER e isso poderá ser feito da seguinte forma:


Embarcado (master)

$ export ROS_HOSTNAME=raspberry

$ export ROS_MASTER_URI=http://raspberry:11311


Notebook (slave)


$ export ROS_HOSTNAME=mypc

$ export ROS_MASTER_URI=http://raspberry:11311


Agora os tópicos do raspberry (sistema embarcado) estarão disponíveis para ser visualizados no notebook.

rostopic list (lista os tópicos) 

rostopic echo (Visualiza um tópico especifico)


4 passo : bashrc


Toda vez que um terminal novo é aberto teremos que setar as variáveis de ambiente, para automatizar esse processo podemos incluir os comandos no arquivo ~/.bashrc pois ele é executado sempre que um novo terminal é aberto. 


Arquivo ~/.bashrc rasberry

export ROS_HOSTNAME=raspberry

export ROS_MASTER_URI=http://raspberry:11311


Arquivo ~/.bashrc notebook

export ROS_HOSTNAME=mypc

export ROS_MASTER_URI=http://raspberry:11311


Comentários

Postagens mais visitadas deste blog

Programação STM32F103C8 USB

Para realizar esse tutorial será necessário: 1x STM32 F103C8T6 -  https://www.curtocircuito.com.br/placa-arm-stm32-stm32f103c8t6.html 1x Conversor FT232Rl - FTDI -  https://www.curtocircuito.com.br/conversor-usb-serial-ft232rl-ftdi.html Cabo USB para FTDI. 4x Jumpers Macho-Macho. 1x Protoboard  Após separar os materiais faça as conexões seguindo o diagrama abaixo : *Lembre que os microcontroladores ARM funcionam em 3.3V, entao ajuste o jumper do FTDI para 3.3V * Após concluído terá algo bem semelhante. O STM32F103C8 possui 2 jumpers em sua placa ajustaremos 1 deles para a posição de boot (programing mode) O próximo passo será baixar um aquivo de boot genérico e fazer a gravação do mesmo em nosso microcontrolador(MCU), ultilizando um Software da ST chamado Flash Loader Demonstrator. Baixe o aquivo de boot clicando aqui . Baixe o Flash loader clicando aqui  e faça a instalação (Esteja logado em sua conta no site). C...

o que é o Arduíno

Arduíno é uma plataforma de prototipagem eletrônica de hardware livre e de placa única, projetada com um microcontrolador Atmel AVR com suporte de entrada/saída embutido, uma linguagem de programação padrão, a qual tem origem em Wiring, e é essencialmente C/C++.

O que é o ROS ?

Robot Operating System (ROS, sistema operacional de robôs) é uma coleção de frameworks de software para desenvolvimento de robôs. ROS fornece serviços padrões de sistema operacional, tais como abstração de hardware, controle de dispositivos de baixo nível, a implementação de funcionalidades comumente usadas, passagem de mensagens entre processos e gerenciamento de pacotes. Um conjuntos de processos de ROS em execução pode ser representado em uma arquitetura de grafos onde o processamento se realiza em nós que podem receber e enviar mensagens como sensores multiplex, controle, estado, planejamento, atuador e outras. Apesar da importância da reatividade e baixa latência no controle de robôs, ROS, em si, não é um sistema operacional de tempo real, embora seja possível integrar ROS com código em tempo real. A falta de suporte para sistemas em tempo real está sendo abordada no desenvolvimento de ROS 2.0.