ROBOWORKS Robofleet MULTI-AGENT-ALGORITHMEN
Technische Daten
- Produktname: ROBOWORKS
- Version: 20240501
- Vorbereitet von: Wayne Liu & Janette Lin
- Datum: 1 Mai 2024
Produktinformationen
ROBOWORKS ist ein Multiagentensystem, das die Implementierung verschiedener Algorithmen zur Roboterkoordination und -kommunikation ermöglicht.
FAQs
F: Was soll ich tun, wenn der Roboter keine automatische Verbindung zum WLAN herstellen kann?
A: Wenn der Roboter keine automatische Verbindung herstellt, versuchen Sie, die Netzwerkkarte aus- und wieder einzustecken und versuchen Sie dann erneut, eine Verbindung herzustellen.
ZUSAMMENFASSUNG
In diesem Dokument wird hauptsächlich die Verwendung des Funktionspakets zur Multi-Roboter-Formation mit dem Namen wheeltec_multi erläutert.
Dieses Dokument ist in vier Teile gegliedert:
- Im ersten Teil geht es vor allem um die Einführung der Multi-Roboter-Formationsmethode;
- Der zweite Teil beschreibt hauptsächlich die ROS-Einstellungen für die Kommunikation zwischen mehreren Maschinen, einschließlich der ROS-Konstruktion für die Kommunikation zwischen mehreren Maschinen und den Problemen, die bei der ROS-Kommunikation auftreten können.
- Der dritte Teil beschreibt hauptsächlich die Betriebsschritte der Zeitsynchronisierung mehrerer Maschinen.
- Im vierten Teil wird die spezifische Anwendung des Funktionspakets zur Mehrmaschinenformation erläutert.
Der Zweck dieses Dokuments besteht darin, eine Einführung in Multi-Agenten-Robotersysteme zu geben und Benutzern einen schnellen Start des Multi-Roboter-Bildungsprojekts zu ermöglichen.
EINFÜHRUNG IN MULTI-AGENT-ALGORITHMEN
Algorithmen zur Bildung mehrerer Agenten
Dieses ROS-Paket stellt ein typisches Problem von mehreren Agenten bei der kollaborativen Steuerung während einer Formationsfahrt dar. Dieses Tutorial legt den Grundstein für zukünftige Entwicklungen zu diesem Thema. Der Formationssteuerungsalgorithmus bezieht sich auf einen Algorithmus, der mehrere Agenten steuert, um eine bestimmte Formation zur Ausführung einer Aufgabe zu bilden. Kollaboration bezieht sich auf die Zusammenarbeit zwischen mehreren Agenten unter Verwendung einer bestimmten Einschränkungsbeziehung, um eine Aufgabe zu erfüllen. Nehmen wir die Formationsfahrt mehrerer Roboter als BeispielampKollaboration bedeutet, dass mehrere Roboter gemeinsam eine gewünschte Formation bilden. Ihr Wesen besteht in einer bestimmten mathematischen Beziehung, die zwischen den Positionen der einzelnen Roboter erfüllt ist. Formationsmethoden werden hauptsächlich in zentralisierte Formationssteuerung und verteilte Formationssteuerung unterteilt. Zu zentralisierten Formationssteuerungsmethoden gehören hauptsächlich die Methode der virtuellen Struktur, die Methode der grafischen Theorie und die Methode der Modellvorhersage. Zu verteilten Formationssteuerungsmethoden gehören hauptsächlich eine Leader-Follower-Methode, eine verhaltensbasierte Methode und eine Methode der virtuellen Struktur.
Dieses ROS-Paket wendet die Leader-Follower-Methode in der verteilten Formationssteuerungsmethode an, um den Formationsantrieb mit mehreren Robotern auszuführen. Ein Roboter in der Formation wird als Leader bezeichnet, und andere Roboter werden als Slaves bezeichnet, die dem Leader folgen. Der Algorithmus verwendet die Bewegungsbahn des führenden Roboters, um die Koordinaten festzulegen, denen die folgenden Roboter mit einer bestimmten Richtung und Geschwindigkeit folgen sollen. Durch die Korrektur der Positionsabweichungen von den Verfolgungskoordinaten reduzieren die Follower schließlich die Abweichung zwischen dem Follower und den erwarteten Verfolgungskoordinaten auf Null, um die Ziele des Formationsantriebs zu erreichen. Auf diese Weise ist der Algorithmus relativ weniger kompliziert.
Algorithmen zur Hindernisvermeidung
Ein gängiger Algorithmus zur Hindernisvermeidung ist die Methode des künstlichen Potentialfelds. Die Bewegung des Roboters in einer physischen Umgebung wird als Bewegung in einem virtuellen künstlichen Kraftfeld betrachtet. Das nächste Hindernis wird durch LiDAR identifiziert. Das Hindernis erzeugt ein abstoßendes Kraftfeld, um eine Abstoßung auf den Roboter zu erzeugen, und der Zielpunkt erzeugt ein Gravitationsfeld, um eine Gravitationskraft auf den Roboter zu erzeugen. Auf diese Weise wird die Bewegung des Roboters unter der kombinierten Wirkung von Abstoßung und Anziehung gesteuert.
Dieses ROS-Paket ist eine Verbesserung basierend auf der Methode des künstlichen Potentialfelds. Zuerst berechnet der Formationsalgorithmus die Linear- und Winkelgeschwindigkeit des Slave-Followers. Dann erhöht oder verringert er die Linear- und Winkelgeschwindigkeit entsprechend den Anforderungen zur Hindernisvermeidung. Je geringer die Distanz zwischen Slave-Follower und Hindernis ist, desto größer ist die Abstoßungskraft des Hindernisses auf den Slave-Follower. Gleichzeitig sind die Änderungen der Lineargeschwindigkeit und der Winkelgeschwindigkeitsschwankungen größer. Je näher das Hindernis an der Vorderseite des Slave-Followers ist, desto größer wird die Abstoßung des Hindernisses auf den Slave-Follower (die Frontalabstoßung ist am größten und die seitliche Abstoßung am geringsten). Infolgedessen sind die Schwankungen der Lineargeschwindigkeit und der Winkelgeschwindigkeit größer. Durch die Methode des künstlichen Potentialfelds wird eine Lösung verbessert, wenn ein Roboter vor einem Hindernis nicht mehr reagieren könnte. Dies dient dem Zweck einer besseren Hindernisvermeidung.
SETUP FÜR MEHRAGENTEN-KOMMUNIKATION
Die Multi-Agent-Kommunikation ist einer der wichtigsten Schritte zur Vervollständigung einer Multi-Roboter-Formation. Wenn die relativen Positionen mehrerer Roboter unbekannt sind, müssen die Roboter ihre Informationen durch Kommunikation untereinander austauschen, um den Verbindungsaufbau zu erleichtern. Die verteilte Architektur und Netzwerkkommunikation von ROS sind sehr leistungsstark. Sie ist nicht nur für die Kommunikation zwischen Prozessen praktisch, sondern auch für die Kommunikation zwischen verschiedenen Geräten. Durch die Netzwerkkommunikation können alle Knoten auf jedem Computer ausgeführt werden. Die Hauptaufgaben wie die Datenverarbeitung werden auf der Hostseite ausgeführt. Die Slave-Maschinen sind für den Empfang der von verschiedenen Sensoren erfassten Umgebungsdaten verantwortlich. Der Host ist hier der Manager, der den Master-Knoten in ROS betreibt. Das aktuelle Multi-Agent-Kommunikationsframework verwendet einen Knotenmanager und einen Parametermanager, um die Kommunikation zwischen mehreren Robotern abzuwickeln.
Die Schritte zum Einrichten der Multi-Agent-Kommunikation
- Richten Sie ROS Controls im selben Netzwerk ein
- Es gibt zwei Möglichkeiten, Master/Slave-ROS-Steuerungen im selben Netzwerk einzurichten.
Option 1:
Der Master-Host erstellt ein lokales WLAN, indem er den Master-Knotenmanager ausführt. Normalerweise erstellt einer der Roboter, der als Master bezeichnet wird, dieses WLAN-Netzwerk. Andere Roboter oder virtuelle Maschinen treten diesem WLAN-Netzwerk als Slaves bei.
Optionen 2:
Das lokale WLAN-Netzwerk wird von einem Drittanbieter-Router als Informations-Relay-Center bereitgestellt. Alle Roboter sind mit demselben Router verbunden. Der Router kann auch ohne Internetverbindung verwendet werden. Wählen Sie einen der Roboter als Master aus und führen Sie den Master-Knotenmanager aus. Die anderen Roboter werden als Slaves bezeichnet und führen den Master-Knotenmanager vom Master aus aus.
Die Entscheidung, welche Option Sie wählen, hängt von Ihren Projektanforderungen ab. Wenn die Anzahl der Roboter, die kommunizieren müssen, nicht sehr groß ist, wird Option 1 empfohlen, da sie Kosten spart und einfach einzurichten ist. Wenn die Anzahl der Roboter groß ist, wird Option 2 empfohlen. Die Einschränkung der Rechenleistung der ROS-Hauptsteuerung und die begrenzte Bandbreite des integrierten WLANs können leicht zu Verzögerungen und Netzwerkstörungen führen. Ein Router kann diese Probleme leicht beheben. Bitte beachten Sie, dass bei der Durchführung einer Multi-Agent-Kommunikation der Netzwerkmodus der virtuellen Maschine auf Bridge-Modus eingestellt werden muss, wenn sie als ROS-Slave verwendet wird.
Konfigurieren Sie Master/Slave-Umgebungsvariablen
Nachdem sich alle ROS-Master im selben Netzwerk befinden, müssen die Umgebungsvariablen für die Multi-Agent-Kommunikation festgelegt werden. Diese Umgebungsvariable wird in der .bashrc-Datei im Hauptverzeichnis konfiguriert. Führen Sie den Befehl gedit ~/.bashrc aus, um sie zu starten. Beachten Sie, dass sowohl die .bashrc-Dateien des Masters als auch die des Slaves in der Multi-Agent-Kommunikation konfiguriert werden müssen. Was geändert werden muss, sind die IP-Adressen am Ende der Datei. Die beiden Zeilen lauten ROS_MASTER_URI und ROS_HOSTNAME, wie in Abbildung 2-1-4 gezeigt. ROS_MASTER_URI und ROS_HOSTNAME des ROS-Hosts sind beide lokale IPs. ROS_MASTER_URI in der .bashrc-Datei des ROS-Slaves muss in die IP-Adresse des Hosts geändert werden, während ROS_HOSTNAME eine lokale IP-Adresse bleibt.
Die ROS-Mehrmaschinenkommunikation wird nicht durch die ROS-Release-Version eingeschränkt. Bei der Mehrmaschinenkommunikation sollte man sich folgender Dinge bewusst sein:
- Der Betrieb des ROS-Slave-Programms hängt vom ROS-Master-Programm des ROS-Master-Geräts ab. Das ROS-Master-Programm muss zuerst auf dem Master-Gerät gestartet werden, bevor das Slave-Programm auf dem Slave-Gerät ausgeführt wird.
- Bei der Kommunikation zwischen mehreren Maschinen müssen die IP-Adressen der Master- und Slave-Maschinen im selben Netzwerk liegen. Dies bedeutet, dass sich die IP-Adresse und die Subnetzmaske im selben Netzwerk befinden.
- ROS_HOSTNAME in der Umgebungskonfigurationsdatei .bashrc wird nicht empfohlen, localhost zu verwenden. Es wird empfohlen, eine bestimmte IP-Adresse zu verwenden.
- Falls die Slave-IP-Adresse nicht richtig eingestellt ist, kann das Slave-Gerät zwar weiterhin auf den ROS-Master zugreifen, aber keine Steuerinformationen eingeben.
- Wenn die virtuelle Maschine an der Multi-Agent-Kommunikation teilnimmt, muss ihr Netzwerkmodus auf Bridge-Modus eingestellt werden. Für die Netzwerkverbindung kann keine statische IP ausgewählt werden.
- Die Kommunikation mehrerer Maschinen kann nicht view oder Themen vom Nachrichtendatentyp abonnieren, die lokal nicht vorhanden sind.
- Mit der Little Turtle-Simulationsdemo können Sie überprüfen, ob die Kommunikation zwischen den Robotern erfolgreich ist:
- a. Vom Master ausführen
- rescore #launch ROS-Dienste
- Rostrum Turtles Turtlesim_node #Turtles-Schnittstelle starten
- bLauf vor dem Sklaven
- rerun turtles turtle_teleop_key #Tastatur-Steuerungsknoten für Turtles starten
- a. Vom Master ausführen
Wenn Sie die Turtle-Bewegungen über die Tastatur des Slaves steuern können, bedeutet dies, dass die Master/Slave-Kommunikation erfolgreich hergestellt wurde.
Automatische Wi-Fi-Verbindung in ROS
Die folgenden Verfahren erläutern, wie der Roboter für die automatische Verbindung mit dem Host- oder Router-Netzwerk konfiguriert wird.
Automatischer WLAN-Verbindungsaufbau für Jetson Nano
- Verbinden Sie Jetson Nano über das VNC-Remotetool oder direkt mit dem Computerbildschirm. Klicken Sie oben rechts auf das WLAN-Symbol und dann auf „Verbindungen bearbeiten“.
- Klicken Sie unter „Netzwerkverbindungen“ auf die Schaltfläche „+“:
- Klicken Sie im Fenster „Verbindungstyp auswählen“ auf das Dropdown-Menü und dann auf die Schaltfläche „Erstellen…“:
- Klicken Sie in der Systemsteuerung auf die Option WLAN. Geben Sie den WLAN-Namen für die Verbindung in die Felder „Verbindungsname“ und „SSID“ ein. Wählen Sie „Client“ im Dropdown-Menü „Modus“ und wählen Sie „wlan0“ im Dropdown-Menü „Gerät“.
- Klicken Sie in der Systemsteuerung auf die Option „Allgemein“ und aktivieren Sie „Automatisch mit diesem Netzwerk verbinden…“. Setzen Sie die Verbindungspriorität in der Option „Verbindungspriorität für automatische Aktivierung“ auf 1. Aktivieren Sie die Option „Alle Benutzer dürfen sich mit diesem Netzwerk verbinden“. Wenn die Option in der Option „Verbindungspriorität für automatische Aktivierung“ für anderes WLAN auf 0 eingestellt ist, bedeutet dies, dass dies in der Vergangenheit das bevorzugte WLAN-Netzwerk war.
- Klicken Sie in der Systemsteuerung auf die Option „WLAN-Sicherheit“. Wählen Sie im Feld „Sicherheit“ die Option „WPA & WPA2 Personal“. Geben Sie anschließend das WLAN-Passwort im Feld „Passwort“ ein.
Notiz: Wenn der Roboter nach dem Booten keine automatische Verbindung zum WLAN-Netzwerk herstellen kann, wenn die WLAN-Priorität auf 0 eingestellt ist, kann dies an einem schwachen WLAN-Signal liegen. Um dieses Problem zu vermeiden, können Sie alle WLAN-Optionen löschen, mit denen in der Vergangenheit eine Verbindung hergestellt wurde. Behalten Sie nur das vom Host oder Router erstellte WLAN-Netzwerk. Klicken Sie in der Systemsteuerung für die Netzwerkeinstellungen auf die Option „IPv4-Einstellungen“. Wählen Sie im Feld „Methode“ die Option „Manuell“. Klicken Sie anschließend auf „Hinzufügen“ und geben Sie die IP-Adresse des Slave-Computers in das Feld „Adresse“ ein. Geben Sie im Feld „Netzmaske“ „24“ ein. Geben Sie bei „Gateway“ das IP-Netzwerksegment ein. Ändern Sie die letzten drei Ziffern des IP-Netzwerksegments in „1“. Der Hauptzweck dieses Schritts besteht darin, die IP-Adresse zu korrigieren. Nachdem dieser Vorgang zum ersten Mal durchgeführt wurde, bleibt die IP-Adresse bei späteren Verbindungen mit demselben WLAN unverändert.
Nachdem alle Einstellungen konfiguriert wurden, klicken Sie auf „Speichern“, um die Einstellungen zu speichern. Nach erfolgreichem Speichern verbindet sich der Roboter beim Einschalten automatisch mit dem Netzwerk des Hosts oder Routers.
Notiz:
- Die hier festgelegte IP-Adresse muss mit der in der .bashrc-Datei in Abschnitt 2.1 festgelegten IP-Adresse übereinstimmen.
- Die IP-Adresse des Masters und jedes Slaves muss eindeutig sein.
- Die Master- und Slave-IP-Adressen müssen sich im selben Netzwerksegment befinden.
- Sie müssen warten, bis der Host oder Router ein WLAN-Signal sendet, bevor der Slave-Roboter eingeschaltet werden und automatisch eine Verbindung zum WLAN-Netzwerk herstellen kann.
- Wenn der Roboter nach der Konfiguration der Einstellungen beim Einschalten keine automatische Verbindung zum WLAN herstellen kann, stecken Sie die Netzwerkkarte ein und aus und versuchen Sie erneut, eine Verbindung herzustellen.
Automatischer WLAN-Verbindungsaufbau für Raspberry Pi
Das Verfahren für Raspberry Pi ist dasselbe wie für Jetson Nano.
Automatischer WLAN-Verbindungsaufbau für Jetson TX1
Die Einrichtung im Jetson TX1 ist fast identisch mit der im Jetson Nano, mit einer Ausnahme: Im Jetson TX1 sollte in der Systemsteuerung der Netzwerkeinstellungen unter „Gerät“ das Gerät „wlan1“ ausgewählt werden.
SETUP FÜR MULTI-AGENT-SYNCHRONISATION
Beim Multi-Agent-Formationsprojekt ist die Einstellung der Multi-Agent-Zeitsynchronisierung ein entscheidender Schritt. Während des Formationsprozesses treten aufgrund der asynchronen Systemzeit jedes Roboters viele Probleme auf. Die Multi-Agent-Zeitsynchronisierung wird in zwei Situationen unterteilt, nämlich die Situation, in der sowohl der Master- als auch der Slave-Roboter mit dem Netzwerk verbunden sind, und die Situation, in der beide vom Netzwerk getrennt sind.
Erfolgreiche Master/Slave-Netzwerkverbindung
Wenn nach der Konfiguration der Multi-Agent-Kommunikation die Master- und Slave-Rechner erfolgreich eine Verbindung zum Netzwerk herstellen können, synchronisieren sie ihre Netzwerkzeit automatisch. In diesem Fall sind keine weiteren Aktionen erforderlich, um die Zeitsynchronisierung zu erreichen.
Fehlerbehebung bei Netzwerkverbindungsunterbrechungen
Wenn nach der Konfiguration der Multi-Agent-Kommunikation die Master- und Slave-Geräte keine Verbindung zum Netzwerk herstellen können, müssen sie die Zeit manuell synchronisieren. Wir verwenden den Befehl date, um die Zeiteinstellung abzuschließen.
Installieren Sie zuerst das Terminator-Tool. Verwenden Sie im Terminator-Tool das Fensteraufteilungstool, um die Steuerterminals des Masters und des Slaves in dasselbe Terminalfenster zu platzieren (klicken Sie mit der rechten Maustaste, um ein geteiltes Fenster einzurichten, und melden Sie sich per SSH in verschiedenen Fenstern bei den Master- und Slave-Rechnern an).
- sudo apt-get install terminator # Laden Sie Terminator herunter, um das Terminalfenster zu teilen
Klicken Sie oben links auf die Schaltfläche, wählen Sie die Option [An alle senden]/[Alle senden] und geben Sie den folgenden Befehl ein. Stellen Sie dann mit dem Terminator-Tool für Master und Slave die gleiche Zeit ein.
- sudo date -s „2022-01-30 15:15:00“ # Manuelle Zeiteinrichtung
MULTI-AGENT-ROS-PAKET
Einführung in das ROS-Paket
Slave-Namen einrichten
Im wheeltec_multi Funktionspaket ist es notwendig, jedem Slave-Roboter einen eindeutigen Namen zuzuweisen, um Fehler zu vermeiden. Zum Beispielample, Nr. 1 für Slave1 und Nr. 2 für Slave2 usw. Der Zweck der Festlegung unterschiedlicher Namen besteht darin, laufende Knoten zu gruppieren und sie durch unterschiedliche Namespaces zu unterscheiden. Zum Beispielample, das Radarthema von Slave 1 ist /slave1/scan und der LiDAR-Knoten von Slave 1 ist /slave1/laser.
Slave-Koordinaten einrichten
Das Paket wheeltec_multi kann benutzerdefinierte Formationen implementieren. Wenn unterschiedliche Formationen erforderlich sind, ändern Sie einfach die gewünschten Koordinaten der Slave-Roboter. Slave_x und Slave_y sind die x- und y-Koordinaten des Slaves mit dem Master als ursprünglichem Referenzpunkt. Die Vorderseite des Masters ist die positive Richtung der x-Koordinate und die linke Seite ist die positive Richtung der y-Koordinate. Nachdem die Einstellung abgeschlossen ist, wird eine TF-Koordinate Slave1 als erwartete Koordinate des Slaves ausgegeben. Wenn es einen Master und zwei Slaves gibt, kann die folgende Formation eingestellt werden:
- Horizontale Aufteilung: Sie können die Koordinaten des Slaves links auf slave_x:0, slave_y: 0.8 und die Koordinaten des Slaves rechts auf slave_x:0, slave_y:-0.8 einstellen.
- Spaltenbildung: Die Koordinaten des einen Slaves können eingestellt werden auf: slave_x:-0.8, slave_y:0, und die Koordinaten des anderen Slaves können eingestellt werden auf: slave_x:-1.8, slave_y:0.
- Dreiecksformation: Die Koordinaten eines Slaves können auf Folgendes eingestellt werden: slave_x:-0.8, slave_y: 0.8, und die Koordinaten des anderen Slaves können auf Folgendes eingestellt werden: slave_x:-0.8, slave_y:-0.8.
Andere Formationen können je nach Bedarf individuell angepasst werden.
Notiz:
- Der empfohlene Abstand zwischen den beiden Robotern beträgt 0.8 und sollte nicht unter 0.6 liegen. Der Abstand zwischen den Slaves und dem Master sollte unter 2.0 liegen. Je weiter der Slave vom Master entfernt ist, desto höher ist die lineare Geschwindigkeit des Slaves, wenn sich der Master dreht. Aufgrund der Begrenzung der Höchstgeschwindigkeit weicht die Geschwindigkeit des Slaves ab, wenn sie die Anforderungen nicht erfüllt. Die Roboterformation wird chaotisch.
Initialisierung der Slaveposition
- Die Anfangsposition des Slaves liegt standardmäßig bei den erwarteten Koordinaten. Bevor Sie das Programm ausführen, platzieren Sie den Slave-Roboter einfach in der Nähe seiner erwarteten Koordinaten, um die Initialisierung abzuschließen. Diese Funktion wird vom Knoten pose_setter in der Datei turn_on_wheeltec_robot.launch im Paket wheeltec_multi implementiert, wie in Abbildung 4-1-3 dargestellt.
Wenn der Benutzer die Anfangsposition des Slaves anpassen möchte, muss er nur die Werte „slave_x“ und „slave_y“ wie in Abbildung 4-1-4 in wheeltec_slave.launch dargestellt festlegen. Die Werte „slave_x“ und „slave_y“ werden an turn_on_wheeltec_robot.launch übergeben und dem Knoten „pose_setter“ zugewiesen. Platzieren Sie den Roboter einfach in einer benutzerdefinierten Position, bevor Sie das Programm ausführen.
Positionskonfiguration
In einer Multi-Agent-Formation ist das erste zu lösende Problem die Positionierung des Masters und des Slaves. Der Master erstellt zuerst eine 2D-Karte. Nachdem Sie die Karte erstellt und gespeichert haben, führen Sie das 2D-Navigationspaket aus und verwenden Sie den adaptiven Monte-Carlo-Positionierungsalgorithmus (AMCL-Positionierung) im 2D-Navigationspaket, um die Positionierung des Masters zu konfigurieren. Da sich der Master und die Slaves im selben Netzwerk befinden und denselben Knotenmanager teilen, hat der Master die Karte aus dem 2D-Navigationspaket gestartet, alle Slaves können dieselbe Karte unter demselben Knotenmanager verwenden. Daher muss der Slave keine Karte erstellen. Führen Sie in wheeltec_slave.launch die Monte-Carlo-Positionierung (AMCL-Positionierung) aus, die Slaves können ihre Positionen mithilfe der vom Master erstellten Karte konfigurieren.
Wie man eine Formation erstellt und aufrechterhält
Während der Formationsbewegung kann die Masterbewegung über Rviz, Tastatur, Fernbedienung und andere Methoden gesteuert werden. Der Slave berechnet seine Geschwindigkeit über den Knoten „slave_tf_listener“, um seine Bewegung zu steuern und das Ziel der Formation zu erreichen. Der Knoten „slave_tf_listener“ begrenzt die Slavegeschwindigkeit, um eine übermäßige Geschwindigkeit durch die Knotenberechnung zu vermeiden, die eine Reihe von Auswirkungen verursachen würde. Der spezifische Wert kann in wheeltec_slave.launch geändert werden.
Die relevanten Parameter des Formationsalgorithmus sind wie folgt:
Informationen zur Hindernisvermeidung
In einer Multi-Agent-Formation kann der Master den move_base-Knoten verwenden, um die Hindernisvermeidung abzuschließen. Bei der Initialisierung des Slaves wird der move_base-Knoten jedoch nicht verwendet. An diesem Punkt muss der multi_avoidance-Knoten im Slave-Programm aufgerufen werden. Der Hindernisvermeidungsknoten ist im Paket standardmäßig aktiviert. Bei Bedarf kann die Vermeidung auf „false“ gesetzt werden, um den Hindernisvermeidungsknoten zu deaktivieren.
Einige relevante Parameter des Hindernisvermeidungsknotens sind in der folgenden Abbildung dargestellt, wobei safe_distance die Sicherheitsabstandsgrenze des Hindernisses und danger_distance die Gefahrenabstandsgrenze des Hindernisses ist. Wenn sich das Hindernis innerhalb der Sicherheits- und Gefahrenentfernung befindet, passt der Slave seine Position an, um das Hindernis zu vermeiden. Wenn sich das Hindernis in Gefahrenentfernung befindet, fährt der Slave vom Hindernis weg.
Vorgehensweise
Geben Sie den Ausführungsbefehl ein
Vorbereitungen vor dem Start der Multiagentenbildung:
- Master und Slave verbinden sich mit demselben Netzwerk und richten die Multi-Agent-Kommunikation korrekt ein
- Der Master erstellt im Voraus eine 2D-Karte und speichert sie
- Der Master wird am Startpunkt der Karte platziert und der Slave in der Nähe der Initialisierungsposition (der Standardposition für die Bildung des Slaves).
- Führen Sie nach der Remote-Anmeldung bei Jetson Nano/Raspberry Pi eine Zeitsynchronisierung durch.
sudo date -s „2022-04-01 15:15:00“
- Schritt 1: Öffnen Sie eine 2D-Karte vom Master.
roslaunch turn_on_wheeltec_robot navigation.launch
- Schritt 2: Führen Sie das Formationsprogramm von allen Slaves aus.
roslaunch wheeltec_multi wheeltec_slave.launch
- Schritt 3: Öffnen Sie den Tastatursteuerungsknoten vom Master aus oder verwenden Sie den Joystick, um die Bewegung des Masters fernzusteuern.
Neustart wheeltec_robot_rc keyboard_teleop.launch
- Schritt 4: (Optional) Beobachten Sie die Roboterbewegungen von Rviz aus.
rviz
Notiz:
- Denken Sie unbedingt daran, die Zeitsynchronisierung abzuschließen, bevor Sie das Programm ausführen.
- Bei der Steuerung des Masters einer Formation mit mehreren Agenten sollte die Winkelgeschwindigkeit nicht zu hoch sein. Die empfohlene lineare Geschwindigkeit beträgt 0.2 m/s, die Winkelgeschwindigkeit weniger als 0.3 rad/s. Wenn der Master eine Kurve fährt, ist eine höhere lineare Geschwindigkeit erforderlich, je weiter der Slave vom Master entfernt ist. Aufgrund der Begrenzung der linearen Geschwindigkeit und der Winkelgeschwindigkeit im Paket wird die Formation chaotisch, wenn das Slave-Auto die erforderliche Geschwindigkeit nicht erreichen kann. Insgesamt kann eine übermäßige lineare Geschwindigkeit den Roboter leicht beschädigen.
- Wenn die Anzahl der Slaves mehr als eins beträgt, kann es aufgrund der begrenzten WLAN-Bandbreite des ROS-Hosts leicht zu erheblichen Verzögerungen und Unterbrechungen der Multi-Agent-Kommunikation kommen. Die Verwendung eines Routers kann dieses Problem gut lösen.
- Der TF-Baum der Multi-Roboter-Formation (2 Slaves) ist: rqt_tf_tree
- Das Knotenbeziehungsdiagramm der Multi-Roboter-Formation (2 Slaves) ist: rqt_graph
Dokumente / Ressourcen
![]() |
ROBOWORKS Robofleet MULTI-AGENT-ALGORITHMEN [pdf] Benutzerhandbuch Robofleet Multi-Agent-Algorithmen, Robofleet, Multi-Agent-Algorithmen, Agent-Algorithmen, Algorithmen |