Mavros: La publication des transformations dans les deux sens est incorrecte

Créé le 20 juil. 2019  ·  5Commentaires  ·  Source: mavlink/mavros

Le commentaire dont vous avez besoin pour publier la transformation dans l'autre sens est incorrect.

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

Un seul d'entre eux doit être utilisé :

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

Ils se battront les uns contre les autres et provoqueront un reparentage continu de sorte qu'à tout moment, le dernier reçu l'emportera. Il est probable que la première version testée ait provoqué une arborescence déconnectée par un reparentage par inadvertance et que l'ajout du deuxième appel l'ait masqué.

Et pendant que je regarde ce code. Il est plus propre et plus efficace de publier un vecteur de transformations statiques pour tirer parti du verrouillage plutôt que de publier une séquence de transformations individuelles.

bug

Tous les 5 commentaires

Nous en avons déjà parlé ici : https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522

@TSC21 Pour info

@jkflying @baumanta Pouvez-vous essayer de tester si le problème d'horodatage existe avec la suppression de l'éditeur en double ?

@tfoote tu numéro 388 . La boucle tf dans mavros semble être responsable de toujours obtenir le tf à ros::Time::now().

J'ai mis un écouteur tf dans le code d'évitement qui a récupéré les transformations à l'horodatage du dernier nuage de points et à ros::Time::now() et j'ai imprimé les deux transformations. Comme le drone se déplaçait, je m'attendrais à ce que les transformations soient légèrement différentes. Utilisation de Mavros 0.29.2. les deux transformations étaient toujours identiques même si les horodatages ne l'étaient pas. En utilisant Mavros PR #1252, les transformations étaient différentes.

OK, je soupçonne que le code du plugin odom ne fonctionnait pas est dû à une limitation obscure des sujets verrouillés - vous ne pouvez pas publier des messages différents dans un sujet verrouillé à partir du même processus.

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

La solution de contournement consiste à construire un vecteur de toutes les transformations et à les publier en un seul coup (passer à la fonction TF2 spécialisée http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85688b60a2236e9d81ff )

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

mtsakaguchi picture mtsakaguchi  ·  5Commentaires

shening picture shening  ·  10Commentaires

MasterRos picture MasterRos  ·  12Commentaires

Phadadev picture Phadadev  ·  4Commentaires

trishantroy picture trishantroy  ·  10Commentaires