Uuv_simulator: Árvore Multi Robot TF quebrada

Criado em 24 mai. 2020  ·  10Comentários  ·  Fonte: uuvsimulator/uuv_simulator

Olá, estou bem ciente de que o Simulador UUV é capaz de simular vários robôs (um de seus pontos fortes). No entanto, não consegui fazer com que as árvores TF do sistema de vários robôs permanecessem conectadas a um único quadro TF pai comum world .

Ao executar roslaunch uuv_gazebo_worlds ocean_waves.launch , apenas world e world_ned são publicados.

image

Em seguida, se eu carregar meu auv4 URDF personalizado, obtenho a árvore TF conectada de world a auv4/base_link .

image

Até agora tudo bem. Da mesma forma, se eu reiniciasse o simulador e execute roslaunch uuv_gazebo_worlds ocean_waves.launch novamente, mas desta vez carregando meu veículo auv3 , eu fico conectado à árvore TF de world para auv3/base_link .

image

Até agora tudo bem. No entanto, se eu tentasse executar roslaunch uuv_gazebo_worlds ocean_waves.launch e depois carregasse ambos os urdfs simultaneamente por meio de arquivos upload.launch separados (o modelo segue upload_rexrov.launch), recebo uma árvore TF desconectada, com o segundo veículo lançado geralmente desconectado da árvore TF. Neste caso, auv3 foi carregado primeiro seguido por auv4, resultando apenas em world conectado a auv3/base_link mas desconectado de auv4/base_link .

image

Coisa semelhante acontece se eu inverter a ordem de upload (primeiro auv4 e depois auv3), então world está conectado a auv4/base_link mas não a auv3/base_link .

Provavelmente estou fazendo algo errado, pois o nº 396 cobre o mesmo problema, mas de alguma forma o Pôster Original (OP) conseguiu resolver o problema sozinho. Alguém poderia orientar sobre como esse problema pode ser resolvido para permitir uma árvore TF totalmente conectada? Eu atualmente entendo que o arquivo message_to_tf.launch ajuda a converter nav_msgs :: Odometry em transformações ROS TF. Qualquer ajuda é apreciada. Obrigado!

question problem

Todos 10 comentários

Olá @HashirZahir ainda não tive tempo mas vou tentar reproduzir o seu erro e encontrar uma solução

@HashirZahir Também estou interessado neste mesmo problema. Estou tentando lançar 3 veículos Eca_a9 simultaneamente da mesma maneira depois de executar _roslaunch uuv_gazebo_worlds ocean_waves.launch_. Consigo fazer funcionar no máximo dois veículos Eca_a9 ao mesmo tempo - Você avançou mais neste assunto?

Você poderia compartilhar as etapas para replicar para fazer os 2 veículos Eca_a9 rodarem juntos (e suas respectivas árvores TF?) No meu caso, eu sou capaz de gerar os dois veículos na simulação, mas a árvore TF está quebrada / desconectada, dificultando a execução cálculos / algoritmos multi-auv

Teve sorte

Desculpe @HashirZahir , mas ainda não, estou muito ocupado, mas tentarei verificar esta semana.

Você poderia compartilhar as etapas para replicar para fazer os 2 veículos Eca_a9 rodarem juntos (e suas respectivas árvores TF?) No meu caso, eu sou capaz de gerar os dois veículos na simulação, mas a árvore TF está quebrada / desconectada, dificultando a execução cálculos / algoritmos multi-auv

Desculpe pela resposta demorada. Eu tenho um arquivo de lançamento para lançar 3 (ou mais) Eca UUVs em diferentes namespaces usando o upload.launch. Eu uso outro arquivo de lançamento para lançar o controlador de rastreamento geométrico para cada um dos 3 veículos. Sem saber o porquê, isso geralmente funciona para 2/3 UUVs, com o terceiro não respondendo e quebrado (como você descreveu) ... Então eu posso controlar, enviar waypoints, ecoar todos os tópicos para 2 UUVs. Observe que isso nem sempre é consistente e às vezes apenas um UUV irá gerar corretamente. Infelizmente, não tenho mais informações sobre o problema.

Alguém conseguiu obter alguma ideia sobre este assunto? Os recursos de multi-robô deste simulador são incríveis, mas eu sinto que algum script de árvore TF simples está causando a árvore TF quebrada, embora eu não tenha conseguido encontrar a origem do problema.

@HashirZahir
Eu estava tendo o mesmo problema que @Joel-Lindsay com links quebrados com o eca_a9s. Corrigi isso editando o arquivo /eca_a9/eca_a9_description/robots/eca_a9_default.urdf.xacro.

inertial_reference_frame = "$ (arg inertial_reference_frame)"
foi alterado para:
inertial_reference_frame = "world"

Isso corrigiu minhas árvores tf, que também estavam desconectadas.

Olá, @ErinWetter , você se importa em compartilhar uma foto da árvore TF conectada?

Aqui está o topo de uma árvore tf com 4 eca_a9 funcionando:

Four_Eca_short

Descendo para apenas dois veículos, podemos ver o link de base:

two_eca_short

Não descobri por que os links de quadros entre os transmissores: ground_truth_to_uuv # e / uu # / robot_state_publisher não estavam se conectando antes de codificar o editor de estado do robô para corresponder, mas não estou familiarizado com o processo de criação do modelo de robô xacro / urdf.

Eu fiz alguns testes em um único veículo comparando a ordem de lançamento dos nós de transmissão no Eca e RexRov (que não teve os problemas da árvore tf quebrada e tenho usado para simulações de vários veículos). Para um único Eca_a9, a árvore tf seria cortada em / base_link se eu iniciasse o nó / ground_truth_to_uuv # no terminal em vez de dentro do arquivo "upload_eca_a9.launch". Ao fazer o mesmo com o RexRov / base_link conectado com todas as condições de inicialização.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

atomoclast picture atomoclast  ·  23Comentários

tve picture tve  ·  17Comentários

hughhugh picture hughhugh  ·  5Comentários

Timple picture Timple  ·  24Comentários

bst picture bst  ·  33Comentários