Mavros: Die Veröffentlichung wandelt beide Richtungen um, ist falsch

Erstellt am 20. Juli 2019  ·  5Kommentare  ·  Quelle: mavlink/mavros

Der Kommentar, dass Sie die Transformation andersherum veröffentlichen müssen, ist falsch.

https://github.com/mavlink/mavros/blob/bdc5c7386f9451ac244b5a85c087ad620fd3a989/mavros/src/lib/uas_data.cpp#L57

Nur eine davon sollte verwendet werden:

https://github.com/mavlink/mavros/blob/366a9a74847b2e231035b47fa06651527a4556b9/mavros/src/lib/uas_data.cpp#L56 -L58

Sie werden miteinander kämpfen und eine kontinuierliche Neubeelternung bewirken, so dass zu jedem Zeitpunkt der zuletzt erhaltene gewinnt. Wahrscheinlich verursachte die erste getestete Version einen getrennten Baum durch versehentliches Neubeordnen und Hinzufügen des zweiten Aufrufs, um ihn auszublenden.

Und während ich mir diesen Code ansehe. Es ist sauberer und effizienter, einen Vektor statischer Transformationen zu veröffentlichen, um die Vorteile von Latching zu nutzen, anstatt eine Sequenz einzelner Transformationen zu veröffentlichen.

bug

Alle 5 Kommentare

Wir haben das hier schon einmal erwähnt: https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522

@TSC21 Zur Info

@jkflying @baumanta Können Sie versuchen zu testen, ob das Zeitstempelproblem besteht, wenn der doppelte Herausgeber entfernt wurde?

@tfoote du Ausgabe #388 . Die tf-Schleife in mavros scheint dafür verantwortlich zu sein, immer das tf bei ros::Time::now() zu erhalten.

Ich habe einen tf-Listener in den Vermeidungscode eingefügt, der die Transformationen zum Zeitstempel der letzten Punktwolke und bei ros::Time::now() abgerufen und beide Transformationen ausgegeben hat. Da sich die Drohne bewegte, würde ich erwarten, dass die Transformationen etwas anders sind. Verwenden von Mavros 0.29.2. beide Transformationen waren immer identisch, auch wenn die Zeitstempel es nicht waren. Bei Verwendung von Mavros PR #1252 waren die Transformationen unterschiedlich.

OK, ich vermute, warum der odom Plugin-Code nicht funktionierte, liegt an einer obskuren Einschränkung von verriegelten Themen - Sie können nicht verschiedene Nachrichten zu einem verriegelten Thema aus demselben Prozess veröffentlichen.

Siehe https://github.com/ros/ros_comm/issues/146 und https://answers.ros.org/question/261815/how-can-i-access-all-static-tf2-transforms/.

Die Problemumgehung hierfür besteht darin, einen Vektor aller Transformationen zu erstellen und sie auf einmal zu veröffentlichen (übergeben Sie an die spezialisierte TF2-Funktion http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85688b60a2236e9d81ff )

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen