Aperçu rapide des concepts du système de fichiers

  • Package : Le package (ou "paquet")est l'unité de base du code ROS. Chaque package peut contenir des bibliothèques, des exécutables, des scripts ou d'autres objets.

  • Manifest (package.xml): Un manifeste est une description d'un package. Cela sert à définir les dépendances entre packages et à capturer des méta-informations sur le package comme la version, le gestionnaire, licence, etc ..

  • Stacks : Une stack (ou "pile") est une collection de packages qui forment ainsi une librairie.

  • Stack Manifest : Un manifest mais pour une stack :)

Dans un système de fichiers, il est très facile de reconnaître un package ou une stack:

  • Un package est constitué d'un répertoire avec un fichier manifest.xml.
  • Une stack est constitué d'un répertoire avec un fichier stack.xml.


filesystem_layout_fr.png

Outils système de fichiers

Le code est réparti entre de nombreux packages ROS. La navigation à l'aide des outils en ligne de commande comme ls et cd peut être très fastidieux et c'est pourquoi ROS fournit des outils pour vous aider.

Utiliser rospack

rospack et rosstack vous permet d'obtenir des informations sur les packages et les stacks. Dans ce tutoriel, nous allons seulement parler de l'option find, qui renvoie le chemin du package. Utilisation:

  • # rospack find [package_name]
    # rosstack find [stack_name]

Exemple:

  • rospack find roscpp

Devrait vous renvoyer :

  • LE_CHEMIN_DE_VOTRE_INSTALLATION/share/roscpp

Si vous avez installé ROS Groovy avec apt sur ​​Ubuntu Linux, vous verriez exactement ceci:

  • /opt/ros/groovy/share/roscpp

Utiliser roscd

roscd fait partie de la suite rosbash Il vous permet de changer de répertoire (cd) pour se placer directement dans le répertoire d'un package ou d'une stack.

Utilisation:

  • #roscd [locationname[/subdir]]

Exécuter cet exemple:

  • roscd roscpp

Pour vérifier que nous pointons maintenant sur le répertoire du package roscpp, nous allons afficher le répertoire dans lequel nous sommes en utilisant la commande Unix pwd :

  • pwd

Vous devriez avoir:

  • LE_CHEMIN_DE_VOTRE_INSTALLATION/share/roscpp

Vous pouvez voir que LE_CHEMIN_DE_VOTRE_INSTALLATION/share/roscpp est le même chemin que celui trouvé par rospack dans l'exemple précédent. Notez que ROS_PACKAGE_PATH tapez:

  • echo $ROS_PACKAGE_PATH

Votre ROS_PACKAGE_PATH doit contenir une liste de répertoires où vous avez des packages ROS, séparés par des caractères ':'. Un ROS_PACKAGE_PATH typique pourrait ressembler à ceci:

  • /opt/ros/hydro/base/install/share:/opt/ros/hydro/base/install/stacks

De même que pour d'autres variables d'environnement de type PATH, vous pouvez ajouter des répertoires supplémentaires à votre ROS_PACKAGE_PATH, chaque chemin séparés par deux points «:».

Les sous-répertoires

roscd peut également vous placer dans le sous-répertoire d'un package ou d'une stack. Essayez:

  • roscd roscpp/cmake
    pwd

Vous devriez voir:

  • LE_CHEMIN_DE_VOTRE_INSTALLATION/share/roscpp/cmake

Cas particuliers de roscd

Outre les packages et les stacks, il y a d'autres emplacements spécifiques accessibles via roscd.

roscd sans argument

roscd sans argument vous placera directement dans $ROS_WORKSPACE. Essayez ceci:

$ roscd
$ pwd

Et vous devriez avoir:

  •  /home/user/fuerte_workspace

Note: Pour les versions antérieures à Fuerte, roscd vous menait à $ROS_ROOT.

roscd log

roscd log vous emmènera dans le dossier où ROS stocke les fichiers log. Notez que si vous n'avez pas encore exécuté de programmes ROS, cela va donner un message d'erreur indiquant que le répertoire n'existe pas encore.

Si vous avez déjà exécuté un programme ROS avant, essayez:

  • roscd log

Utiliser rosls

rosls fait partie de la suite rosbash Il vous permet d'exécuter ls directement dans un package par son nom plutôt que par un chemin absolu. Utilisation:

  • # rosls [package_name[/subdir]]

Exemple:

  • rosls roscpp_tutorials

devrait vous retourner :

  • cmake  package.xml  srv

Tab Complétion

Il peut être fastidieux de taper le nom complet d'un package. Dans l'exemple précédent, roscpp_tutorials est un nom assez long. Heureusement, certains outils ROS permettent la complétion avec la touche TAB.

Commencez par taper:

  • # roscd roscpp_tut<<< maintenant appuyez sur la touche TAB >>>

Après avoir appuyé sur la touche TAB, la ligne de commande doit remplir le reste:

  • roscd roscpp_tutorials/

Cela fonctionne parce que roscpp_tutorials est actuellement le seul package ROS qui commence par roscpp_tut . Maintenant, essayez de taper:

  • # roscd tur<<< maintenant appuyez sur la touche TAB >>>

Après avoir appuyé sur la touche TAB, la ligne de commande doit se remplir autant que possible:

  • roscd turtle

Toutefois, dans ce cas, il y a plusieurs packages qui commencent par turtle. Essayez de taper TAB une seconde fois. Ceci devrait afficher tous les packages ROS qui commencent par turtle :

  • turtle_actionlib/  turtlesim/         turtle_tf/

Sur la ligne de commande, vous devriez toujours avoir:

  • roscd turtle

Maintenant, tapez un s après turtle , puis appuyez sur TAB :

  • # roscd turtles<<< maintenant appuyez sur la touche TAB >>>

Comme il n'y a qu'un seul package qui commence par 'turtles', vous devriez voir:

  • roscd turtlesim/

En résumé

Vous avez sûrement repéré la convention de nommage des outils ROS:

  • rospack = ros + pack (age)
  • roscd = ros + cd
  • rosls = ros + ls

Ce schéma de nommage est valable pour la plupart des outils ROS.

Maintenant que vous savez vous déplacer dans ROS, nous allons voir comment créer un package .

Wiki: fr/ROS/Tutorials/catkin/NavigatingTheFilesystem (last edited 2019-11-03 14:19:28 by fangorn_fr)