O comentário de que você precisa para publicar a transformação de outra maneira está incorreto.
Apenas um destes deve ser usado:
Eles lutarão entre si e causarão reparações contínuas de modo que a qualquer momento o último recebido vença. Provavelmente, a primeira versão testada causou uma árvore desconectada ao reparar inadvertidamente e adicionar a segunda chamada mascarou-a.
E enquanto estou olhando para este código. É mais limpo e eficiente publicar um vetor de transformações estáticas para aproveitar as vantagens do travamento, em vez de publicar uma sequência de transformações individuais.
Já mencionamos isso antes: https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522
@ TSC21 FYI
@jkflying @baumanta Vocês podem tentar testar se o problema de carimbo de data / hora existe com o editor duplicado removido?
@tfoote, você estava certo em seu comentário sobre a questão # 388 . O loop tf em mavros parece ser responsável por obter sempre o tf em ros :: Time :: now ().
Eu coloquei um ouvinte tf no código de evitação que recuperou as transformações no timestamp do último pointcloud e em ros :: Time :: now () e imprimiu ambas as transformações. Como o drone estava se movendo, eu esperaria que as transformações fossem ligeiramente diferentes. Usando Mavros 0.29.2. ambas as transformações eram sempre idênticas, mesmo que os carimbos de data / hora não fossem. Usando Mavros PR # 1252, as transformações foram diferentes.
OK, eu suspeito que o código do plugin odom
não estava funcionando devido a uma limitação obscura de tópicos travados - você não pode publicar mensagens diferentes em um tópico travado do mesmo processo.
Consulte https://github.com/ros/ros_comm/issues/146 e https://answers.ros.org/question/261815/how-can-i-access-all-static-tf2-transforms/.
A solução alternativa para isso é construir um vetor de todas as transformações e publicá-las de uma vez (passar para a função TF2 especializada http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85688b60a22 )