Résolu : ajouter des fichiers de service dans setup.py ROS2

Ces dernières années, le domaine de la robotique a connu une augmentation des progrès et des technologies adoptées. L'un d'eux est ROS2 (Robot Operating System 2), un framework middleware open source qui fournit des outils, des bibliothèques et des conventions pour développer, tester et maintenir les applications des robots. Cet article explique comment ajouter des fichiers de service dans un package ROS2 à l'aide de setup.py, une compétence essentielle pour les développeurs travaillant avec cette plateforme. Nous commencerons par une brève introduction, présenterons une solution au problème, vous guiderons à travers un guide étape par étape et discuterons de sujets connexes pour une compréhension plus approfondie.

La configuration d'un fichier de service dans le package ROS2 implique deux étapes principales : la création d'un fichier de définition de message de service (.srv) et l'ajout des configurations nécessaires dans les fichiers package.xml et setup.py. Dans ce didacticiel, nous allons créer un service simple qui prend une chaîne d'entrée et renvoie la longueur de l'entrée fournie.

Tout d’abord, préparons notre espace de travail. Créez un package ROS2 nommé « string_length_service » avec la commande suivante :

“`
ros2 pkg créer –build-type ament_python string_length_service
“`

Maintenant, créez un répertoire nommé « srv » dans le package « string_length_service » pour stocker notre fichier de définition de message de service :

“`
mkdir srv
“`

Dans le répertoire « srv », créez un fichier nommé « StringLength.srv » avec le contenu suivant :

“`
chaîne chaîne_entrée
-
longueur int64
“`

Dans le fichier package.xml, assurez-vous d'ajouter les dépendances nécessaires :

« `xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
“`

Passons maintenant à la partie principale de cet article : l'ajout de fichiers de service dans setup.py. Ouvrez le fichier « setup.py » et incluez le code suivant :

« `python
depuis la configuration de l'importation de setuptools
depuis le globe importer le globe

nom_paquet = 'string_length_service'

installation(
nom = nom_du package,
version='0.0.0′,
packages=[nom_package],
data_files=[
('share/ament_index/resource_index/packages',
['ressource/' + nom_paquet]),
('share/' + nom_paquet, ['package.xml']),
('share/' + nom_paquet, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Vrai,
mainteneur='nom_développeur_ici',
mainteneur_email='developer_email_here',
description='Un service pour calculer la longueur des chaînes',
licence='MIT',
tests_require=['pytest'],
points d'entrée={
'console_scripts' : [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + nom_package + '.string_length_client:main',
],
},
)
“`

Voyons maintenant ce que fait ce code : Le fichier setup.py utilise setuptools pour distribuer et gérer notre package. La variable package_name contient le nom de notre package. La liste data_files spécifie les fichiers de ressources, package.xml et de service nécessaires à distribuer avec le package. install_requires répertorie les packages requis et Entry_points définit les fichiers exécutables de notre service. Assurez-vous de remplacer « developer_name_here » et « developer_email_here » par les valeurs appropriées.

Utiliser rclpy et std_srvs

Après avoir configuré les fichiers de service dans setup.py, il est nécessaire d'implémenter le code serveur et client à l'aide de la bibliothèque client Python ROS2, rclpy et std_srvs pour les types de service standard.

Créez les fichiers « string_length_server.py » et « string_length_client.py » dans le répertoire de votre package et implémentez le code serveur et client. Vous pouvez trouver des détails sur la façon d'écrire du code serveur et client dans la documentation ROS2.

Construire et tester le service

Enfin, créez et testez votre package à l'aide des commandes suivantes :

“`
source /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
source install/setup.bash
“`

Une fois la compilation réussie, exécutez le serveur et le client à l'aide de deux terminaux distincts :

“`
ros2 exécute string_length_service string_length_server
“`

“`
ros2 exécute string_length_service string_length_client
“`

Ce guide a présenté une explication détaillée de l'ajout de fichiers de service dans setup.py pour les packages ROS2 tout en abordant des sujets connexes tels que rclpy et std_srvs. En suivant ces étapes, vous pouvez créer et distribuer vos services ROS2 de manière efficace et organisée, facilitant les interactions au sein de vos applications robotiques. Bonne chance et bon codage !

Articles connexes

Laisser un commentaire