Montar Pacotes

Uma vez que toda as dependências de sistema em relação ao seu pacote foram instaladas, podemos gerar um novo pacote.

Note: Se você instalou o ROS usando apt ou outro gerenciador de pacote, você já deve ter todas as dependências necessárias.

Antes de continuarmos, lembre-se de inicializar seu arquivo de setup de ambiente, caso já não tenha feito. No Ubuntu o comando é o seguinte:

# source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash
$ source /opt/ros/kinetic/setup.bash             # Para Kinetic por exemplo

Usando catkin_make

catkin_make é uma ferramenta de linha de comando que adciona utilidades ao fluxo de trabalho padrão do catkin. Pode-se imaginar que o catkin_make combina chamadas do cmake e make em um fluxo de trabalho CMake padrão.

Como usar:

# Em um catkin workspace
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

Para pessoas que não são familiar com o fluxo de trabalho padrão do CMake, ele é dividido da seguinte maneira:

Note: Se você executar os comandos abaixo, ele não funcionará, pois este é apenas um exemplo de como o CMake geralmente funciona.

# Em um projeto CMake
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install  # (opcionalmente)

Esse processo é executado para cada projeto CMake. Por outro lado, os projetos catkin podem ser montados juntos em um workspace. Montar (build) zero ou vários pacotes catkin em um workspace segue o fluxo de trabalho abaixo:

# Em um catkin workspace
$ catkin_make
$ catkin_make install  # (opcionalmente)

Os comandos acima irão montar qualquer projeto catkin encontrado na pasta src. Isto segue a recomendação definida pelo REP128. Se o seu código fonte está em um local diferente, por exemplo minha_src, então você chamaria catkin_make desta forma:

Note: Se você rodar os comandos abaixo, eles não irão funcionar, já que a pasta minha_src não existe.

# Em um catkin workspace
$ catkin_make --source minha_src
$ catkin_make install --source minha_src  # (opcionalmente)

Para usos mais avançados do catkin_make veja a seguinte documentação: catkin/commands/catkin_make

Montando seu pacote

Para os leitores desta página que estão prestes a criar seus próprios códigos, consulte também os próximos tutoriais (C++)/(Python) pois você pode precisar modificar o CMakeLists.txt.

Nesse momento você já deve ter um catkin workspace e um pacote catkin chamado beginner_tutorials criado no tutorial anterior Criando um pacote ROS. Entre no seu catkin workspace (se você ainda não estiver lá) e olhe a pasta src:

$ cd ~/catkin_ws/
$ ls src
  • beginner_tutorials/  CMakeLists.txt@  

Você deve notar que existe uma pasta chamada beginner_tutorials que você criou com o comando catkin_create_pkg no tutorial anterior. Agora, nós podemos montar (build) este pacote usando catkin_make:

$ catkin_make

Você deve ver um monte de saída do cmake e `make, que deve ser algo similar a isto:

  • Base path: /home/user/catkin_ws
    Source space: /home/user/catkin_ws/src
    Build space: /home/user/catkin_ws/build
    Devel space: /home/user/catkin_ws/devel
    Install space: /home/user/catkin_ws/install
    ####
    #### Running command: "cmake /home/user/catkin_ws/src
    -DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel
    -DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install" in "/home/user/catkin_ws/build"
    ####
    -- The C compiler identification is GNU 4.2.1
    -- The CXX compiler identification is Clang 4.0.0
    -- Checking whether C compiler has -isysroot
    -- Checking whether C compiler has -isysroot - yes
    -- Checking whether C compiler supports OSX deployment target flag
    -- Checking whether C compiler supports OSX deployment target flag - yes
    -- Check for working C compiler: /usr/bin/gcc
    -- Check for working C compiler: /usr/bin/gcc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel
    -- Using CMAKE_PREFIX_PATH: /opt/ros/groovy
    -- This workspace overlays: /opt/ros/groovy
    -- Found PythonInterp: /usr/bin/python (found version "2.7.1") 
    -- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc
    -- Found gtest: gtests will be built
    -- catkin 0.5.51
    -- BUILD_SHARED_LIBS is on
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- ~~  traversing packages in topological order:
    -- ~~  - beginner_tutorials
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- +++ add_subdirectory(beginner_tutorials)
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/user/catkin_ws/build
    ####
    #### Running command: "make -j4" in "/home/user/catkin_ws/build"
    ####

Observe que catkin_make primeito mosta quais caminhos ele está usando para cada um dos espaços. Os espaços são descritos no REP128 e na documentação dobre catkin workspaces na wiki: catkin/workspaces. Uma coisa importante para observar é que por causa destes valores padrão, várias pastam foram criadas no seu catkin workspace. Dê uma olhada usando o comando ls:

$ ls
  • build
    devel
    src

A pasta build é o local padrão do build space e é onde cmake e make são chamados para configurar e montar (buid) seus pacotes. A pasta devel é o local padrão do devel space, que é onde seus executáveis e bibliotecas vão antes da instalação dos seus pacotes.

Wiki: pt_BR/ROS/Tutorials/catkin/BuildingPackages (last edited 2020-04-19 03:05:52 by MatheusNascimento)