Créer un espace de travail

Objectif : Créer un espace de travail et apprendre à configurer une superposition pour le développement et les tests.

Niveau du tutoriel : Débutant

Durée : 20 minutes

Arrière-plan

Un espace de travail est un répertoire contenant des packages ROS 2. Avant d’utiliser ROS 2, il est nécessaire de sourcer votre espace de travail d’installation de ROS 2 dans le terminal dans lequel vous prévoyez de travailler. Cela rend les packages de ROS 2 disponibles pour que vous puissiez les utiliser dans ce terminal.

Vous avez également la possibilité de créer une « superposition » - un espace de travail secondaire dans lequel vous pouvez ajouter de nouveaux packages sans interférer avec l’espace de travail ROS 2 existant que vous étendez, ou « sous-couche ». Votre sous-couche doit contenir les dépendances de tous les packages de votre superposition. Les packages de votre superposition remplaceront les packages de la sous-couche. Il est également possible d’avoir plusieurs couches de sous-couches et de superpositions, chaque superposition successive utilisant les packages de ses sous-couches parentes.

Conditions préalables

Tâches

1 Environnement source ROS 2

Votre installation principale de ROS 2 sera votre sous-couche pour ce didacticiel. (Gardez à l’esprit qu’une sous-couche ne doit pas nécessairement être l’installation principale de ROS 2.)

Selon la façon dont vous avez installé ROS 2 (à partir de la source ou des binaires) et la plate-forme sur laquelle vous vous trouvez, votre commande source exacte variera :

source /opt/ros/rolling/setup.bash

Consultez le guide d’installation que vous avez suivi si ces commandes ne fonctionnent pas pour vous.

2 Créer un nouveau répertoire

La meilleure pratique consiste à créer un nouveau répertoire pour chaque nouvel espace de travail. Le nom n’a pas d’importance, mais il est utile qu’il indique le but de l’espace de travail. Choisissons le nom du répertoire ros2_ws, pour « development workspace »:

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

Une autre bonne pratique consiste à placer tous les packages de votre espace de travail dans le répertoire src. Le code ci-dessus crée un répertoire src à l’intérieur de ros2_ws puis navigue dedans.

3 Cloner un exemple de dépôt

Assurez-vous que vous êtes toujours dans le répertoire ros2_ws/src avant de cloner.

Dans le reste des didacticiels pour développeurs débutants, vous créerez vos propres packages, mais pour l’instant, vous vous entraînerez à assembler un espace de travail à l’aide de packages existants.

Les packages existants que vous utiliserez proviennent du dépôt ros_tutorials (repo). Si vous avez suivi les didacticiels « Débutant : Outils CLI », vous serez familiarisé avec turtlesim, l’un des packages de ce référentiel.

Vous pouvez voir le dépôt sur GitHub.

Remarquez la liste déroulante « Branche » à gauche au-dessus de la liste des répertoires. Lorsque vous clonez ce dépôt, ajoutez l’argument -b suivi de la branche qui correspond à votre distribution ROS 2.

Dans le répertoire ros2_ws/src, exécutez la commande suivante pour la distribution que vous utilisez :

git clone https://github.com/ros/ros_tutorials.git -b rolling-devel

Maintenant ros_tutorials est cloné dans votre espace de travail. Le dépôt ros_tutorials contient le paquet turtlesim, que nous utiliserons dans le reste de ce tutoriel. Les autres packages de ce dépôt ne sont pas compilés car ils contiennent un fichier COLCON_IGNORE.

Vous avez maintenant rempli votre espace de travail avec un exemple de package, mais ce n’est pas encore un espace de travail entièrement fonctionnel. Vous devez d’abord résoudre les dépendances et créer l’espace de travail.

4 Résoudre les dépendances

Avant de créer l’espace de travail, vous devez résoudre les dépendances de package. Vous avez peut-être déjà toutes les dépendances, mais la meilleure pratique consiste à vérifier les dépendances à chaque fois que vous clonez. Vous ne voudriez pas qu’une construction échoue après une longue attente à cause de dépendances manquantes.

Depuis la racine de votre espace de travail (ros2_ws), exécutez la commande suivante :

# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd ..
rosdep install -i --from-path src --rosdistro rolling -y

Si vous avez installé ROS 2 sur Linux à partir de la source ou de l’archive « fat », vous devrez utiliser la commande rosdep à partir de leurs instructions d’installation. Voici la section from-source rosdep et la section « fat » archive rosdep.

Si vous avez déjà toutes vos dépendances, la console renverra :

#All required rosdeps installed successfully

Les packages déclarent leurs dépendances dans le fichier package.xml (vous en apprendrez plus sur les packages dans le prochain tutoriel). Cette commande parcourt ces déclarations et installe celles qui manquent. Vous pouvez en savoir plus sur rosdep dans un autre tutoriel (à venir).

5 Construire l’espace de travail avec colcon

