Is there a max number of edges allowed between two frames in a TF tree?
I have a pose graph of about 2000 nodes published as static transforms with tf2_ros::StaticTransformBroadcaster
.
Currently, the poses are chained together as a path, meaning I publish transforms from:
_node_0_ to _node_1_,
_node_1_ to _node_2_,
...,
_node_n-1_ to _node_n_.
I then want to lookup transforms from between various nodes, but tf::TransformListener
fails when nodes are more than 1000 edges apart in the TF tree:
The tf tree is invalid because it contains a loop.
_Followed by a list of all transforms that exist between frames._
I'm almost certain there are no loops as the listed transforms after the error appear sane and include all 2000 nodes. Also, the same code works fine when there are less than 1000 nodes.
With the tool tf_echo
I can successfully get the transform between any two nodes that are within 1000 edges.
For example:
_node_0_ to _node_1000_ (success)
_node_0_ to _node_1_ (success)
_node_1_ to _node_1001_ (success)
_node_0_ to _node_1001_ (failure The tf tree is invalid because it contains a loop.
)
Could this be something to do with the subscriber's queue size in TransfromListener
?
Thanks for the help :)