Crear un paquete ROS 2 (Python)


El software en ROS 2 esta organizado en paquetes. El objetivo de esos paquetes es ofrecer una 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 Python. 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 setup.py
    • Provee información del paquete

Un paquete de ROS 2 tiene la siguiente estructura:

src/
  my_package/
      setup.py
      package.xml

cd ~/ros2_ws/src/ros2
mkdir testpackage
cd testpackage

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

from setuptools import setup

setup(
    name='testpackage',
    version='0.0.0',
    packages=[],
    py_modules=[],
    install_requires=['setuptools'],
    author='Esteve Fernandez',
    author_email='esteve@osrfoundation.org',
    maintainer='Esteve Fernandez',
    maintainer_email='esteve@osrfoundation.org',
    keywords=['ROS'],
    classifiers=[
        'Intended Audience :: Developers',
        'License :: OSI Approved :: Apache Software License',
        'Programming Language :: Python',
        'Topic :: Software Development',
    ],
    description='Package containing examples of how to use the rclpy API.',
    license='Apache License, Version 2.0',
    test_suite='test',
    entry_points={
        'console_scripts': [
            'listener_py = listener_py:main',
            'talker_py = talker_py:main',
        ],
    },
)

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

<?xml version="1.0"?>
<package format="2">
  <name>testpackage</name>
  <version>0.0.0</version>
  <description>Package containing examples of how to use the rclpy API.</description>
  <maintainer email="esteve@osrfoundation.org">Esteve Fernandez</maintainer>
  <license>Apache License 2.0</license>

  <exec_depend>rclpy</exec_depend>
  <exec_depend>std_msgs</exec_depend>

  <test_depend>ament_copyright</test_depend>
  <test_depend>ament_pep257</test_depend>
  <test_depend>ament_pep8</test_depend>
  <test_depend>ament_pyflakes</test_depend>
  <test_depend>rclpy</test_depend>
  <test_depend>std_msgs</test_depend>

  <export>
    <build_type>ament_python</build_type>
  </export>
</package>

Antes de construir tu paquete recuerda cargar tu area de trabajo en tu bash.

cd ~/ros2_ws
. ./install/setup.bash 

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

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

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