Hola, soy muy consciente de que el UUV Simulator es capaz de simular varios robots (uno de sus puntos fuertes). Sin embargo, no he podido hacer que los árboles TF del sistema de múltiples robots permanezcan conectados con un solo marco TF principal común world
.
Cuando se ejecuta roslaunch uuv_gazebo_worlds ocean_waves.launch
, solo se publican world
y world_ned
.
A continuación, si subo mi auv4
URDF personalizado, obtengo el árbol TF conectado desde world
a auv4/base_link
.
Hasta ahora todo bien. De manera similar, si tuviera que reiniciar el simulador y ejecutar roslaunch uuv_gazebo_worlds ocean_waves.launch
nuevamente, pero esta vez cargando mi vehículo auv3
, me conecto al árbol TF desde world
a auv3/base_link
.
Hasta ahora todo bien. Sin embargo, si intentara ejecutar roslaunch uuv_gazebo_worlds ocean_waves.launch
y luego cargar ambos urdfs simultáneamente a través de archivos upload.launch separados (la plantilla sigue a upload_rexrov.launch), obtengo un árbol TF desconectado, con el segundo vehículo lanzado generalmente desconectado del árbol TF. En este caso, auv3 se cargó primero seguido de auv4, lo que solo resultó en world
conectado a auv3/base_link
pero desconectado de auv4/base_link
.
Algo similar sucede si invierto el orden de carga (auv4 primero y luego auv3), luego world
se conecta a auv4/base_link
pero no a auv3/base_link
.
Probablemente esté haciendo algo mal ya que el número 396 cubre el mismo problema, pero de alguna manera el Póster original (OP) logró resolver el problema por sí mismo. ¿Alguien podría orientar sobre cómo se puede resolver este problema para permitir un árbol TF completamente conectado? Actualmente entiendo que el archivo message_to_tf.launch
ayuda a convertir nav_msgs :: Odometry en transformaciones ROS TF. Se agradece cualquier ayuda. ¡Gracias!
Hola @HashirZahir No tuve tiempo todavía pero intentaré reproducir tu error y encontrar una solución
@HashirZahir También estoy interesado en este mismo problema. Estoy intentando lanzar 3 vehículos Eca_a9 simultáneamente de la misma manera después de ejecutar _roslaunch uuv_gazebo_worlds ocean_waves.launch_. Puedo hacer que funcionen como máximo dos vehículos Eca_a9 a la vez. ¿Ha progresado más en este tema?
¿Podría compartir los pasos para replicar para que los 2 vehículos Eca_a9 funcionen juntos (y sus respectivos árboles TF?) En mi caso, puedo generar ambos vehículos en la simulación, pero el árbol TF está roto / desconectado, lo que hace que sea más difícil de realizar. cálculos / algoritmos multi-auv
¿ Tuviste suerte
Lo siento @HashirZahir , pero todavía no, he estado muy ocupado, pero intentaré comprobarlo esta semana.
¿Podría compartir los pasos para replicar para que los 2 vehículos Eca_a9 funcionen juntos (y sus respectivos árboles TF?) En mi caso, puedo generar ambos vehículos en la simulación, pero el árbol TF está roto / desconectado, lo que hace que sea más difícil de realizar. cálculos / algoritmos multi-auv
Disculpe por la tardanza en responder. Tengo un archivo de lanzamiento para lanzar 3 (o más) UUV de Eca en diferentes espacios de nombres usando upload.launch. Utilizo otro archivo de inicio para iniciar el controlador de seguimiento geométrico para cada uno de los 3 vehículos. Sin saber por qué, esto generalmente funciona para 2/3 UUV, y el tercero no responde y está roto (como ha descrito) ... Entonces puedo controlar, enviar puntos de referencia, hacer eco de todos los temas para 2 UUV. Tenga en cuenta que esto no siempre es consistente y, a veces, solo un UUV se generará correctamente. Lamentablemente, no tengo más información sobre el problema.
¿Alguien ha logrado obtener información sobre este tema? Las capacidades de múltiples robots de este simulador son increíbles, pero siento que un simple script de árbol TF está causando el árbol TF roto, aunque no he podido encontrar la fuente del problema.
@HashirZahir
Estaba teniendo el mismo problema que @ Joel-Lindsay con enlaces rotos con eca_a9s. Arreglé esto editando el archivo /eca_a9/eca_a9_description/robots/eca_a9_default.urdf.xacro.
inertial_reference_frame = "$ (arg inertial_reference_frame)"
fue cambiado a:
inertial_reference_frame = "mundo"
Esto arregló mis árboles tf que también estaban desconectados.
Hola, @ErinWetter , ¿te importaría compartir una imagen del árbol TF conectado?
Aquí está la parte superior de un árbol tf con 4 eca_a9 en funcionamiento:
Bajando a solo dos vehículos podemos ver el enlace base:
No he descubierto por qué los enlaces de fotogramas entre las emisoras: ground_truth_to_uuv # y / uu # / robot_state_publisher no se estaban conectando antes de codificar el editor de estado del robot para que coincida, pero no estoy familiarizado con el proceso de creación del modelo de robot xacro / urdf.
Había realizado algunas pruebas en un solo vehículo comparando el orden de lanzamiento de los nodos de transmisión en Eca y RexRov (que no ha tenido los problemas del árbol de tf roto y que he estado usando para simulaciones de múltiples vehículos). Para un solo Eca_a9, el árbol tf se cortaría en / base_link si iniciara el nodo / ground_truth_to_uuv # en la terminal en lugar de dentro del archivo "upload_eca_a9.launch". Mientras hace lo mismo con el RexRov / base_link conectado con todas las condiciones de lanzamiento.