Mavros: La publicación de transformaciones en ambas direcciones es incorrecta

Creado en 20 jul. 2019  ·  5Comentarios  ·  Fuente: mavlink/mavros

El comentario de que necesita publicar la transformación al revés es incorrecto.

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

Solo se debe utilizar uno de estos:

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

Lucharán entre sí y provocarán un reencuentro continuo de modo que en un momento dado gane el último recibido. Probablemente, la primera versión probada provocó un árbol desconectado al volver a instalarlo inadvertidamente y agregar la segunda llamada lo enmascaró.

Y mientras miro este código. Es más limpio y más eficiente publicar un vector de transformaciones estáticas para aprovechar el bloqueo en lugar de publicar una secuencia de transformaciones individuales.

bug

Todos 5 comentarios

Trajimos esto aquí antes: https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522

@ TSC21 FYI

@jkflying @baumanta ¿Pueden intentar probar si el problema de la marca de tiempo existe con el editor duplicado eliminado?

@tfoote, tenías razón con tu comentario sobre el problema # 388 . El bucle tf en mavros parece ser responsable de obtener siempre el tf en ros :: Time :: now ().

Puse un oyente tf en el código de evitación que recuperó las transformaciones en la marca de tiempo de la última nube de puntos y en ros :: Time :: now () e imprimí ambas transformaciones. A medida que el dron se movía, esperaría que las transformaciones fueran ligeramente diferentes. Usando Mavros 0.29.2. ambas transformaciones fueron siempre idénticas, incluso aunque las marcas de tiempo no lo fueran. Usando Mavros PR # 1252, las transformaciones fueron diferentes.

Bien, sospecho que la razón por la que el código del complemento odom no funcionaba se debe a una limitación oscura de los temas bloqueados: no puede publicar mensajes diferentes en un tema bloqueado desde el mismo proceso.

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

La solución para esto es construir un vector de todas las transformaciones y publicarlas de una sola vez (pase a la función TF2 especializada http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85688b60a2236e9d )

¿Fue útil esta página
0 / 5 - 0 calificaciones