Resuelto: agregue archivos de servicio en setup.py ROS2

En los รบltimos aรฑos, el campo de la robรณtica ha experimentado un aumento en los avances y las tecnologรญas adoptadas. Uno de ellos es ROS2 (Robot Operating System 2), un marco de middleware de cรณdigo abierto que proporciona herramientas, bibliotecas y convenciones para desarrollar, probar y mantener aplicaciones de robots. Este artรญculo profundiza en cรณmo agregar archivos de servicio en un paquete ROS2 usando setup.py, una habilidad esencial para los desarrolladores que trabajan con esta plataforma. Comenzaremos con una breve introducciรณn, presentaremos una soluciรณn al problema, lo guiaremos a travรฉs de una guรญa paso a paso y discutiremos temas relacionados para una comprensiรณn mรกs profunda.

Configurar un archivo de servicio en el paquete ROS2 implica dos pasos principales: crear un archivo de definiciรณn de mensaje de servicio (.srv) y agregar las configuraciones necesarias en los archivos package.xml y setup.py. En este tutorial, crearemos un servicio simple que toma una cadena de entrada y devuelve la longitud de la entrada proporcionada.

Primero, preparemos nuestro espacio de trabajo. Cree un paquete ROS2 llamado "string_length_service" con el siguiente comando:

"`
ros2 paquete crear โ€“tipo de compilaciรณn ament_python string_length_service
"`

Ahora, cree un directorio llamado "srv" dentro del paquete "string_length_service" para almacenar nuestro archivo de definiciรณn de mensajes de servicio:

"`
servicio mkdir
"`

Dentro del directorio โ€œsrvโ€, cree un archivo llamado โ€œStringLength.srvโ€ con el siguiente contenido:

"`
cadena cadena_entrada
-
longitud int64
"`

En el archivo package.xml, asegรบrese de agregar las dependencias necesarias:

โ€œ`xml
std_msgs
paquetes_interfaz_servicio
ament_cmake
ament_cmake_auto
matplotlib
"`

Ahora, pasemos a la parte principal de este artรญculo: agregar archivos de servicio en setup.py. Abra el archivo "setup.py" e incluya el siguiente cรณdigo:

โ€œ`pitรณn
desde la configuraciรณn de importaciรณn de herramientas de configuraciรณn
desde glob importar glob

nombre_paquete = 'servicio_longitud_cadena'

configuraciรณn(
nombre = nombre_paquete,
versiรณn = '0.0.0',
paquetes = [nombre_paquete],
archivos_datos=[
('compartir/ament_index/resource_index/paquetes',
['recurso/' + nombre_paquete]),
('compartir/' + nombre_paquete, ['paquete.xml']),
('compartir/' + nombre_paquete, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Verdadero,
mantenedor = 'desarrollador_nombre_aquรญ',
mantenedor_email='desarrollador_email_aquรญ',
descripciรณn='Un servicio para calcular la longitud de una cadena',
licencia = 'MIT',
tests_require=['pytest'],
puntos_entrada={
'console_scripts': [
'string_length_server = ' + nombre_paquete + '.string_length_server:main',
'string_length_client = ' + nombre_paquete + '.string_length_client:main',
],
},
)
"`

Analicemos ahora quรฉ hace este cรณdigo: El archivo setup.py utiliza herramientas de configuraciรณn para distribuir y administrar nuestro paquete. La variable package_name contiene el nombre de nuestro paquete. La lista data_files especifica los archivos de recursos, paquetes.xml y servicios necesarios que se distribuirรกn junto con el paquete. install_requires enumera los paquetes necesarios y los puntos de entrada definen los archivos ejecutables de nuestro servicio. Asegรบrese de reemplazar 'developer_name_here' y 'developer_email_here' con los valores adecuados.

Usando rclpy y std_srvs

Despuรฉs de configurar los archivos de servicio en setup.py, es necesario implementar el cรณdigo del servidor y del cliente utilizando la biblioteca de cliente Python ROS2, rclpy y std_srvs para los tipos de servicio estรกndar.

Cree los archivos โ€œstring_length_server.pyโ€ y โ€œstring_length_client.pyโ€ dentro del directorio de su paquete e implemente el cรณdigo del servidor y del cliente. Puede encontrar detalles sobre cรณmo escribir cรณdigo de servidor y cliente en la documentaciรณn de ROS2.

Construyendo y probando el servicio

Finalmente, compila y prueba tu paquete usando los siguientes comandos:

"`
fuente /opt/ros/foxy/setup.bash
colcon build โ€“packages-select string_length_service
fuente de instalaciรณn/setup.bash
"`

Despuรฉs de la compilaciรณn exitosa, ejecute el servidor y el cliente usando dos terminales separadas:

"`
ros2 ejecuta string_length_service string_length_server
"`

"`
ros2 ejecuta string_length_service string_length_client
"`

Esta guรญa presentรณ una explicaciรณn detallada sobre cรณmo agregar archivos de servicio en setup.py para paquetes ROS2 mientras aborda temas relacionados como rclpy y std_srvs. Siguiendo estos pasos, podrรก crear y distribuir sus servicios ROS2 de manera eficiente y organizada, facilitando las interacciones dentro de sus aplicaciones robรณticas. ยกBuena suerte y feliz codificaciรณn!

Artรญculos Relacionados:

Deja un comentario