In both filter chain, their is a tf2_ros::MessageFilter used to buffer the scans waiting for a transform between the scan frame and the configured fixed frame to arrive.
This feature is useful because some filters might depend on it to run. However, because filters don't have access to the tf buffer, they are force to create a new node, a new buffer and a new tf listener. This creates a race condition where the required transform can be received by the root tf2_ros::MessageFilter, but not the individual scan filters. To bypass this, the filters need to wait for the scan.
This whole architecture seems inefficient, is there something we can to do improve it?
In both filter chain, their is a tf2_ros::MessageFilter used to buffer the scans waiting for a transform between the scan frame and the configured fixed frame to arrive.
This feature is useful because some filters might depend on it to run. However, because filters don't have access to the tf buffer, they are force to create a new node, a new buffer and a new tf listener. This creates a race condition where the required transform can be received by the root tf2_ros::MessageFilter, but not the individual scan filters. To bypass this, the filters need to wait for the scan.
This whole architecture seems inefficient, is there something we can to do improve it?