Criando um espaço de trabalho e um pacote
Sumário
Nós vimos na seção 2.4 que todo o software ROS, incluindo o software que criamos, está organizado em pacotes. Antes de escrevermos qualquer programa, os primeiros passos são criar um espaço de trabalho para manter os nossos pacotes e depois criar o pacote em sí.
Criando um espaço de trabalho
Os pacotes que você criar devem ficar juntos em um diretório chamado espaço de trabalho. Por exemplo, o espaço de trabalho do autor é um diretório chamado /home/jokane-/ros
, mas você pode nomear o seu espaço de trabalho como quiser, e armazenar o diretório em qualquer lugar da sua conta que preferir. Use o comando normal mkdir
para criar um diretório. iremos nos referir a este novo diretório como o seu diretório de espaço de trabalho.
⏩ Para diversos usuários, não há necessidade real de usar mais de um espaço de trabalho ROS. No entanto, o sistema de construção de
catkin
da ROS, que iremos introduzir na seção 3.2.2, tenta construir todos os pacotes em um espaço de trabalho de uma só vez. Portanto, se você está trabalhando em muitos pacotes ou tem vários projetos distintos, pode ser útil manter vários espaços de trabalho independentes.
É necessário um último passo para a criação do espaço de trabalho. Criar um subdiretório chamado src
dentro do diretório do espaço de trabalho. Como você pode adivinhar, esse subdiretório vai conter o código fonte para os seus pacotes.
Criando um pacote
O comando para criar um novo pacote ROS, que deve ser executado do diretório src do seu espaço de trabalho parece-se com isso:
catkin_create_pkg package-name
Na verdade esse comando de criação de pacotes não faz muito: cria um diretório para guardar o pacote e cria dois ficheiros de configuração dentro deste diretório:
- O primeiro ficheiro de configuração, chamado
package.xml
é o manifesto discutido na Seção 2.4. - O segundo ficheiro chamado
CMakeLists.txt
, é um script para um sistema de construção de plataforma cruzada de resistência industrial chamadoCMake
. Que contém uma lista de instruções de compilação incluindo quais os executáveis que devem ser criados, quais ficheiros fontes usar para construir cada um deles, e onde encontrar os ficheiros e bibliotecas necessárias para esses executáveis.CMake
é usado internamento pelocatkin
.
Nas próximas seções, nós veremos algumas edições que você vai precisar fazer em cada um desses ficheiros para configurar o seu novo pacote. Por agora, basta entender que o catkin_create_pkg
não faz nada de mágico. O seu trabalho é simplesmente tornar as coisas um pouco mais convenientes através da criação tanto do diretório de pacote como das versões padrão desses dois ficheiros de configuração.
⚠️ Essa estrutura de diretório de três camadas - um diretório de espaço de trabalho, contendo um diretório
src
, contendo um diretório de pacote - pode parecer um exagero para projetos simples e pequenos espaços de trabalho, mas o sistema de construçãocatkin
requer isso.
⏩ Os nomes dos pacotes ROS seguem uma convenção de nomenclatura que permite apenas letras minúsculas, dígitos e sublinhados. A convenção também requer que o primeiro caractere seja uma letra minúscula. Algumas ferramentas do ROS, incluindo
catkin
, irão se queixar sobre pacotes que não seguem essa convenção.
Todos os exemplos desse livro pertencem a um pacote chamado agitr
, cujo o nome vem das iniciais do título deste livro. Se você quiser recriar esse pacote você mesmo, você pode criar um pacote com esse nome executando esse comando a partir do diretório src
do seu espaço de trabalho:
catkin_create_pkg agitr
Uma alternativa para criar o pacote agitr
você mesmo é fazer o download do arquivo desse pacote através do website do livro, e expandir a partir do diretório do seu espaço de trabalho.
Editando o manifesto
Depois da criação do seu pacote, você Talvez queira editar o seu pacote.xml
, que contém alguns metadados descrevendo o pacote. A versão padrão instalada por catkin_create_pkg
é largamente comentada e amplamente auto-explicativa. Note, no entanto, que a maior parte dessas dessas informações não são utilizadas pelo ROS, nem no tempo de construção nem o tempo de execução, e só se torna realmente importante se você divulgar o seu pacote publicamente. No intenção de manter a documentação em sincronia com a real funcionalidade, um mínimo razoável pode ser para preencher os campos de descrição e manutenção. O Lista 3.1 mostra o manifesto do nosso próprio pacote agitr
.
Lista 3.1
The manifest (that is, package.xml
) for this book’s agitr package.
1 <?xml v e r si o n ="1.0"?>
2 <package>
3 <name>a gi t r </name>
4 <v e r si o n >0.0.1 </ v e r si o n >
5 <d e s c r i p t i o n >
6 Examples from A Gen tle I n t r o d u c ti o n t o ROS
7 </ d e s c r i p t i o n >
8 <m ai n t ai n e r em ail=" j o k a n e @ c s e . s c . edu">
9 Jason O' Kane
10 </m ain t aine r >
11 <l i c e n s e >TODO</l i c e n s e >
12 <build t o ol_depend>c a t ki n </build t o ol_depend>
13 <build_depend>geometry_msgs</build_depend>
14 <run_depend>geometry_msgs</run_depend>
15 <build_depend>t u r tl e sim </build_depend>
16 <run_depend>t u r tl e sim </run_depend>
17 </package>