Wait for TF transformations for incoming messages. More...
#include <tf_filter.h>
Classes | |
struct | Impl |
class | RosCB |
Public Types | |
using | FilterFailureCB = std::function< void(const Inputs &..., TfFilterResult)> |
Callback for failed transform queries. More... | |
Public Member Functions | |
void | init (tf2::BufferCore &bc, uint32_t queue_size, const ros::NodeHandle &nh) noexcept |
Initialize the filter. More... | |
void | init (tf2::BufferCore &bc, uint32_t queue_size, ros::CallbackQueueInterface *cbq) noexcept |
Initialize the filter. More... | |
void | reset () noexcept override |
Reset filter state. More... | |
void | set_filter_failure_function (FilterFailureCB cb) |
Register callback for failed transforms. More... | |
void | set_target_frame (const std::string &target_frame) |
Choose the TF target frame. More... | |
void | set_target_frames (const ros::V_string &target_frames) |
Choose the TF target frames. More... | |
TfFilter () noexcept | |
Empty constructor. More... | |
TfFilter (tf2::BufferCore &bc, const std::string &target_frame, uint32_t queue_size, const ros::NodeHandle &nh) noexcept | |
Construct and initialize the filter. More... | |
TfFilter (tf2::BufferCore &bc, const std::string &target_frame, uint32_t queue_size, ros::CallbackQueueInterface *cbq) noexcept | |
Construct and initialize the filter. More... | |
TfFilter (tf2::BufferCore &bc, const ros::V_string &target_frames, uint32_t queue_size, const ros::NodeHandle &nh) noexcept | |
Construct and initialize the filter. More... | |
TfFilter (tf2::BufferCore &bc, const ros::V_string &target_frames, uint32_t queue_size, ros::CallbackQueueInterface *cbq) noexcept | |
Construct and initialize the filter. More... | |
Protected Member Functions | |
void | receive (const Inputs &... in) override |
Process incoming data. More... | |
Private Types | |
using | MessageTuple = std::tuple< Inputs... > |
Private Member Functions | |
void | report_failure (std::unique_lock< std::mutex > &, const MessageTuple &, TfFilterResult) |
void | send_message (std::unique_lock< std::mutex > &, const MessageTuple &m) |
void | transformable (tf2::TransformableRequestHandle request_handle, const std::string &target_frame, const std::string &source_frame, ros::Time time, tf2::TransformableResult result) |
Private Attributes | |
std::shared_ptr< Impl > | impl_ |
Additional Inherited Members |
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, which must have an accessible ROS header as determined by the ros::message_traits
template.
Definition at line 72 of file tf_filter.h.
using fkie_message_filters::TfFilter< Inputs >::FilterFailureCB = std::function<void(const Inputs&..., TfFilterResult)> |
Callback for failed transform queries.
Definition at line 76 of file tf_filter.h.
|
private |
Definition at line 192 of file tf_filter.h.
|
inlinenoexcept |
Empty constructor.
Constructs an uninitialized filter object. You need to call init() before you can use the object.
Definition at line 82 of file tf_filter.h.
|
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 nh
the ROS node handle whose callback queue is used to pass transformable messagesDefinition at line 147 of file tf_filter_impl.h.
|
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 cbq
the ROS callback queue that is used to pass transformable messages. If nullptr
, the send() function is called directly from the TF2 buffer callback or receive() method.Definition at line 154 of file tf_filter_impl.h.
|
noexcept |
Construct and initialize the filter.
The constructor calls init() and set_target_frames() for you.
bc
a TF2 buffer instance target_frames
the TF target frames for the incoming messages. Passed message will be transformable to all these frames. queue_size
the maximum number of queued messages nh
the ROS node handle whose callback queue is used to pass transformable messagesDefinition at line 161 of file tf_filter_impl.h.
|
noexcept |
Construct and initialize the filter.
The constructor calls init() and set_target_frames() for you.
bc
a TF2 buffer instance target_frames
the TF target frames for the incoming messages. Passed message will be transformable to all these frames. queue_size
the maximum number of queued messages cbq
the ROS callback queue that is used to pass transformable messages. If nullptr
, the send() function is called directly from the TF2 buffer callback or receive() method.Definition at line 168 of file tf_filter_impl.h.
|
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 nh
the ROS node handle whose callback queue is used to pass transformable messagesDefinition at line 189 of file tf_filter_impl.h.
|
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 cbq
the ROS callback queue that is used to pass transformable messages. If nullptr
, the send() function is called directly from the TF2 buffer callback or receive() method.Definition at line 175 of file tf_filter_impl.h.
|
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... >.
Definition at line 236 of file tf_filter_impl.h.
|
private |
Definition at line 321 of file tf_filter_impl.h.
|
overridevirtualnoexcept |
Reset filter state.
Discards all queued messages. Existing connections to sources and sinks are unaffected.
Reimplemented from fkie_message_filters::FilterBase.
Definition at line 214 of file tf_filter_impl.h.
|
private |
Definition at line 346 of file tf_filter_impl.h.
void 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 |
Definition at line 228 of file tf_filter_impl.h.
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 |
Definition at line 208 of file tf_filter_impl.h.
void fkie_message_filters::TfFilter< Inputs >::set_target_frames | ( | const ros::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 |
Definition at line 195 of file tf_filter_impl.h.
|
private |
Definition at line 281 of file tf_filter_impl.h.
|
private |
Definition at line 194 of file tf_filter.h.