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.