Note: This tutorial assumes that you have completed the previous tutorials: creating a ROS package.
(!) 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.

Construyendo un Paquete ROS

Description: Este tutorial cubre la cadena de herramientas para construir un paquete.

Tutorial Level: BEGINNER

Next Tutorial: Comprendiendo Nodos ROS

Construyendo Paquetes

Siempre que todas las dependencias del sistema correspondientes a su paquete estén instaladas, podremos construir su nuevo paquete.

Nota:Si instaló ROS usando apt o algún otro administrador de paquetes, ya debería tener todas sus dependencias.

Antes de continuar, recuerde compilar el archivo de configuración de su entorno si aún no lo ha hecho. En Ubuntu sería algo como esto:

# source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash
$ source /opt/ros/kinetic/setup.bash             # For Kinetic for instance

Usando catkin_make

catkin_make es una herramienta de línea de comandos que agrega cierta comodidad al flujo de trabajo estándar de catkin. Puede imaginar que catkin_make combina las llamadas a cmake y make en el flujo de trabajo estándar de CMake.

Uso:

# In a catkin workspace
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

Para las personas que no están familiarizadas con el flujo de trabajo estándar de CMake, este se divide de la siguiente manera:

Nota: Si ejecuta los siguientes comandos, no funcionará, ya que este es solo un ejemplo de cómo funciona CMake en una forma general.

# In a CMake project
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install  # (opcionalmente)

Este proceso se ejecuta para cada proyecto de CMake. Por el contrario, los proyectos de catkin se pueden construir a la vez en espacios de trabajo. La construcción de cero o muchos paquetes catkin en un espacio de trabajo sigue este flujo de trabajo:

# En un espacio de trabajo carkin
$ catkin_make
$ catkin_make install  # (optional)

Los comandos anteriores construirán cualquier proyecto catkin que se encuentre en la carpeta src. Esto sigue las recomendaciones establecidas por REP128. Si su código fuente está en un lugar diferente, diga my_src entonces llamaría catkin_make así:

Nota: Si ejecuta los siguientes comandos, no funcionará, ya que el directorio my_src no existe.

# En un espacio de trabajo catkin
$ catkin_make --source my_src
$ catkin_make install --source my_src  # (optional)

Para usos más avanzados de catkin_make consulte la documentación: catkin/commands/catkin_make

Construyendo su Paquete

Si está utilizando esta página para crear su propio código, también eche un vistazo a los tutoriales posteriores (C++) / (Python) ya que es posible que deba modificar CMakeLists.txt.

Ya debería tener un espacio de trabajo catkin y un nuevo paquete catkin llamado beginner_tutorials del tutorial anterior, Creando un paquete. Vaya al espacio de trabajo de catkin si aún no está allí y busque en la carpeta src:

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

Debería ver que hay una carpeta llamada beginner_tutorials que creó con catkin_create_pkg en el tutorial anterior. Ahora podemos construir ese paquete usando catkin_make:

$ catkin_make

Debería ver una gran cantidad de resultados de cmake y despues make, que debería ser similar a esto:

  • 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/kinetic
    -- This workspace overlays: /opt/ros/kinetic
    -- 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"
    ####

Tenga en cuenta que catkin_make primero muestra qué rutas está usando para cada uno de los 'espacios'. Los espacios se describen en REP128 y en la documentación sobre los espacios de trabajo catkin en la wiki: catkin/workspaces. Lo importante a tener en cuenta es que debido a estos valores predeterminados se han creado varias carpetas en su espacio de trabajo de catkin. Eche un vistazo con ls:

$ ls
  • build
    devel
    src

La carpeta build es la ubicación predeterminada de build space y es donde se llaman a cmake y make para configurar y construir sus paquetes. La carpeta devel es la ubicación predeterminada del espacio devel, que es donde van sus ejecutables y bibliotecas antes de instalar sus paquetes.

Now that you have built your ROS package let's talk more about ROS Nodes.

Wiki: es/ROS/Tutoriales/ConstruyendoPaquetes (last edited 2021-08-13 09:24:16 by JuanEduardoRiva)