tf2, static transforms and latching
Hi,
I have a node which handles multiple objects and their transformations, some of which will frequently change and some others which may change infrequently (but don't have to).
The StaticTransformBroadcaster only latches the last static transform sent through /tf_static which means that most of my transforms won't arrive on new nodes (see also this ticket) when they are created. The workaround people have been proposing is to instead send a whole vector of all transforms. However, this means that every time one transform changes I would have to resend the entire vector, which I also don't want to do.
Are there good alternatives?
- I could manually send all transforms to new nodes, but for this I would need a callback when a new subscriber to /tf or /tf_static would pop up, however, since I use TransformBroadcasters, I never manually generate a subscriber and thus have no callback. Also, this is the kind of thing which I thought tf should handle for me.
- I could write rarely-changing Transforms into a List on the ParameterServer and broadcast the more frequent transforms regularly?
- I could manually generate a publisher for each transform under different topics and remap them all to /tf_static? Is this even possible? Sounds like a lot of overhead...
I'd be greatful for a clean way to handle lots of infrequently changing transforms.
Asked by Germanunkol on 2018-07-12 07:55:25 UTC
Comments
Without more information it's hard to suggest anything. You don't want to do the default workaround but don't explain why.Could you please make this more concrete. What is "lots"? What is "infrequent"? What are your resource limitations that you're trying to avoid? How many of each type do you have?
Asked by tfoote on 2018-07-12 18:49:05 UTC