Depuis la racine de votre espace de travail (ros2_ws), vous pouvez désormais construire vos packages à l’aide de la commande :

colcon build

La console renverra le message suivant :

Starting >>> turtlesim
Finished <<< turtlesim [5.49s]

Summary: 1 package finished [5.58s]

Note

Autres arguments utiles pour colcon build :

  • --packages-up-to construit le paquet que vous voulez, ainsi que toutes ses dépendances, mais pas tout l’espace de travail (gain de temps)

  • --symlink-install vous évite d’avoir à reconstruire chaque fois que vous modifiez des scripts python

  • --event-handlers console_direct+ affiche la sortie de la console lors de la construction (sinon elle peut être trouvée dans le répertoire log)

Une fois le build terminé, entrez ls à la racine de l’espace de travail (~/ros2_ws) et vous verrez que colcon a créé de nouveaux répertoires :

build  install  log  src

Le répertoire install est l’endroit où se trouvent les fichiers de configuration de votre espace de travail, que vous pouvez utiliser pour sourcer votre superposition.

6 Sourcez la superposition

Avant de sourcer l’overlay, il est très important que vous ouvriez un nouveau terminal, distinct de celui où vous avez construit l’espace de travail. L’approvisionnement d’une superposition dans le même terminal où vous avez construit, ou de même la construction où une superposition est sourcée, peut créer des problèmes complexes.

Dans le nouveau terminal, sourcez votre environnement ROS 2 principal en tant que « sous-couche », afin que vous puissiez créer la superposition « au-dessus » :

source /opt/ros/rolling/setup.bash

Allez à la racine de votre espace de travail :

cd ~/ros2_ws

Dans la racine, sourcez votre overlay :

. install/local_setup.bash

Note

Sourcer le local_setup de l’overlay n’ajoutera que les packages disponibles dans l’overlay à votre environnement. setup source la superposition ainsi que la sous-couche dans laquelle elle a été créée, vous permettant d’utiliser les deux espaces de travail.

Donc, sourcer le setup de votre installation principale de ROS 2, puis le local_setup de la superposition ros2_ws, comme vous venez de le faire, revient au même que de simplement sourcer le setup` de ``ros2_ws `, car cela inclut l’environnement de la sous-couche dans laquelle il a été créé.

Vous pouvez maintenant exécuter le package turtlesim à partir de l’overlay :

ros2 run turtlesim turtlesim_node

Mais comment pouvez-vous dire que c’est le turtlesim de superposition en cours d’exécution, et non le turtlesim de votre installation principale ?

Modifions turtlesim dans la superposition pour que vous puissiez voir les effets :

  • Vous pouvez modifier et reconstruire les packages dans la superposition séparément de la sous-couche.

  • La superposition a priorité sur la sous-couche.

7 Modifier la superposition

Vous pouvez modifier turtlesim dans votre superposition en éditant la barre de titre de la fenêtre turtlesim. Pour ce faire, localisez le fichier turtle_frame.cpp dans ~/ros2_ws/src/ros_tutorials/turtlesim/src. Ouvrez turtle_frame.cpp avec votre éditeur de texte préféré.

À la ligne 52, vous verrez la fonction setWindowTitle("TurtleSim");. Remplacez la valeur ”TurtleSim” par ”MyTurtleSim” et enregistrez le fichier.

Revenez au premier terminal où vous avez exécuté colcon build plus tôt et exécutez-le à nouveau.

Revenez au deuxième terminal (d’où provient la superposition) et exécutez à nouveau turtlesim :

ros2 run turtlesim turtlesim_node

Vous verrez que la barre de titre sur la fenêtre de turtlesim indique maintenant « MyTurtleSim ».

../../../_images/overlay.png

Même si votre environnement ROS 2 principal provenait précédemment de ce terminal, la superposition de votre environnement ros2_ws a priorité sur le contenu de la sous-couche.

Pour voir que votre sous-couche est toujours intacte, ouvrez un tout nouveau terminal et sourcez uniquement votre installation ROS 2. Exécutez à nouveau turtlesim :

ros2 run turtlesim turtlesim_node
../../../_images/underlay.png

Vous pouvez voir que les modifications apportées à la superposition n’ont en fait rien affecté à la sous-couche.

Résumé

Dans ce didacticiel, vous avez sélectionné votre installation principale de distribution ROS 2 comme sous-couche et créé une superposition en clonant et en créant des packages dans un nouvel espace de travail. La superposition est ajoutée au chemin et a priorité sur la sous-couche, comme vous l’avez vu avec votre tortue modifiée.

L’utilisation de superpositions est recommandée pour travailler sur un petit nombre de packages, vous n’avez donc pas besoin de tout mettre dans le même espace de travail et de reconstruire un immense espace de travail à chaque itération.

Prochaines étapes

Maintenant que vous comprenez les détails de la création, de la construction et de l’approvisionnement de votre propre espace de travail, vous pouvez apprendre à créer vos propres packages.