Uuv_simulator: Multi Robot TF Baum gebrochen

Erstellt am 24. Mai 2020  ·  10Kommentare  ·  Quelle: uuvsimulator/uuv_simulator

Hallo, mir ist bewusst, dass der UUV-Simulator mehrere Roboter simulieren kann (eine seiner Stärken). Ich war jedoch nicht in der Lage, die TF-Bäume des Multi-Roboter-Systems mit einem einzigen gemeinsamen übergeordneten TF-Frame world verbunden zu bleiben.

Wenn roslaunch uuv_gazebo_worlds ocean_waves.launch , werden nur world und world_ned veröffentlicht.

image

Wenn ich als nächstes meinen benutzerdefinierten auv4 URDF hochlade, erhalte ich einen verbundenen TF-Baum von world bis auv4/base_link .

image

Soweit alles gut. Wenn ich den Simulator neu starten und roslaunch uuv_gazebo_worlds ocean_waves.launch erneut ausführen würde, aber dieses Mal mein auv3 Fahrzeug hochlade, erhalte ich einen verbundenen TF-Baum von world auf auv3/base_link .

image

Soweit alles gut. Wenn ich jedoch versuchen würde, roslaunch uuv_gazebo_worlds ocean_waves.launch auszuführen und dann beide urdfs gleichzeitig über separate upload.launch-Dateien hochzuladen (Vorlage folgt upload_rexrov.launch), erhalte ich einen getrennten TF-Baum, wobei das zweite gestartete Fahrzeug normalerweise getrennt ist vom TF-Baum. In diesem Fall wurde zuerst auv3 und dann auv4 hochgeladen, was nur dazu führte, dass world mit auv3/base_link aber von auv4/base_link .

image

Ähnliches passiert, wenn ich die Reihenfolge des Uploads umkehre (auv4 zuerst dann auv3), dann ist world mit auv4/base_link aber nicht mit auv3/base_link .

Ich mache wahrscheinlich etwas falsch, da #396 das gleiche Problem behandelt, aber irgendwie hat das Original Poster (OP) es geschafft, das Problem selbst zu lösen. Könnte jemand eine Anleitung dazu geben, wie dieses Problem gelöst werden kann, um einen vollständig verbundenen TF-Baum zu ermöglichen? Ich verstehe derzeit, dass die Datei message_to_tf.launch hilft, nav_msgs::Odometry in ROS TF-Transformationen zu konvertieren. Jede Hilfe wird geschätzt. Vielen Dank!

question problem

Alle 10 Kommentare

Hallo @HashirZahir Ich hatte noch keine Zeit aber ich werde versuchen deinen Fehler zu reproduzieren und eine Lösung zu finden

@HashirZahir Ich interessiere mich auch für das gleiche Problem. Ich versuche, 3 Eca_a9-Fahrzeuge gleichzeitig auf die gleiche Weise zu starten, nachdem ich _roslaunch uuv_gazebo_worlds ocean_waves.launch_ ausgeführt habe. Ich kann höchstens zwei Eca_a9-Fahrzeuge gleichzeitig zum Laufen bringen -- Haben Sie weitere Fortschritte in dieser Angelegenheit gemacht?

Könnten Sie die Schritte zum Replizieren teilen, damit die 2 Eca_a9-Fahrzeuge zusammen laufen (und ihre jeweiligen TF-Bäume?) In meinem Fall kann ich beide Fahrzeuge in der Simulation spawnen, aber der TF-Baum ist kaputt / getrennt, was die Ausführung erschwert Multi-Auv-Berechnungen/Algorithmen

Hast du Glück

Entschuldigung @HashirZahir , aber noch nicht, ich war sehr beschäftigt, aber ich werde versuchen, diese Woche

Könnten Sie die Schritte zum Replizieren teilen, damit die 2 Eca_a9-Fahrzeuge zusammen laufen (und ihre jeweiligen TF-Bäume?) In meinem Fall kann ich beide Fahrzeuge in der Simulation spawnen, aber der TF-Baum ist kaputt / getrennt, was die Ausführung erschwert Multi-Auv-Berechnungen/Algorithmen

Entschuldigung für die langsame Antwort. Ich habe eine Startdatei zum Starten von 3 (oder mehr) Eca-UUVs unter verschiedenen Namespaces mithilfe von upload.launch. Ich verwende eine andere Startdatei, um den geometrischen Tracking-Controller für jedes der 3 Fahrzeuge zu starten. Ohne zu wissen warum, funktioniert dies im Allgemeinen für 2/3 UUVs, wobei das 3. nicht reagiert und defekt ist (wie Sie beschrieben haben) ... So kann ich steuern, Wegpunkte senden, alle Themen für 2 UUVs echoen. Beachten Sie, dass dies nicht immer konsistent ist und manchmal nur ein UUV korrekt erscheint. Leider habe ich keinen Einblick mehr in das Thema.

Hat sich jemand zu diesem Thema einen Einblick verschaffen können? Die Multi-Robot-Fähigkeiten dieses Simulators sind erstaunlich, aber ich habe das Gefühl, dass ein einfaches TF-Baum-Skript den kaputten TF-Baum verursacht, obwohl ich die Ursache des Problems nicht finden konnte.

@HashirZahir
Ich hatte das gleiche Problem wie @Joel-Lindsay mit defekten Links mit den eca_a9s. Ich habe dies behoben, indem ich die Datei /eca_a9/eca_a9_description/robots/eca_a9_default.urdf.xacro bearbeitet habe.

inertial_reference_frame="$(arg inertial_reference_frame)"
wurde geändert in:
inertial_reference_frame="Welt"

Dies reparierte meine tf-Bäume, die auch getrennt wurden.

Hallo, @ErinWetter ,

Hier ist die Spitze eines tf-Baums mit 4 funktionierenden eca_a9:

Four_Eca_short

Wenn wir auf nur zwei Fahrzeuge gehen, können wir den Basislink sehen:

two_eca_short

Ich habe nicht herausgefunden, warum die Frame-Links zwischen den Sendern: ground_truth_to_uuv# und /uu#/robot_state_publisher keine Verbindung hergestellt haben, bevor der Roboterstatus-Publisher hartcodiert wurde, damit er übereinstimmt, aber ich bin mit dem Erstellungsprozess des xacro/urdf-Robotermodells nicht vertraut.

Ich hatte einige Tests an einem einzelnen Fahrzeug durchgeführt, um die Reihenfolge des Startens der Sendeknoten auf dem Eca und RexRov zu vergleichen (das nicht die Probleme mit dem defekten TF-Baum hatte und ich für Simulationen mit mehreren Fahrzeugen verwendet habe). Für ein einzelnes Eca_a9 würde der tf-Baum bei /base_link abgetrennt, wenn ich den /ground_truth_to_uuv#-Knoten im Terminal statt in der Datei "upload_eca_a9.launch" starte. Während Sie das gleiche mit dem RexRov /base_link tun, der mit allen Startbedingungen verbunden ist.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

hughhugh picture hughhugh  ·  5Kommentare

dbcesar picture dbcesar  ·  5Kommentare

tve picture tve  ·  17Kommentare

ccs-ros picture ccs-ros  ·  10Kommentare

musamarcusso picture musamarcusso  ·  12Kommentare