[Documentation] [TitleIndex] [WordIndex

Utilisation de roscreate

Pour créer un package, la commande roscreate-pkg permet de créer un nouveau package au format ROS.

Tous les packages ROS sont constitués d'un certain nombre de fichiers, toujours sur le même modèle : manifests, CMakeLists.txt, mainpage.dox, et Makefiles. La commande roscreate-pkg simplifie les nombreuses étapes du processus laborieux de création à la main d'un package, et évite les erreurs courantes que l'on aurait eues en éditant à la main les fichiers de build et les manifestes correspondants.

Pour créer un nouveau package dans le répertoire courant, on peut taper:

# roscreate-pkg [package_name]

Mais on peut aussi préciser les dépendances de ce package par la commande:

# roscreate-pkg [package_name] [depend1] [depend2] [depend3]

Creation d'un nouveau package ROS

Maintenant nous allons nous rendre dans notre 'home' ou notre répertoire projet, pour créer un package beginner_tutorials que nous ferons dépendre de std_msgs, roscpp, and rospy, qui sont des packages ROS courants.

Pour se rendre dans le dossier ~/fuerte_workspace/sandbox on peut faire:

$ cd ~/fuerte_workspace/sandbox

Mais, pour les versions ROS Fuerte ou ultérieures, vous pouvez plus simplement faire:

$ roscd
$ cd sandbox

A partir de là, créez votre package:

$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp

Vous obtiendrez une sortie ressemblant à ceci :

Vous voudrez sûrement passer un moment à regarder plus attentivement le fichier beginner_tutorials/manifest.xml. Les fichiers manifests jouent un rôle important pour ROS car ils définissent comment les packages sont construits, lancés et documentés.

Vérifions que ROS trouve bien notre nouveau package. Il est souvent utile d'appeler rospack profile après toute modification au 'path' pour s'assurer que les nouveaux chemins des répertoires sont bien trouvés:

$ rospack profile
$ rospack find beginner_tutorials 

En cas d'erreur, cela implique que ROS ne parvient pas à trouver le nouveau package, ce qui provient probablement d'un problème avec la variable ROS_PACKAGE_PATH. Reportez-vous bien aux instructions d'installation de ROS, que celle-ci ait été faite depuis un repository SVN ou à partir d’exécutables binaires déjà compilés pour vous.

Dans le cas où votre nouveau package de trouve à un emplacement situé en dehors des chemins déjà déclarés pour des packages existants, il faudra amender votre adapter d'environnement ROS_PACKAGE_PATH pour y ajouter le nouveau chemin.

Ensuite, essayez de sourcer à nouveau votre setup.sh dans votre dossier fuerte_workspace.

Essayons d'aller dans le dossier du package.

$ roscd beginner_tutorials 
$ pwd

Dépendances de premier ordre du package

Lorsque nous avons appelé roscreate-pkg précédemment, nous avons précisé quelques dépendances de packages. On peut refaire une passe sur ces dépendances de premier ordre avec l'outil rospack .

(9 Jan 2013) Il y a un bug reporté et déjà corrigé dans rospack en version groovy; cette correction peut prendre un certain temps à se propager dans les packages. Si vous observer un problème similaire à celui-ci avec la commande suivante, vous pouvez sauter à la commande qui suit.

$ rospack depends1 beginner_tutorials 

Comme vous pouvez le constater, rospack rend éxactement la même liste de dépendances que celle que nous avions fournie avec roscreate-pkg. Ces dépendances sont enregistrées au niveau du fichiher manifest du package. Allez jeter un œil à ce fichier manifest.

$ roscd beginner_tutorials
$ cat manifest.xml

Dépendances indirectes du package

Dans la plupart des cas, chaque dépendance aura aussi d'autres dépendances. Par exemple, rospy a d'autres dépendances.

(9 Jan 2013) Il y a un bug reporté et déjà corrigé dans rospack en version groovy; cette correction peut prendre un certain temps à se propager dans les packages. Si vous observer un problème similaire à celui-ci avec la commande suivante, vous pouvez sauter à la commande qui suit.

$ rospack depends1 rospy

Un même package peut ainsi avoir un certain nmbre de dépendances indirectes. Par chance, rospack permet de déterminer de façon récursive toutes les dépendances filles.

$ rospack depends beginner_tutorials

Note: en version Fuerte, la liste est bien plus courte:

Librairies des clients ROS

On peut se demander ce que sont ces dépendances rospy et roscpp dans l'exmple précédent. Ces librairies rospy et roscppsont en fait les Client Libraries. Ces librairies client permettent aux différents langages de programmation à communiquer dans ROS. rospy est la librairie client pour Python. roscpp est la librairie client pour le C++.

En résumé

Revenos sur quelques commandes que nous avons utilisées ici:


2022-05-28 12:36