Skip to main content

Configurações do ROS

Fonte

O ROS 2 depende da noção de combinar espaços de trabalho (workspaces) usando o ambiente do shell. O espaço de trabalho principal do ROS 2 é chamado de "underlay", e os subsequentes são chamados de "overlays". Combinar espaços de trabalho facilita o desenvolvimento com diferentes versões do ROS 2 ou contra diferentes conjuntos de pacotes. Isso é realizado ao fontar arquivos de configuração toda vez que você abre um novo shell.

1. Instalação do ROS

Para instalar o ROS 2 Humble, basta utilizar o script disponível no repositório de scripts.

git clone https://github.com/rmnicola/Scripts ~/Scripts 

2. Setup do script de inicialização do ROS

Para que os comandos e pacotes do ROS sejam reconhecidos pelo sistema, é necessário executar um script de inicialização. A maneira sugerida de trabalhar é rodando esse script toda vez que sua sessão de shell seja iniciada. Para isso, deve-se adicionar um comando ao script de inicialização do shell:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

3. Verificação das variáveis de ambiente

Para que o ROS funcione adequadamente, são necessárias algumas variáveis de ambiente para definir aspectos relacionados ao underlay. O script configurado acima já deve ter feito toda a configuração necessária, mas não custa nada conferir. Vamos rodar o comando:

printenv | grep -i ROS 

Vamos aproveitar a ocasião para aumentar o entendimento de vocês sobre os programas básicos UNIX? Vamos.

O comando printenv exibe todas as variáveis de ambiente do sistema. Como são muitas variáveis, acaba ficando um pouco difícil de encontrar as variáveis relacionadas ao ROS. Como resolver esse problema? Utilizando um segundo programa, o grep. O grep é uma ferramenta de linha de comando usada para pesquisar padrões específicos dentro de arquivos ou entrada de texto, baseando-se em expressões regulares. No caso, estamos buscando o padrão ROS.

Beleza, mas como o grep sabe o que tem na saída do printenv? Caso vocês ainda não conheçam, faço a apresentação formal: pipe (|), queridos alunos. Queridos alunos, pipe. O pipe serve para redirecionar a saída de ferramentas de linha de comando, mexendo direto no fluxo do stdin, stdout e stderr. O pipe é o que faz funcionar a filosofia Unix de criar um programa que faça uma coisa, mas uma coisa bem feita. Com ele, podemos encadear diversas ferramentas simples para criar uma funcionalidade mais complexa. Aprendam a encadear "tubulações" e vocês nunca mais vão querer voltar pro deserto do powershell. Referência sobre pipes

Depois desse redirecionamento, vamos às variáveis de ambiente que devem ter sido setadas no seu sistema pelo ROS:

ROS_DISTRO=humble
ROS_LOCALHOST_ONLY=0
ROS_PYTHON_VERSION=3
ROS_VERSION=2

3.1. ROS_DOMAIN_ID

Para configurar a funcionalidade de rede do ROS, é necessário setar uma variável de ambiente chamada ROS_DOMAIN_ID. Essa variável é responsável por definir internamente a porta UDP que será utilizada pelo DDS (camada do ROS responsável pela comunicação em rede). Sendo assim, caso queira que seus nós comuniquem-se com nós em outro dispositivo, deve-se configurar ambos para usar o mesmo ROS_DOMAIN_ID. A saber, os endereços recomentados para essa variável estão entre 0 e 121 ou entre 215 e 232.