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.