You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We already have static TF listener in geometry2, but Managed Transform Buffer acts as dynamic / static listener automatically. It's convenient approach for users if input frames are defined as parameters. Moreover, in case of static TFs requests only, there is no dangling tf_listener_impl_xxxxxxxx node - we use local buffer, TF listening happens only for first TF pairs requests.
There is one intuitive assumption. Once static TF requested, transform is constant. This TF will already exists in local buffer and listener is not initialized anymore (note: we can add external local buffer reset via service for users if needed).
Implementation handles two nodes. If we could place it in geometry2 with tiny API update, we might reduce it to a single node. To make it true, we need to:
Fill local map with incoming transforms somewhere here
This include traverse algorithm over tf tree to see if all TFs between target_frame -> source_frame are is_static.
Add new public method to retrieve information e.g. hasStaticTFsRequestsOnly().
Rewrite new class for Managed Transform Buffer without extra features (e.g. eigen repr, transforming pointcloud etc.) and place it in tf2_ros.
Overhead is negligible, benefits visible. You can also see performance test for one of our component related issue. My motivation for this contribution is fact that ROS community values more packages maintaining rather than new packages. Before starting this contribution, I would like to know if these changes within tf2 are acceptable for rolling and possibly backporting to humble & jazzy.
The text was updated successfully, but these errors were encountered:
Recently I was trying to address issue for high CPU load in runtime with many TF listeners in ROS graph. As a result I developed a wrapper for TF listener & buffer, please see https://github.com/autowarefoundation/ManagedTransformBuffer.
We already have static TF listener in geometry2, but Managed Transform Buffer acts as dynamic / static listener automatically. It's convenient approach for users if input frames are defined as parameters. Moreover, in case of static TFs requests only, there is no dangling
tf_listener_impl_xxxxxxxx
node - we use local buffer, TF listening happens only for first TF pairs requests.There is one intuitive assumption. Once static TF requested, transform is constant. This TF will already exists in local buffer and listener is not initialized anymore (note: we can add external local buffer reset via service for users if needed).
Implementation handles two nodes. If we could place it in geometry2 with tiny API update, we might reduce it to a single node. To make it true, we need to:
geometry2/tf2/src/buffer_core.cpp
Line 274 in 24a8b9a
geometry2/tf2/src/buffer_core.cpp
Line 851 in 24a8b9a
target_frame
->source_frame
areis_static
.hasStaticTFsRequestsOnly()
.Overhead is negligible, benefits visible. You can also see performance test for one of our component related issue. My motivation for this contribution is fact that ROS community values more packages maintaining rather than new packages. Before starting this contribution, I would like to know if these changes within tf2 are acceptable for rolling and possibly backporting to humble & jazzy.
The text was updated successfully, but these errors were encountered: