7.1.3 Architecture de ROS

Système de fichiers ROS

La structure du système de fichiers ROS sur le disque dur est organisée comme suit :

J3010

Code
WorkSpace --- Espace de travail personnalisé

    |--- build: Espace de compilation pour stocker le cache, la configuration et autres fichiers intermédiaires de CMake et catkin.
    |--- devel: Espace de développement pour stocker les fichiers objets compilés, y compris les en-têtes, bibliothèques dynamiques et statiques, exécutables, etc.
    |--- src: Code source

        |-- package: Paquet ROS (unité de base de ROS) contenant plusieurs nœuds, bibliothèques et fichiers de configuration. Les noms de paquets doivent être en minuscules, composés de lettres, chiffres et tirets bas.
            |-- CMakeLists.txt: Configuration des règles de compilation, y compris les fichiers source, les dépendances et les fichiers cibles.
            |-- package.xml: Informations sur le paquet telles que le nom, la version, l'auteur et les dépendances.
            |-- scripts: Répertoire pour les fichiers Python.
            |-- src: Répertoire pour les fichiers source C++.
            |-- include: Fichiers d'en-tête.
            |-- msg: Fichiers de format de communication de messages.
            |-- srv: Fichiers de format de communication de services.
            |-- action: Fichiers de format d'actions.
            |-- launch: Fichiers launch pour exécuter plusieurs nœuds en une seule fois.
            |-- config: Fichiers de configuration.

        |-- CMakeLists.txt: Configuration de base pour la compilation.

Certains de ces répertoires et fichiers ont déjà été abordés, comme la création de paquets, l'écriture de fichiers C++ et Python dans les répertoires src et scripts, et la création de fichiers launch dans le répertoire launch. Les fichiers package.xml et CMakeLists.txt ont également été configurés. Les autres répertoires seront présentés dans des tutoriels ultérieurs.

package.xml

Le fichier package.xml définit les propriétés du paquet, telles que le nom, la version, l'auteur, le mainteneur et les dépendances. Le format est le suivant :

xml
<?xml version="1.0"?>
<package format="2">
  <name>hello_world</name>
  <version>0.0.0</version>
  <description>The hello_world package</description>
  <maintainer email="xuzuo@todo.todo">xuzuo</maintainer>
  <license>TODO</license>
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>
  <export>
  </export>
</package>

CMakeLists.txt

Le fichier CMakeLists.txt est l'entrée du système de build CMake et est utilisé pour construire le paquet. Il inclut la configuration pour la compilation des fichiers C++ et Python, ainsi que la définition des dépendances.

cmake
cmake_minimum_required(VERSION 3.0.2)
project(demo01_hello_vscode)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

catkin_package(
)

include_directories(
  ${catkin_INCLUDE_DIRS}
)

add_executable(hellow src/hello.cpp)

add_dependencies(hellow ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(hellow
  ${catkin_LIBRARIES}
)

catkin_install_python(PROGRAMS
  scripts/hello.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

Commandes du système de fichiers ROS

Commandes courantes pour interagir avec le système de fichiers ROS :

  • Créer un paquet : catkin_create_pkg <package_name> <dependency_1> <dependency_2> ...
  • Installer un paquet : sudo apt install <package_name>
  • Supprimer un paquet : sudo apt purge <package_name>
  • Lister les paquets : rospack list
  • Trouver un paquet : rospack find <package_name>
  • Aller au paquet : roscd <package_name>
  • Lister les fichiers d'un paquet : rosls <package_name>
  • Rechercher un paquet : apt search <package_name>
  • Éditer un fichier de paquet : rosed <package_name> <file_name>

Exécution des commandes ROS

  • Démarrer ROS Core : roscore
  • Exécuter un nœud ROS : rosrun <package_name> <executable_file_name>
  • Lancer un fichier ROS : roslaunch <package_name> <launch_file_name>

Graphe de calcul ROS

Le graphe de calcul dans ROS représente la structure d'exécution d'un système ROS, montrant le flux de données entre les différents nœuds. Il peut être visualisé à l'aide de rqt_graph :

bash
rosrun rqt_graph rqt_graph

S'il n'est pas installé :

bash
sudo apt install ros-<distro>-rqt
sudo apt install ros-<distro>-rqt-common-plugins

Remplacez <distro> par votre version de ROS (par exemple kinetic, melodic, noetic).

Démonstration du graphe de calcul

Ensuite, nous allons démontrer le graphe de calcul à l'aide de la simulation de tortue intégrée à ROS.

  1. Exécuter l'exemple : Suivez les instructions précédentes pour lancer la simulation de la tortue.

  2. Visualiser le graphe de calcul : Ouvrez un nouveau terminal et tapez :

    bash
    rqt_graph

    ou

    bash
    rosrun rqt_graph rqt_graph

Vous verrez un graphe de topologie réseau qui affiche les relations entre les différents nœuds, semblable à l'image ci-dessous.

![Exemple de graphe de calcul](https://files.seeedstudio.com/wiki/reComputer-Jetson/beginner_images/7-Robotics/7.1-Introduction to ROS/7.1.3-ROS Architecture/images/computatioinal.png)