Partage de technologie

Apprentissage de base ROS-Gestion des opérations ROS

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Gestion des opérations ROS

1. Brève description de la gestion des opérations ROS

ROS est un framework distribué multi-processus (nœuds), une implémentation complète du système ROS :

Peut inclure plusieurs hôtes ;
Il existe plusieurs espaces de travail sur chaque hôte ;
Chaque espace de travail contient plusieurs packages de fonctions ;
Chaque package de fonctions contient plusieurs nœuds (Node) et différents nœuds ont leurs propres noms de nœud ;
Chaque nœud peut également être défini avec un ou plusieurs sujets...

Insérer la description de l'image ici
Dans un système ROS multi-niveaux, certains problèmes peuvent survenir lors de sa mise en œuvre et de sa maintenance, tels que :
1. Comment associer différents packages de fonctions ---- (package méta-fonctions)
2. Comment démarrer divers nœuds ROS ---- (fichier de lancement)
3. Comment gérer les noms en double des packages de fonctions, des nœuds, des sujets et des paramètres ---- (Résoudre le problème des noms en double)
4. Comment les nœuds sur différents hôtes communiquent ---- (communication distribuée)

Le contenu principal de ce chapitre présente les solutions aux problèmes ci-dessus dans ROS (voir la table des matières de ce chapitre). Les objectifs d'apprentissage attendus correspondent également aux problèmes ci-dessus :

  • Maîtriser la syntaxe d'utilisation des packages de méta-fonctions ;
  • Maîtriser la syntaxe d'utilisation des fichiers de lancement ;
  • Comprendre ce qu'est la couverture de l'espace de travail ROS et quels sont les risques de sécurité ;
  • Comprendre comment gérer les noms de nœuds en double ;
  • Comprendre comment gérer les sujets avec des noms en double ;
  • Comprendre comment gérer les noms de paramètres avec des noms en double ;
  • Capable de réaliser une communication distribuée ROS.

2. Package de métafonctions ROS

Scénario : L'exécution d'une fonction systématique dans ROS peut impliquer plusieurs packages fonctionnels, tels que la mise en œuvre d'un module de navigation de robot. Sous ce module, il existe différents packages fonctionnels de sous-niveaux tels que la carte, le positionnement, la planification de chemin, etc. Ainsi, lorsque l'appelant installe le module, doit-il installer chaque package de fonctions un par un ?

De toute évidence, l'installation des packages de fonctions un par un est inefficace. Dans ROS, il est possible de regrouper différents packages de fonctions dans un seul package de fonctions. Lors de l'installation d'un certain module de fonctions, il suffit d'appeler directement le package de fonctions empaqueté. Ce package est également appelé métapaquet. .

2.1 Concept

MetaPackage est un concept de système de gestion de fichiers sous Linux. Il s'agit d'un package virtuel dans ROS. Il n'a pas de contenu substantiel, mais il s'appuie sur d'autres progiciels. De cette façon, d'autres packages peuvent être combinés comme un index de répertoire d'un livre, nous disant ceci. -les packages sont dans la collection de packages et où les télécharger.

Par exemple:

  • La commande sudo apt install ros-noetic-desktop-full utilise le package de méta-fonctions lors de l'installation de ros. Ce package de méta-fonctions dépend de certains autres packages de fonctions de ROS. Lors de l'installation de ce package, les dépendances seront installées ensemble.
    Il existe également quelques MetaPackages courants : navigation moveit!

2.2 Fonction

Pour faciliter l'installation par l'utilisateur, nous n'avons besoin que de ce seul package pour organiser et installer ensemble d'autres packages logiciels associés.

2.3 Mise en œuvre

étape 1 : Première : créer un nouveau package de fonctions
étape 2 : Ensuite : modifiez package.xml, le contenu est le suivant :

<exec_depend>Packages de fonctionnalités intégrés</exec_depend>

<export>
<metapackage />
</export>
Insérer la description de l'image ici

étape 3 : Enfin : modifiez CMakeLists.txt, le contenu est le suivant :

cmake_minimum_required(VERSION 3.0.2)
projet (démo)
find_package(catkin OBLIGATOIRE)
métapaquetage catkin()

Conservez simplement les quatre lignes ci-dessus et supprimez le reste.

Référez-vous également à :
http://wiki.ros.org/catkin/package.xml#Metapackages

3. Fichier de lancement de ROS

Nous ne sommes plus étrangers à l'utilisation des fichiers de lancement. Dans le premier chapitre, nous avons introduit :

Un programme peut avoir besoin de démarrer plusieurs nœuds, comme le petit boîtier de tortue intégré de ROS. Si vous souhaitez contrôler le mouvement de la tortue, vous devez démarrer plusieurs fenêtres, en démarrant Roscore, le nœud d'interface de tortue et le nœud de contrôle du clavier. respectivement. Si rosrun est appelé à chaque fois pour démarrer un par un, c'est évidemment inefficace. Comment optimiser ?

La stratégie d'optimisation adoptée consiste à utiliser la commande roslaunch pour collecter le fichier de lancement afin de démarrer le nœud de gestion, et dans les didacticiels suivants, le fichier de lancement est également utilisé plusieurs fois.

3.1. Fichier de lancement de la gestion des nœuds ROS

3.1.1 Concept

Le fichier de lancement est un fichier au format XML qui peut démarrer plusieurs nœuds locaux et distants et définir des paramètres dans le serveur de paramètres.

3.1.2 Fonction

Simplifiez la configuration et le démarrage des nœuds et améliorez l'efficacité du démarrage des programmes ROS.

3.1.3 Utilisation

Prenons l'exemple de TurtleSim pour démontrer

étape 1. Créez un nouveau fichier de lancement
Ajoutez le répertoire de lancement sous le package de fonctions, créez un nouveau fichier xxxx.launch dans le répertoire et modifiez le fichier de lancement

<launch>
<node pkg=“turtlesim” type=“turtlesim_node” name=“myTurtle” output=“screen” />
<node pkg=“turtlesim” type=“turtle_teleop_key” name=“myTurtleContro” output=“screen” />
</launch>

étape 2. Appeler le fichier de lancement

nom du package roslaunch xxx.launch

Remarque : lorsque la commande roslaunch exécute le fichier de lancement, elle déterminera d'abord si roscore est démarré. S'il est démarré, il ne sera pas redémarré. Sinon, roscore sera automatiquement appelé.

Peut faire référence à :
http://wiki.ros.org/roslaunch/XML

3.2 balise du fichier de lancement

https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=150&spm_id_from=pageDriver&vd_source=15dd2e64f0499027ca66125b65dd2de9