Sistema de ficheiros no ROS

 

Artigo correspondente em parte ao segundo tutorial básico do ROS disponível em:

http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem

Ao qual acrescenta informações sobre outros ficheiros usados e a estrutura típica de um pacote de ROS.

Principais conceitos do sistema de ficheiros do ROS

Pacotes: os pacotes são a unidade de organização de software do código ROS. Cada pacote pode conter bibliotecas, executáveis, scripts ou outros tipos de ficheiros.

Manifestos ( package.xml ): um manifesto é a descrição de um pacote . Serve para definir dependências entre pacotes e obter informações sobre o pacote, como por exemplo a versão, quem faz a manutenção do pacote, a licença, etc.

Instruções de compilação (CMakeLists.txt): contêm as informações necessárias para compilar os executáveis e as bibliotecas que compõem o pacote.

Ferramentas do ROS para o sistema de ficheiros

O ROS tem vários comandos que nos permitem conhecer os pacotes e navegar na sua estrutura dos quais destaco os seguintes.

  • O rospack permite obter informações sobre os pacotes. O comando rospack tem várias opções, entre as quais o find que permite conhecer a localização do pacote no sistema de ficheiros: rospack find [nome_pacote].
  • O rosrun permite executar os programas num pacote de ROS (nodes) ​​segundo a forma: rosrun nome_pacote nome_executavel.
  • O roscd faz parte do conjunto de ferramentas rosbash. Permite alterar o directório corrente ( cd ) para um directório no pacote indicado: roscd [nome_pacote[/ subdir]].
  • O rosls também faz parte do conjunto de ferramentas rosbash e permite listar o directório no pacote indicado: rosls [nome_pacote[/ subdir]].

Para mais informação sobre as ferramentas rosbash consultar o seguinte link:

http://wiki.ros.org/rosbash

Para além das ferramentas já referidas, o ROS implementa a facilidade de tab completion (completar os commandos na shell em função dos caracteres pré inseridos). Experimentar com: rosrun <tab><tab><tab>.

Estrutura típica de um pacote de ros no sistema de ficheiros

A estrutura de um pacote de ros no sistema de ficheiros tem pelo menos os seguintes elementos:

  • a pasta do pacote, que contém os seguintes dois ficheiros (já referidos acima):
    • package.xml
    • CMakeLists.txt

A esta pasta são acrescentados os ficheiros com os programas que são executados, e outros tipos de ficheiros necessários, organizados por directórios (ou pastas).

As pastas mais comuns, são as seguintes:

  • include – localização dos ficheiros necessários para inclusão no projecto
  • launch – localização dos ficheiros de lançamento parametrizáveis de nodes. Tipo um rosrun em massa
  • param – localização  dos ficheiros de configuração usados por alguns nodes.  Estes ficheiros são normalmente no formato yaml
  • scripts – localização dos ficheiros executáveis em python (necessitam de chmod +x nome_script)
  • src – localização dos ficheiros fonte em c/c++ que são necessários compilar (devem ser referidos no ficheiro CMakeLists.txt.
  • urdf – localização dos ficheiros em xml que descrevem a forma fisica do robot.

Generalização dos comandos do ROS

Uma regra geral para os comandos do ros disponiveis na shell é que eles tem o prefixo ros.

Deste modo, por exemplo, o comando para executar um ficheiro launch será: roslaunch nome_pacote nome.launch

Ou quando estamos num momento what the fu… existe à disposição o comando: roswtf.