Pré-requisitos

Neste tutorial, vamos inspecionar um pacote em ros-tutorials, instale-o com o seguinte comando

$ sudo apt-get install ros-<distro>-ros-tutorials

Substitua '<distro>' com o nome da sua distribuição de ROS (por exemplo: kinetic, lunar, melodic etc.)

Visão Geral dos Conceitos de Sistema de Arquivos

  • Pacotes: Pacotes são a unidade básica de organização de software em ROS. Cada pacote pode conter bibliotecas, executáveis, scripts ou outros artefatos.

  • Manifesto (package.xml): Um manifesto é uma descrição de um pacote. É utilizado para definir dependências entre pacotes e para coletar meta-informação a respeito do pacote tal como versão, mantedor, licença, etc...

Show    Nota sobre stacks

Nota: Usuários de rosbuild podem estar se perguntando onde foram parar os 'stacks', o conceito de stacks foi removido no catkin para simplificar a crescente base de código e para suportar uma melhor distribuição de pacotes. Em catkin você pode definir metapackages para coletar pacotes similares e múltiplos pacotes podem viver num mesmo repositório de controle de versão. Essas duas funcionalidades substituíram o que os stacks faziam.

Ferramentas do Sistema de Arquivos

O código é espalhado através de muitos pacotes ROS. Navegando com ferramentas de linha de comando tais quais ls e cd pode se tornar bastando tedioso. Justamente por isso que o ROS disponibiliza ferramentas para lhe auxiliar.

Utilizando rospack

rospack permite você adquirir informações sobre pacotes. Neste tutorial, iremos simplesmente cobrir a utilização da opção find, que retorna o endereço do pacote.

Uso:

$ rospack find [nome_do_pacote]

Exemplo:

$ rospack find roscpp

Deveria retornar:

  • DIRETÓRIO_DE_INSTALAÇÃO/share/roscpp

Se você instalou ROS Kinetic, por exemplo, a partir do apt no Ubuntu, você deve ver exatamente:

  • /opt/ros/kinetic/share/roscpp

Utilizando roscd

roscd é parte da suíte rosbash. Esse comando permite que você mude de diretório (cd) diretamente à um pacote ou stack.

Uso:

$ roscd [local[/subdiretório]]

Execute este exemplo:

$ roscd roscpp

Para verificar que mudamos para o diretório do pacote roscpp, vamos imprimir o diretório atual utilizando o comando Unix pwd:

$ pwd

Você deveria ver:

  • DIRETÓRIO_DE_INSTALAÇÃO/share/roscpp

Você pode notar que DIRETÓRIO_DE_INSTALAÇÃO/share/roscpp é o mesmo local que rospack find retornou no exemplo anterior.

Note que roscd, assim como outras ferramentas do ROS, vai apenas encontrar pacotes ROS que estão nos diretórios listados na sua variável de ambiente ROS_PACKAGE_PATH. Para ver o que está na sua ROS_PACKAGE_PATH, digite:

$ echo $ROS_PACKAGE_PATH

Sua variável ROS_PACKAGE_PATH deve conter uma lista de diretórios onde você tem pacotes ROS, separados por :. Uma ROS_PACKAGE_PATH típica deve parecer com isso:

  • /opt/ros/kinetic/base/install/share

Assim como outras variáveis de ambiente, você pode adicionar diretórios à sua variável ROS_PACKAGE_PATH, com cada caminho separado por dois pontos ':'.

Subdiretórios

roscd permite que você se mova para um subdiretório de um pacote ou 'stack'.

Faça:

$ roscd roscpp/cmake
$ pwd

Você deve ver:

  • DIRETÓRIO_DE_INSTALAÇÃO/share/roscpp/cmake

roscd log

roscd log vai lhe levar para a pasta onde o ROS armazena arquivos de log. Perceba que se você não rodou nenhum programa ROS, isto gerará um erro dizendo que tal pasta ainda não existe.

Caso você já tenha executado algum programa ROS anteriormente, faça:

$ roscd log

Utilizando rosls

rosls faz parte da suíte rosbash. Esse comando permite que você visualize o interior de um pacote diretamente pelo nome, ao invés de informar o caminho absoluto para a pasta (como o comando ls).

Utilização:

# rosls [local[/subdir]]

Exemplo:

$ rosls roscpp_tutorials

Deve retornar:

  • cmake  launch  package.xml  srv

Completar com TAB

Digitar o nome de um pacote inteiro pode ser um tanto quanto tedioso. No exemplo anterior, roscpp_tutorials é um nome bastante longo. Por sorte, algumas ferramentas ROS têm suporte para completar com TAB.

Comece digitando:

# roscd roscpp_tut<<< agora aperte a tecla TAB >>>

Após pressionar a tecla TAB, a linha de comando deve preencher o resto:

$ roscd roscpp_tutorials/

Isto funciona porque roscpp_tutorials é atualmente o único pacote ROS que começa com roscpp_tut.

Agora tente digitar:

# roscd tur<<< agora tecle TAB >>>

Após pressionar a tecla TAB, a linha de comando vai preencher o máximo possível:

$ roscd turtle

Entretanto, neste caso existem vários pacotes que iniciam com turtle. Tente pressionar TAB duas vezes rapidamente. Isso deve imprimir na tela todos os pacotes ROS que iniciam com turtle:

  • turtle_actionlib/  turtlesim/         turtle_tf/

Na linha de comando você deve ter:

$ roscd turtle

Agora digite un s após turtle e então pressione TAB

# roscd turtles<<< agora pressione TAB >>>

Já que não existe apenas um pacote que inicia com turtles, você deve ver:

$ roscd turtlesim/

Revisão

Você talvez tenha notado um padrão com a nomeação das ferramentas ROS:

  • rospack = ros + pack(age) // (package = pacote)
  • roscd = ros + cd
  • rosls = ros + ls

Show    Nota sobre cd e ls

Nota: cd e ls são ferramentas de linha de comando bastante comuns em ambientes Linux (e outros obviamente). cd = Change Directory, ls = LiSt.

Esta convenção de nomeação se mantém por várias outras ferramentas ROS.

Wiki: pt_BR/ROS/Tutorials/catkin/NavigatingTheFilesystem (last edited 2018-06-02 16:47:03 by chapulina)