Crear un paquete ROS 2


El software en ROS 2 esta organizado en paquetes. El objetivo de esos paquetes es ofrecer funcionalidad. Ten en cuenta que los paquetes tienen que ser funcionales, pero no demasiado para que otro software pueda usarlo. Un paquete de ROS 2 es simplemente un directorio

Este tutorial muestra como crear un paquete para ROS 2 en C++. Para poder considerar que sea un paquete ROS 2 valido tiene que cumplir unos requisitos.

  • El paquete debe contener un archivo package.xml
    • Provee metainformación del paquete
  • El paquete debe contener un archivo CMakeLists.txt
    • Provee información del paquete y sus dependencias

Un paquete de ROS 2 tiene la siguiente estructura:

src/
  my_package/
      CMakeLists.txt
      package.xml

cd ~/ros2_ws/src/ros2
mkdir testpackagecpp
cd testpackagecpp

Comprueba la etiqueta 'name'. Tiene que contener el mismo nombre que la carpeta del paquete

cmake_minimum_required(VERSION 2.8.3)

project(testpackagecpp)

if(NOT WIN32)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
endif()

find_package(ament_cmake REQUIRED)
find_package(example_interfaces REQUIRED)
find_package(rcl REQUIRED)
find_package(rmw REQUIRED)
#find_package(rmw_implementation REQUIRED)
#force opensplice implementation
find_package(rmw_opensplice_cpp REQUIRED)
#find_package(rmw_fastrtps_cpp REQUIRED)

ament_package()

Comprueba la etiqueta 'name'. Tiene que contener el mismo nombre que la carpeta del paquete

<?xml version="1.0"?>
<package format="2">
  <name>testpackagecpp</name>
  <version>0.0.0</version>
  <description>Package containing examples of how to use the rcl API.</description>
  <maintainer email="ahcorde@erlerobot.org">Alejandro Hernandez</maintainer>
  <license>Apache License 2.0</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <buildtool_depend>rosidl_default_generators</buildtool_depend>

  <build_depend>example_interfaces</build_depend>
  <build_depend>rcl</build_depend>
  <build_depend>rmw_implementation</build_depend>

  <exec_depend>example_interfaces</exec_depend>
  <exec_depend>rcl</exec_depend>
  <exec_depend>rmw_implementation</exec_depend>
  <exec_depend>rosidl_default_runtime</exec_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

Con este comando vas a construir exclusivamente el paquete 'testpackagecpp'

cd ~/ros2_ws
ament build --symlink-install --only-package testpackagecpp

¿Necesitas más capacidad de cómputo? Estate atento