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.
Em seguida, se eu carregar meu auv4
URDF personalizado, obtenho a árvore TF conectada de world
a auv4/base_link
.
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
.
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
.
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!
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:
Descendo para apenas dois veículos, podemos ver o link de base:
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.