(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Criando um pacote de ROS manualmente

Description: Como criar um pacote do ROS sem usar ferramentas.

Tutorial Level: INTERMEDIATE

Next Tutorial: Administrando dependências do sistema

Existe uma ferramenta para criar pacotes (Packages) de ROS, o catkin_create_pkg, mas, como este tutorial demonstrará, também é possível criar pacotes sem usar nenhuma ferramenta. catkin_create_pkg evita erros e ganha tempo, mas um pacote nada mais é que um diretório com um arquivo XML específico.

Agora vamos criar um novo pacote chamado foobar. Este tutorial presume que estamos em um workspace catkin e que o arquivo setup já foi "sourced".

Começamos criando um diretório para o pacote e entrando nele:

catkin_ws_top $ mkdir -p src/foobar
catkin_ws_top $ cd src/foobar

A primeira coisa a se fazer é adicionar nosso arquivo package.xml. Este arquivo permite que ferramentas como rospack determinem informações sobre as dependências do seu pacote.

Dentro de foobar/package.xml coloque o seguinte:

<package>
  <name>foobar</name>
  <version>1.2.4</version>
  <description>
  This package provides foo capability.
  </description>
  <maintainer email="foobar@foo.bar.willowgarage.com">PR-foobar</maintainer>
  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>roscpp</build_depend>
  <build_depend>std_msgs</build_depend>

  <run_depend>roscpp</run_depend>
  <run_depend>std_msgs</run_depend>
</package>

Veja também esta página do tutorial de ''catkin'' para mais informações sobre catkin/package.xml.

Agora que seu pacote tem um arquivo package, o ROS consegue encontrá-lo. Tente executar o comando:

rospack find foobar

Se ROS estáiver configurado corretamente, você verá algo como: /home/user/ros/catkin_ws_top/src/foobar. É por esse mecanismo que o ROS sempre encontra seus pacotes.

Note que nosso pacote também tem dependência em roscpp e std_msgs.

Tais dependências são usadas por catkin para configurar pacotes na ordem correta.

Agora nós precisamos do arquivo CMakeLists.txt para que catkin_make, que usa CMake para compilar em múltiplas plataformas, compile o pacote.

Em foobar/CMakeLists.txt coloque:

cmake_minimum_required(VERSION 2.8.3)
project(foobar)
find_package(catkin REQUIRED roscpp std_msgs)
catkin_package()

Isso é tudo que é necessário para começar a compilar um pacote em ROS usando catkin. Apesar disso ser o mínimo necessário, mais macros do CMake são necessárias para compilar algo. Veja nosso guia de CMakeLists.txt para mais informações. E sempre consulte os tutoriais iniciantes (Criando pacotes, etc) para customizar seu package.xml e CMakeLists.txt.

Wiki: pt_BR/ROS/Tutorials/Creating a Package by Hand (last edited 2020-04-18 22:18:51 by chapulina)