ALGORITHMES MULTI-AGENTS ROBOWORKS Robofleet
Caractéristiques
- Nom du produit : ROBOWORKS
- Version: 20240501
- Préparé par : Wayne Liu et Janette Lin
- Date: 1 Mai 2024
Informations sur le produit
ROBOWORKS est un système multi-agents qui permet la mise en œuvre de différents algorithmes de coordination et de communication des robots.
FAQ
Q : Que dois-je faire si le robot ne peut pas se connecter automatiquement au Wifi ?
R : Si le robot ne parvient pas à se connecter automatiquement, essayez de débrancher et de rebrancher la carte réseau et essayez de vous reconnecter.
RÉSUMÉ
Ce document explique principalement l'utilisation du package de fonctions de formation multi-robot nommé wheeltec_multi.
Ce document est divisé en quatre parties :
- La première partie porte principalement sur l’introduction de la méthode de formation multi-robots ;
- la deuxième partie décrit principalement les paramètres de communication multi-machine ROS, y compris la communication multi-machine de construction ROS et les problèmes qui peuvent être rencontrés dans le processus de communication ROS ;
- la troisième partie décrit principalement les étapes de fonctionnement de la synchronisation temporelle multi-machines ;
- la quatrième partie expose l’utilisation spécifique du package de fonctions de formation multi-machines.
L'objectif de ce document est une introduction aux systèmes robotiques multi-agents et permet aux utilisateurs de démarrer rapidement le projet de formation multi-robot.
INTRODUCTION AUX ALGORITHMES MULTI-AGENTS
Algorithmes de formation multi-agents
Ce package ROS présente un problème typique de multi-agents en contrôle collaboratif lors d'un entraînement de formation. Ce tutoriel pose les bases d'un développement futur sur ce sujet. L'algorithme de contrôle de formation fait référence à un algorithme qui contrôle plusieurs agents pour former une formation spécifique afin d'effectuer une tâche. La collaboration fait référence à la coopération entre plusieurs agents utilisant une certaine relation de contrainte pour terminer une tâche. Prenons l'entraînement de formation multi-robot comme exempleampLe terme collaboration signifie que plusieurs robots forment ensemble une formation souhaitée. Son essence est une certaine relation mathématique qui est satisfaite entre les positions de chaque robot. Les méthodes de formation sont principalement divisées en contrôle de formation centralisé et contrôle de formation distribué. Les méthodes de contrôle de formation centralisé comprennent principalement la méthode de structure virtuelle, la méthode de théorie graphique et la méthode prédictive du modèle. Les méthodes de contrôle de formation distribuées comprennent principalement une méthode leader-follower, une méthode basée sur le comportement et une méthode de structure virtuelle.
Ce package ROS applique la méthode leader-follower dans la méthode de contrôle de formation distribuée pour exécuter la conduite de formation multi-robot. Un robot de la formation est désigné comme le leader et les autres robots sont désignés comme esclaves pour suivre le leader. L'algorithme utilise la trajectoire de mouvement du robot leader pour définir les coordonnées à suivre par les robots suivants avec une certaine direction et une certaine vitesse. En corrigeant les écarts de position par rapport aux coordonnées de suivi, les suiveurs finiront par réduire à zéro l'écart entre le suiveur et les coordonnées de suivi attendues afin d'atteindre les objectifs de la conduite de formation. De cette façon, l'algorithme est relativement moins compliqué.
Algorithmes d'évitement d'obstacles
Un algorithme courant d'évitement d'obstacles est la méthode du champ potentiel artificiel. Le mouvement du robot dans un environnement physique est considéré comme un mouvement dans un champ de force artificiel virtuel. L'obstacle le plus proche est identifié par LiDAR. L'obstacle fournit un champ de force répulsive pour générer une répulsion vers le robot et le point cible fournit un champ gravitationnel pour générer une force gravitationnelle vers le robot. De cette façon, il contrôle le mouvement du robot sous l'action combinée de la répulsion et de l'attraction.
Ce package ROS est une amélioration basée sur la méthode du champ potentiel artificiel. Tout d'abord, l'algorithme de formation calcule la vitesse linéaire et angulaire du suiveur esclave. Ensuite, il augmente ou diminue la vitesse linéaire et angulaire en fonction des exigences d'évitement d'obstacle. Lorsque la distance entre le suiveur esclave et l'obstacle est plus proche, la force de répulsion de l'obstacle sur le suiveur esclave est plus grande. Pendant ce temps, le changement de la vitesse linéaire et les variations de vitesse angulaire sont plus importantes. Lorsque l'obstacle est plus proche de l'avant du suiveur esclave, la répulsion de l'obstacle sur le suiveur esclave devient plus grande (la répulsion frontale est la plus grande et la répulsion latérale est la plus petite). En conséquence, les variations de la vitesse linéaire et de la vitesse angulaire sont plus importantes. Grâce à la méthode du champ potentiel artificiel, il améliore une solution lorsqu'un robot pourrait cesser de répondre devant un obstacle. Cela permet de mieux éviter les obstacles.
CONFIGURATION DE COMMUNICATION MULTI-AGENTS
La communication multi-agent est l'une des étapes clés pour compléter une formation multi-robot. Lorsque les positions relatives de plusieurs robots sont inconnues, les robots doivent partager les informations des uns et des autres via la communication pour faciliter l'établissement de connexions. L'architecture distribuée ROS et les communications réseau sont très puissantes. Elles sont non seulement pratiques pour la communication inter-processus, mais également pour la communication entre différents appareils. Grâce à la communication réseau, tous les nœuds peuvent s'exécuter sur n'importe quel ordinateur. Les tâches principales telles que le traitement des données sont effectuées côté hôte. Les machines esclaves sont chargées de recevoir les données environnementales collectées par divers capteurs. L'hôte ici est le gestionnaire qui exécute le nœud maître dans ROS. Le cadre de communication multi-agent actuel utilise un gestionnaire de nœuds et un gestionnaire de paramètres pour gérer les communications entre plusieurs robots.
Les étapes pour mettre en place des communications multi-agents
- Configurer les contrôles ROS dans le même réseau
- Il existe 2 façons de configurer les contrôles ROS maître/esclave sous le même réseau.
Option 1 :
L'hôte maître crée un réseau Wi-Fi local en exécutant le gestionnaire de nœuds maître. En général, l'un des robots désignés comme maître crée ce réseau Wi-Fi. D'autres robots ou machines virtuelles rejoignent ce réseau Wi-Fi en tant qu'esclaves.
Option 2 :
Le réseau Wi-Fi local est fourni par un routeur tiers en tant que centre de relais d'informations. Tous les robots sont connectés au même routeur. Le routeur peut également être utilisé sans connexion Internet. Sélectionnez l'un des robots comme maître et exécutez le gestionnaire de nœuds maître. Les autres robots sont désignés comme esclaves et exécutent le gestionnaire de nœuds maître à partir du maître.
Le choix de l'option à choisir dépend des exigences de votre projet. Si le nombre de robots devant communiquer n'est pas important, l'option 1 est recommandée car elle permet de réduire les coûts et est facile à configurer. Lorsque le nombre de robots est important, l'option 2 est recommandée. La contrainte sur la puissance de calcul du contrôle maître ROS et la bande passante Wi-Fi embarquée limitée peuvent facilement provoquer des retards et des interruptions du réseau. Un routeur peut facilement résoudre ces problèmes. Veuillez noter que lors de l'exécution d'une communication multi-agent, si la machine virtuelle est utilisée comme esclave ROS, son mode réseau doit être défini sur le mode pont.
Configurer les variables d'environnement maître/esclave
Une fois que tous les maîtres ROS sont tous dans le même réseau, les variables d'environnement pour la communication multi-agent doivent être définies. Cette variable d'environnement est configurée dans le fichier .bashrc du répertoire principal. Exécutez la commande gedit ~/.bashrc pour la lancer. Veuillez noter que les fichiers .bashrc du maître et de l'esclave dans la communication multi-agent doivent être configurés. Ce qui doit être modifié, ce sont les adresses IP à la fin du fichier. Les deux lignes sont ROS_MASTER_URI et ROS_HOSTNAME, comme indiqué dans la Figure 2-1-4. ROS_MASTER_URI et ROS_HOSTNAME de l'hôte ROS sont tous deux des IP locales. ROS_MASTER_URI dans le fichier .bashrc de l'esclave ROS doit être remplacé par l'adresse IP de l'hôte tandis que ROS_HOSTNAME reste une adresse IP locale.
La communication multi-machine ROS n'est pas limitée par la version de publication de ROS. Dans le cadre de la communication multi-machine, il convient de tenir compte des éléments suivants :
- Le fonctionnement du programme esclave ROS dépend du programme maître ROS du périphérique maître ROS. Le programme maître ROS doit d'abord être lancé sur le périphérique maître avant d'exécuter le programme esclave sur le périphérique esclave.
- Les adresses IP des machines maître et esclave en communication multi-machines doivent se trouver sur le même réseau. Cela signifie que l'adresse IP et le masque de sous-réseau se trouvent sur le même réseau.
- Il n'est pas recommandé d'utiliser ROS_HOSTNAME dans le fichier de configuration de l'environnement .bashrc en localhost. Il est recommandé d'utiliser une adresse IP spécifique.
- Dans le cas où l'adresse IP de l'esclave n'est pas définie correctement, l'appareil esclave peut toujours accéder au maître ROS mais ne peut pas saisir les informations de contrôle.
- Si la machine virtuelle participe à la communication multi-agent, son mode réseau doit être défini sur le mode pont. L’IP statique ne peut pas être sélectionnée pour la connexion réseau.
- La communication multi-machines ne peut pas view ou abonnez-vous à des sujets de type données de message qui n'existent pas localement.
- Vous pouvez utiliser la démo de simulation Little Turtle pour vérifier si la communication entre les robots réussit :
- a. Fuyez le maître
- rescore #lancer les services ROS
- tortues à rostre turtlesim_node #interface de lancement des tortues
- b. Fuyez l'esclave
- relancer les tortues turtle_teleop_key #lancer le nœud de contrôle du clavier pour les tortues
- a. Fuyez le maître
Si vous pouvez manipuler les mouvements de la tortue depuis le clavier de l'esclave, cela signifie que la communication maître/esclave a été établie avec succès.
Connexion Wi-Fi automatique dans ROS
Les procédures ci-dessous expliquent comment configurer le robot pour se connecter automatiquement au réseau hôte ou au réseau du routeur.
Configuration automatique de la connexion Wi-Fi pour Jetson Nano
- Connectez Jetson Nano via l'outil de télécommande VNC ou directement à l'écran de l'ordinateur. Cliquez sur l'icône Wi-Fi dans le coin supérieur droit, puis cliquez sur « Modifier les connexions ».
- Cliquez sur le bouton + dans Connexions réseau :
- Dans la fenêtre « Choisir un type de connexion », cliquez sur le menu déroulant et cliquez sur le bouton « Créer… » :
- Dans le Panneau de configuration, cliquez sur l'option Wi-Fi. Saisissez le nom du Wi-Fi auquel vous souhaitez vous connecter dans les champs « Nom de connexion » et SSID. Sélectionnez « Client » dans le menu déroulant « Mode » et sélectionnez « wlan0 » dans le menu déroulant « Appareil ».
- Dans le Panneau de configuration, cliquez sur l'option « Général » et cochez « Se connecter automatiquement à ce réseau… ». Définissez la priorité de connexion sur 1 dans l'option « Priorité de connexion pour l'activation automatique ». Cochez l'option « Tous les utilisateurs peuvent se connecter à ce réseau ». Lorsque l'option est définie sur 0 dans « Priorité de connexion pour l'activation automatique » pour un autre réseau Wi-Fi, cela signifie qu'il s'agit du réseau Wi-Fi préféré dans le passé.
- Cliquez sur l'option « Sécurité Wi-Fi » dans le Panneau de configuration. Sélectionnez « WPA et WPA2 Personnel » dans le champ « Sécurité ». Saisissez ensuite le mot de passe Wi-Fi dans le champ « Mot de passe ».
Note: Si le robot ne peut pas se connecter automatiquement au réseau wi-fi après le démarrage lorsque la priorité wi-fi est réglée sur 0, cela peut être dû à un problème de signal wi-fi faible. Afin d'éviter ce problème, vous pouvez choisir de supprimer toutes les options wi-fi qui ont été connectées dans le passé. Ne conservez que le réseau wi-fi créé par l'hôte ou le routeur. Cliquez sur l'option « Paramètres IPv4 » dans le panneau de configuration des paramètres réseau. Sélectionnez l'option « Manuel » dans le champ « Méthode ». Cliquez ensuite sur « Ajouter », renseignez l'adresse IP de la machine esclave dans le champ « Adresse ». Renseignez « 24 » dans le champ « Masque de réseau ». Renseignez le segment de réseau IP dans « Passerelle ». Modifiez les trois derniers chiffres du segment de réseau IP en « 1 ». Le but principal de cette étape est de fixer l'adresse IP. Une fois cette opération effectuée pour la première fois, l’adresse IP restera inchangée lors de la connexion ultérieure au même réseau Wi-Fi.
Une fois tous les paramètres configurés, cliquez sur « Enregistrer » pour les enregistrer. Une fois l'enregistrement effectué, le robot se connectera automatiquement au réseau de l'hôte ou du routeur lorsqu'il sera mis sous tension.
Note:
- L'adresse IP définie ici doit être la même que l'adresse IP définie dans le fichier .bashrc de la section 2.1.
- L'adresse IP du maître et de chaque esclave doit être unique.
- Les adresses IP maître et esclave doivent se trouver dans le même segment de réseau.
- Vous devez attendre que l'hôte ou le routeur envoie un signal WiFi avant que le robot esclave puisse être allumé et se connecter automatiquement au réseau WiFi.
- Une fois le paramètre configuré, si le robot ne peut pas se connecter automatiquement au WiFi lorsqu'il est allumé, veuillez brancher et débrancher la carte réseau et essayer de vous connecter à nouveau.
Configuration automatique de la connexion Wi-Fi pour Raspberry Pi
La procédure pour Raspberry Pi est la même que pour Jetson Nano.
Configuration automatique de la connexion Wi-Fi pour Jetson TX1
La configuration dans Jetson TX1 est presque la même que dans Jetson Nano à une exception près : Jetson TX1 doit sélectionner le périphérique « wlan1 » dans « Périphérique » dans le panneau de configuration des paramètres réseau.
CONFIGURATION DE SYNCHRONISATION MULTI-AGENTS
Dans le projet de formation multi-agent, le paramétrage de la synchronisation temporelle multi-agent est une étape cruciale. Au cours du processus de formation, de nombreux problèmes seront causés par l'heure système asynchrone de chaque robot. La synchronisation temporelle multi-agent est divisée en deux situations, à savoir la situation dans laquelle les robots maître et esclave sont connectés au réseau et la situation dans laquelle les deux sont déconnectés du réseau.
Connexion réseau maître/esclave réussie
Une fois la communication multi-agent configurée, si les machines maître et esclave parviennent à se connecter au réseau, elles synchroniseront automatiquement l'heure du réseau. Dans ce cas, aucune autre action n'est requise pour réaliser la synchronisation de l'heure.
Dépannage des déconnexions réseau
Une fois la communication multi-agent configurée, si les appareils maître et esclave ne parviennent pas à se connecter au réseau, il est nécessaire de synchroniser manuellement l'heure. Nous utiliserons la commande date pour terminer le réglage de l'heure.
Tout d’abord, installez l’outil de terminaison. À partir de l'outil de terminaison, utilisez l'outil de fractionnement de fenêtre pour placer les terminaux de contrôle du maître et de l'esclave dans la même fenêtre de terminal (cliquez avec le bouton droit pour définir une fenêtre divisée et connectez-vous aux machines maître et esclave par ssh dans différentes fenêtres) .
- sudo apt-get install terminator # Téléchargez Terminator pour diviser la fenêtre du terminal
Cliquez sur le bouton en haut à gauche, sélectionnez l'option [Diffusion à tous]/[Diffusion à tous] et entrez la commande suivante. Utilisez ensuite l'outil de terminaison pour définir la même heure pour le maître et l'esclave.
- sudo date -s « 2022-01-30 15:15:00 » # Configuration manuelle de l'heure
FORFAIT ROS MULTI-AGENTS
Présentation du package ROS
Configurer le nom de l'esclave
Dans le package de fonctions wheeltec_multi, il est nécessaire de définir un nom unique pour chaque robot esclave afin d'éviter les erreurs. Par exempleample, n° 1 pour slave1 et n° 2 pour slave2, etc. Le but de définir des noms différents est de regrouper les nœuds en cours d'exécution et de les distinguer par des espaces de noms différents. Par exempleample, le sujet radar de l'esclave 1 est/slave1/scan, et le nœud LiDAR de l'esclave 1 est/slave1/laser.
Configurer les coordonnées de l'esclave
Le package wheeltec_multi peut implémenter des formations personnalisées. Lorsque des formations différentes sont requises, il suffit de modifier les coordonnées souhaitées des robots esclaves. Slave_x et slave_y sont les coordonnées x et y de l'esclave avec le maître comme point de référence d'origine. L'avant du maître est la direction positive de la coordonnée x et le côté gauche est la direction positive de la coordonnée y. Une fois le réglage terminé, une coordonnée TF slave1 sera émise comme coordonnée attendue de l'esclave. S'il y a un maître et deux esclaves, la formation suivante peut être définie :
- Formation horizontale : Vous pouvez définir les coordonnées de l'esclave de gauche sur slave_x:0, slave_y: 0.8, et les coordonnées de l'esclave de droite sur slave_x:0, slave_y:-0.8.
- Formation de colonnes : les coordonnées d'un esclave peuvent être définies sur : slave_x:-0.8, slave_y:0, et les coordonnées de l'autre esclave peuvent être définies sur : slave_x:-1.8, slave_y:0.
- Formation triangulaire : les coordonnées d'un esclave peuvent être définies sur : slave_x : -0.8, slave_y : 0.8, et les coordonnées de l'autre esclave peuvent être définies sur : slave_x : -0.8, slave_y : -0.8.
D'autres formations peuvent être personnalisées selon les besoins.
Note:
- La distance recommandée entre les deux robots est fixée à 0.8, et il est recommandé de ne pas être inférieure à 0.6. Il est recommandé de régler la distance entre les esclaves et le maître en dessous de 2.0. Plus on s'éloigne du maître, plus la vitesse linéaire de l'esclave est grande lorsque le maître tourne. En raison de la limitation de la vitesse maximale, la vitesse de l'esclave s'écartera si elle ne répond pas aux exigences. La formation de robots deviendra chaotique.
Initialisation de la position de l'esclave
- La position initiale de l'esclave est par défaut aux coordonnées attendues. Avant d'exécuter le programme, placez simplement le robot esclave à proximité de ses coordonnées attendues pour terminer l'initialisation. Cette fonction est implémentée par le nœud pose_setter dans le fichier nommé turn_on_wheeltec_robot.launch dans le package wheeltec_multi, comme illustré dans la Figure 4-1-3.
Si l'utilisateur souhaite personnaliser la position initiale de l'esclave, il lui suffit de définir les valeurs slave_x et slave_y comme indiqué dans la figure 4-1-4 dans wheeltec_slave.launch. Les valeurs slave_x et slave_y seront transmises à turn_on_wheeltec_robot.launch et affectées au nœud pose_setter. Placez simplement le robot dans une position personnalisée avant d'exécuter le programme.
Configuration de la position
Dans une formation multi-agent, le premier problème à résoudre est le positionnement du maître et de l'esclave. Le maître construira d'abord une carte 2D. Après avoir créé et enregistré la carte, exécutez le package de navigation 2D et utilisez l'algorithme de positionnement adaptatif de Monte Carlo (positionnement amcl) dans le package de navigation 2D pour configurer le positionnement du maître. Étant donné que le maître et les esclaves sont dans le même réseau et partagent le même gestionnaire de nœuds, le maître a lancé la carte à partir du package de navigation 2D, tous les esclaves peuvent utiliser la même carte sous le même gestionnaire de nœuds. Par conséquent, l'esclave n'a pas besoin de créer une carte. Dans wheeltec_slave.launch, exécutez le positionnement Monte Carlo (positionnement amcl), les esclaves peuvent configurer leurs positions en utilisant la carte créée par le maître.
Comment créer et maintenir la formation
Dans le processus de déplacement de la formation, le mouvement du maître peut être contrôlé par Rviz, clavier, télécommande et autres méthodes. L'esclave calcule sa vitesse via le nœud slave_tf_listener afin de contrôler son mouvement et d'atteindre l'objectif de la formation. Le nœud slave_tf_listener limite la vitesse de l'esclave pour éviter une vitesse excessive par le calcul du nœud, ce qui provoquerait une série d'impacts. La valeur spécifique peut être modifiée dans wheeltec_slave.launch.
Les paramètres pertinents de l'algorithme de formation sont les suivants :
Informations sur l'évitement des obstacles
Dans une formation multi-agent, le maître peut utiliser le nœud move_base pour terminer l'évitement des obstacles. Cependant, l'initialisation de l'esclave n'utilise pas le nœud move_base. À ce stade, le nœud multi_avoidance doit être appelé dans le programme esclave. Le nœud d'évitement d'obstacles est activé par défaut dans le package. Si nécessaire, l'évitement peut être défini sur « false » pour désactiver le nœud d'évitement d'obstacles.
Certains paramètres pertinents du nœud d'évitement d'obstacles sont présentés dans la figure ci-dessous, où safe_distance est la limite de distance de sécurité de l'obstacle et danger_distance est la limite de distance dangereuse de l'obstacle. Lorsque l'obstacle est à une distance de sécurité et à une distance de danger, l'esclave ajuste sa position pour éviter l'obstacle. Lorsque l'obstacle est en danger, l'esclave s'éloigne de l'obstacle.
Procédure d'opération
Entrez la commande d'exécution
Préparatifs avant de commencer la formation multi-agents :
- Le maître et l'esclave se connectent au même réseau et établissent correctement la communication multi-agent
- Le maître construit une carte 2D à l'avance et l'enregistre
- Le maître est placé au point de départ de la carte, et l'esclave est placé près de la position d'initialisation (la position de formation d'esclave par défaut)
- Après vous être connecté à distance à Jetson Nano/Raspberry Pi, effectuez la synchronisation de l'heure.
sudo date -s « 2022/04/01 15:15:00 »
- Étape 1:Ouvrez une carte 2D à partir du maître.
roslaunch turn_on_wheeltec_robot navigation.launch
- Étape 2:Exécutez le programme de formation à partir de tous les esclaves.
roslaunch wheeltec_multi wheeltec_slave.launch
- Étape 3:Ouvrez le nœud de contrôle du clavier à partir du maître ou utilisez le joystick pour contrôler à distance le mouvement du maître.
relancer wheeltec_robot_rc keyboard_teleop.launch
- Étape 4 : (Facultatif) Observez les mouvements du robot depuis Rviz.
rviz
Note:
- Assurez-vous de terminer l'opération de synchronisation de l'heure avant d'exécuter le programme.
- Lors du contrôle du maître d'une formation multi-agents, la vitesse angulaire ne doit pas être trop rapide. La vitesse linéaire recommandée est de 0.2 m/s, le degré de vitesse angulaire étant inférieur à 0.3 rad/s. Lorsque le maître effectue un virage, plus l'esclave est éloigné du maître, plus la vitesse linéaire requise est élevée. En raison de la limite de vitesse linéaire et de vitesse angulaire dans le package, lorsque la voiture esclave ne peut pas atteindre la vitesse requise, la formation sera chaotique. Dans l'ensemble, une vitesse linéaire excessive peut facilement endommager le robot.
- Lorsque le nombre d'esclaves est supérieur à un, en raison de la bande passante Wi-Fi embarquée limitée de l'hôte ROS, il est facile de provoquer des retards importants et une déconnexion de la communication multi-agent. L'utilisation d'un routeur peut résoudre ce problème.
- L'arbre TF de la formation multi-robots (2 esclaves) est : rqt_tf_tree
- Le diagramme de relation entre les nœuds de la formation multi-robots (2 esclaves) est : rqt_graph
Documents / Ressources
![]() |
ALGORITHMES MULTI-AGENTS ROBOWORKS Robofleet [pdf] Manuel de l'utilisateur Algorithmes multi-agents Robofleet, Robofleet, Algorithmes multi-agents, Algorithmes d'agents, Algorithmes |