Le commentaire dont vous avez besoin pour publier la transformation dans l'autre sens est incorrect.
Un seul d'entre eux doit être utilisé :
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.
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 )
Correction de https://github.com/mavlink/mavros/pull/1300.