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 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... | |
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... | |
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 90 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 94 of file tf_filter.h.
|
private |
Definition at line 210 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 100 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 messages\nothrow
Definition at line 165 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.\nothrow
Definition at line 172 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 messages\nothrow
Definition at line 179 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.\nothrow
Definition at line 186 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 messages\nothrow
Definition at line 207 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.\nothrow
Definition at line 193 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.
\abstractthrow
Implements fkie_message_filters::Sink< Inputs... >.
Definition at line 254 of file tf_filter_impl.h.
|
private |
Definition at line 339 of file tf_filter_impl.h.
|
overridevirtualnoexcept |
Reset filter state.
Discards all queued messages. Existing connections to sources and sinks are unaffected.
\nothrow
Reimplemented from fkie_message_filters::FilterBase.
Definition at line 232 of file tf_filter_impl.h.
|
private |
Definition at line 364 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 246 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 226 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 213 of file tf_filter_impl.h.
|
private |
Definition at line 299 of file tf_filter_impl.h.
|
private |
Definition at line 212 of file tf_filter.h.