[Documentation] [TitleIndex] [WordIndex

Descripción general

El manifiesto del paquete (package manifest) es un archivo XML llamado 'package.xml' que debe incluirse con la carpeta raíz de cualquier paquete compatible con catkin. Este archivo define propiedades sobre el paquete, como el nombre del paquete, los números de versión, los autores, los mantenedores y las dependencias de otros paquetes catkin. Tenga en cuenta que el concepto es similar al archivo manifest.xml utilizado en el sistema de compilación heredado rosbuild.

Las dependencias del paquete del sistema se declaran en package.xml. Si faltan o son incorrectos, es posible que pueda compilar desde el código fuente y ejecutar pruebas en su propia máquina, pero su paquete no funcionará correctamente cuando se publique en la comunidad ROS. Otros dependen de esta información para instalar el software que necesitan para usar su paquete ( doc orientado a dependencias para catkin en U-Texas).

Formato 2 (Recomendado)

Este es el formato recomendado para paquetes nuevos. También se recomienda que los paquetes de formato 1 más antiguos se migren al formato 2. Para obtener instrucciones sobre cómo migrar del formato 1 al formato 2, consulte Migrating from Format 1 to Format 2 en los documentos de la API catkin.

La documentación completa para el formato 2 se puede encontrar en los documentacion de la API catkin. Tambien puede encontrar más información en especificación del formato de manifiesto dos de paquete.

Estructura Básica

Cada archivo package.xml tiene la etiqueta <package> como etiqueta raíz en el documento.

<package format="2">

</package>

Etiquetas necesarias

Hay un conjunto mínimo de etiquetas que deben anidarse dentro de la etiqueta <package> para completar el manifiesto del paquete.

Como ejemplo, aquí está el manifiesto del paquete para un paquete ficticio llamado foo_core .

<package format="2">
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
  This package provides foo capability.
  </description>
  <maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
  <license>BSD</license>
</package>

Dependencias

El manifiesto del paquete con etiquetas mínimas no especifica ninguna dependencia de otros paquetes. Los paquetes pueden tener seis tipos de dependencias:

* Documentation Tool Dependencies (Dependencias de herramientas de documentación) especifican las herramientas de documentación que este paquete necesita para generar documentación.

Estos seis tipos de dependencias se especifican mediante las siguientes etiquetas respectivas:

Todos los paquetes tienen al menos una dependencia, una dependencia de la herramienta de compilación en catkin, como muestra el siguiente ejemplo.

<package format="2">
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
    This package provides foo capability.
  </description>
  <maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>
</package>

Un ejemplo más realista que especifica las dependencias de compilación, ejecución, prueba y documentación podría verse de la siguiente manera.

<package format="2">
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
    This package provides foo capability.
  </description>
  <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
  <license>BSD</license>

  <url>http://ros.org/wiki/foo_core</url>
  <author>Ivana Bildbotz</author>

  <buildtool_depend>catkin</buildtool_depend>

  <depend>roscpp</depend>
  <depend>std_msgs</depend>

  <build_depend>message_generation</build_depend>

  <exec_depend>message_runtime</exec_depend>
  <exec_depend>rospy</exec_depend>

  <test_depend>python-mock</test_depend>

  <doc_depend>doxygen</doc_depend>
</package>

Se pueden encontrar más detalles sobre las dependencias en los documentos de la API catkinaquí.

Metapaquetes

A menudo es conveniente agrupar varios paquetes como un único paquete lógico. Esto se puede lograr a través de metapaquetes (Metapackages). Un metapaquete es un paquete normal con la siguiente etiqueta de exportación en package.xml:

 <export>
   <metapackage />
 </export>

Aparte de una dependencia requerida de <buildtool_depends> en catkin, los metapaquetes solo pueden tener dependencias de ejecución en los paquetes que agrupan.

Además, un metapaquete tiene un archivo CMakeLists.txt repetitivo requerido:

cmake_minimum_required(VERSION 2.8.3)
project(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()

Nota: reemplace <PACKAGE_NAME> con el nombre del metapaquete (metapackage).

Etiquetas adicionales

Formato 1 (Legacy)

Los paquetes de catkin más antiguos usan el formato 1. Si la etiqueta <package> no tiene el atributo format, es un paquete de formato 1. Utilice el formato 2 para paquetes nuevos.

El formato de package.xml es sencillo.

Estructura básica

Cada archivo package.xml tiene la etiqueta <package> como etiqueta raíz en el documento.

<package>

</package>

Etiquetas requeridas

Hay un conjunto mínimo de etiquetas que deben anidarse dentro de la etiqueta <package> para completar el manifiesto del paquete.

* <name>: el nombre del paquete * <version>: el número de versión del paquete (se requiere que sean tres números enteros separados por puntos) * <description>: una descripción del contenido del paquete * <maintainer>: el nombre de las personas que mantienen el paquete * <licencia>: las licencias de software (por ejemplo, GPL, BSD, ASL) bajo las cuales se publica el código.

Como ejemplo, aquí está el manifiesto del paquete para un paquete ficticio llamado foo_core .

<package>
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
  This package provides foo capability.
  </description>
  <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
  <license>BSD</license>
</package>

Construir, ejecutar y probar dependencias

El manifiesto del paquete con etiquetas mínimas no especifica ninguna dependencia de otros paquetes. Los paquetes pueden tener cuatro tipos de dependencias:

Estos cuatro tipos de dependencias se especifican mediante las siguientes etiquetas respectivas:

Todos los paquetes tienen al menos una dependencia, una dependencia de la herramienta de compilación en catkin, como muestra el siguiente ejemplo.

<package>
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
    This package provides foo capability.
  </description>
  <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>
</package>

Un ejemplo más realista que especifica las dependencias de compilación, tiempo de ejecución y prueba podría tener el siguiente aspecto.

<package>
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
    This package provides foo capability.
  </description>
  <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
  <license>BSD</license>

  <url>http://ros.org/wiki/foo_core</url>
  <author>Ivana Bildbotz</author>

  <buildtool_depend>catkin</buildtool_depend>

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

  <run_depend>message_runtime</run_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>std_msgs</run_depend>

  <test_depend>python-mock</test_depend>
</package>

Se pueden encontrar más detalles sobre las dependencias aquí.

Metapaquetes

A menudo es conveniente agrupar varios paquetes como un único paquete lógico. Esto se puede lograr a través de 'metapaquetes' . Un metapaquete (Metapackages) es un paquete normal con la siguiente etiqueta de exportación en package.xml:

 <export>
   <metapackage />
 </export>

Aparte de una dependencia requerida de <buildtool_depends> en catkin, los metapaquetes solo pueden tener dependencias de ejecución en los paquetes que agrupan.

Además, un metapaquete tiene un archivo CMakeLists.txt repetitivo requerido:

cmake_minimum_required(VERSION 2.8.3)
project(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()

Nota: reemplace <PACKAGE_NAME> por el nombre del metapaquete (metapackage).

El metapaquete ahora tiene archivos CMakeLists.txt después de una discusión sobre la instalación de los archivos package.xml en:

https://groups.google.com/forum/#!msg/ros-sig-buildsystem/mn-VCkl2OHk/dUsHBBjyK30J

Así que ahora los archivos package.xml para los metapaquetes están instalados, pero el requisito de que otros paquetes no dependan de los metapaquetes aún se aplica al requerir que los usuarios no se desvíen del código repetitivo CMakeLists.txt sugerido.

Etiquetas Adicionales

Para mas información vea http://ros.org/reps/rep-0127.html


2022-05-28 12:34