FKIE Message Filters
Improved filters for processing ROS messages
|
Wait for TF transformations for incoming messages. More...
#include <fkie_message_filters/tf_filter.hpp>
Public Types | |
using | FilterFailureCB = std::function< void(const Inputs &..., TfFilterResult)> |
Callback for failed transform queries. | |
using | Input = IO< Inputs... > |
Grouped input types. | |
using | Output = IO< Outputs... > |
Grouped output types. | |
using | V_string = std::vector< std::string > |
Type alias for std::vector<std::string> | |
Public Member Functions | |
TfFilter () noexcept | |
Empty constructor. | |
TfFilter (tf2::BufferCore &bc, const std::string &target_frame, uint32_t queue_size) noexcept | |
Construct and initialize the filter. | |
TfFilter (tf2::BufferCore &bc, const V_string &target_frames, uint32_t queue_size) noexcept | |
Construct and initialize the filter. | |
Connection | connect_to_sink (Sink< Outputs... > &dst) noexcept |
Connect this source to a sink. | |
Connection | connect_to_source (Source< Inputs... > &src) noexcept |
Connect this sink to a source. | |
virtual void | disconnect () noexcept override |
Disconnect from all connected sources and sinks. | |
void | disconnect_from_all_sinks () noexcept |
Disconnect from all connected sinks. | |
void | disconnect_from_all_sources () noexcept |
Disconnect from all connected sources. | |
void | init (tf2::BufferCore &bc, uint32_t queue_size) noexcept |
Initialize the filter. | |
void | reset () noexcept override |
Reset filter state. | |
void | set_filter_failure_function (FilterFailureCB cb) |
Register callback for failed transforms. | |
void | set_target_frame (const std::string &target_frame) |
Choose the TF target frame. | |
void | set_target_frames (const V_string &target_frames) |
Choose the TF target frames. | |
Static Public Attributes | |
static constexpr std::size_t | NUM_INPUTS = sizeof...(Inputs) |
Number of input arguments. | |
static constexpr std::size_t | NUM_OUTPUTS = sizeof...(Outputs) |
Number of output arguments. | |
Protected Member Functions | |
void | receive (helpers::argument_t< Inputs >... in) override |
Process incoming data. | |
void | send (helpers::argument_t< Outputs >... out) |
Pass data to all connected sinks. | |
Wait for TF transformations for incoming messages.
This filter is intended to be used with a Subscriber as source, and will delay incoming messages until they can be transformed to the specified TF target frames. If the filter input is not unary, only the first argument is examined.
|
inherited |
Grouped input types.
This type can be used to define sources with matching types.
|
inherited |
Grouped output types.
This type can be used to define sinks with matching types.
|
inlinenoexcept |
Empty constructor.
Constructs an uninitialized filter object. You need to call init() before you can use the object.
|
noexcept |
Construct and initialize the filter.
The constructor calls init() and set_target_frame() for you.
bc
a tf2 buffer instance target_frame
the TF target frame for the incoming messages queue_size
the maximum number of queued messages
|
noexcept |
Construct and initialize the filter.
The constructor calls init() and set_target_frame() for you.
bc
a tf2 buffer instance target_frames
the TF target frames for the incoming messages queue_size
the maximum number of queued messages
|
noexceptinherited |
Connect this source to a sink.
Can be called multiple times to connect multiple sinks; in that case, the sinks receive data in the same order as they have been connected. This function does basically the same thing as Sink::connect_to_source(), only from the opposite point of view.
dst
the sink that is to be connected
|
noexceptinherited |
Connect this sink to a source.
Can be called multiple times to connect multiple sources; in that case, the sink receives data from all connected sources. This function does basically the same thing as Source::connect_to_sink(), only from the opposite point of view.
src
the source that is to be connected
|
overridevirtualnoexceptinherited |
Disconnect from all connected sources and sinks.
Convenience function that calls disconnect_from_all_sources() and disonnect_from_all_sinks().
Reimplemented from fkie_message_filters::Sink< Inputs >.
|
noexceptinherited |
Disconnect from all connected sinks.
Severs the connection to all sinks, turning the send() method into a no-op.
|
noexceptinherited |
Disconnect from all connected sources.
Severs the connection to all sources. The receive() method will not be called any more.
|
noexcept |
Initialize the filter.
This function allocates internal data structures and makes the filter operational. If the function is called on an already initialized filter, the filter is reinitialized and reset() is called implicitly.
bc
a TF2 buffer instance queue_size
the maximum number of queued messages
|
overrideprotectedvirtual |
Process incoming data.
Derived classes need to override this method to handle all data that is to be consumed by the sink.
Implements fkie_message_filters::Sink< Inputs >.
|
overridevirtualnoexcept |
Reset filter state.
Discards all queued messages. Existing connections to sources and sinks are unaffected.
Reimplemented from fkie_message_filters::FilterBase.
|
protectedinherited |
Pass data to all connected sinks.
out
datavoid fkie_message_filters::TfFilter< Inputs >::set_filter_failure_function | ( | FilterFailureCB | cb | ) |
Register callback for failed transforms.
Whenever a message is discarded, this callback is called with the message and the reason why the TF transform failed.
cb
callback functionstd::logic_error | if the filter is uninitialized |
void fkie_message_filters::TfFilter< Inputs >::set_target_frame | ( | const std::string & | target_frame | ) |
Choose the TF target frame.
target_frame
all passed messages will be transformable to this TF framestd::logic_error | if the filter is uninitialized |
void fkie_message_filters::TfFilter< Inputs >::set_target_frames | ( | const V_string & | target_frames | ) |
Choose the TF target frames.
target_frames
all passed messages will be transformable to all these TF framesstd::logic_error | if the filter is uninitialized |