|
::std::string | allFramesAsString () const |
| A way to see what frames have been cached. Useful for debugging. More...
|
|
::std::string | allFramesAsYAML () const |
| Backwards compatibility for #84. More...
|
|
::std::string | allFramesAsYAML (double current_time) const |
| A way to see what frames have been cached in yaml format. Useful for debugging tools. More...
|
|
bool | canTransform (const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &source_frame, const ::ros::Time &source_time, const ::std::string &fixed_frame, ::ros::Duration timeout) const |
| Test if a transform is possible. More...
|
|
bool | canTransform (const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &source_frame, const ::ros::Time &source_time, const ::std::string &fixed_frame, ::ros::Duration timeout, ::std::string *errstr) const override |
|
bool | canTransform (const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &source_frame, const ::ros::Time &source_time, const ::std::string &fixed_frame, ::std::string *error_msg=nullptr) const |
| Test if a transform is possible. More...
|
|
bool | canTransform (const ::std::string &target_frame, const ::std::string &source_frame, const ::ros::Time &time, ::ros::Duration timeout) const |
| Test if a transform is possible. More...
|
|
bool | canTransform (const ::std::string &target_frame, const ::std::string &source_frame, const ::ros::Time &time, ::ros::Duration timeout, ::std::string *errstr) const override |
|
bool | canTransform (const ::std::string &target_frame, const ::std::string &source_frame, const ::ros::Time &time, ::std::string *error_msg=nullptr) const |
| Test if a transform is possible. More...
|
|
void | clear () |
| Clear all data. More...
|
|
::ros::Duration | getCacheLength () |
| Get the duration over which this transformer will cache. More...
|
|
::tf2::BufferCore & | getRawBuffer () |
| Get the raw tf2::BufferCore that actually stores the transforms. More...
|
|
const ::tf2::BufferCore & | getRawBuffer () const |
| Get the raw tf2::BufferCore that actually stores the transforms. More...
|
|
| InterruptibleTFBuffer (const ::ros::Duration &cacheTime={::tf2::BufferCore::DEFAULT_CACHE_TIME, 0}) |
| Create the buffer. More...
|
|
| InterruptibleTFBuffer (const ::std::shared_ptr<::tf2::BufferCore > &parentBuffer) |
| Create the buffer that relays lookups to the given parentBuffer and adds the interruptible behavior to it. Cache duration is the same as in parentBuffer. Only getCacheLength(), canTransform() and lookupTransform() methods are valid on this buffer in this mode. Any modifications/tf listeners should be done on the parent buffer. More...
|
|
::geometry_msgs::TransformStamped | lookupTransform (const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &source_frame, const ::ros::Time &source_time, const ::std::string &fixed_frame) const |
| Get the transform between two frames by frame ID assuming fixed frame. More...
|
|
::geometry_msgs::TransformStamped | lookupTransform (const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &source_frame, const ::ros::Time &source_time, const ::std::string &fixed_frame, const ::ros::Duration timeout) const override |
|
::geometry_msgs::TransformStamped | lookupTransform (const ::std::string &target_frame, const ::std::string &source_frame, const ::ros::Time &time) const |
| Get the transform between two frames by frame ID. More...
|
|
::geometry_msgs::TransformStamped | lookupTransform (const ::std::string &target_frame, const ::std::string &source_frame, const ::ros::Time &time, const ::ros::Duration timeout) const override |
|
bool | ok () const override |
| Whether it is OK to continue. If false, all pending lookups should stop as soon as possible. More...
|
|
virtual void | requestStop () |
| Request all pending lookups to stop. After calling this, ok() should return false. More...
|
|
bool | setCanTransformPollingScale (double scale) |
| Set the scale by which canTransform() timeout is multiplied to determine the transform polling rate. More...
|
|
bool | setMinPollingDuration (const ::ros::Duration &duration) |
| Set minimum duration of a pause between two transform polls. More...
|
|
bool | setTransform (const ::geometry_msgs::TransformStamped &transform, const ::std::string &authority, bool is_static=false) |
| Add transform information to the tf data structure. More...
|
|
template<class A , class B > |
B & | transform (const A &in, B &out, const ::std::string &target_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame and convert to a specified output type. It is templated on two types: the type of the input object and the type of the transformed output. For example, the template types could be Transform, Pose, Vector, or Quaternion messages type (as defined in geometry_msgs). The function will calculate the transformation and then convert the result into the specified output type. Compilation will fail if a known conversion does not exist bewteen the two template parameters. More...
|
|
template<class A , class B > |
B & | transform (const A &in, B &out, const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &fixed_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame and convert to a specified output type (advanced). It is templated on two types: the type of the input object and the type of the transformed output. For example, the template type could be a Transform, Pose, Vector, or Quaternion message type (as defined in geometry_msgs). The function will calculate the transformation and then convert the result into the specified output type. Compilation will fail if a known conversion does not exist bewteen the two template parameters. This function follows the advanced API, which allows transforming between different time points, and specifying a fixed frame that does not varying in time. More...
|
|
template<class T > |
T | transform (const T &in, const ::std::string &target_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame. This function is templated and can take as input any valid mathematical object that tf knows how to apply a transform to, by way of the templated math conversions interface. For example, the template type could be a Transform, Pose, Vector, or Quaternion message type (as defined in geometry_msgs). More...
|
|
template<class T > |
T | transform (const T &in, const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &fixed_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame (advanced). This function is templated and can take as input any valid mathematical object that tf knows how to apply a transform to, by way of the templated math conversions interface. For example, the template type could be a Transform, Pose, Vector, or Quaternion message type (as defined in geometry_msgs). This function follows the advanced API, which allows transforming between different time points, and specifying a fixed frame that does not varying in time. More...
|
|
template<class T > |
T & | transform (const T &in, T &out, const ::std::string &target_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame. This function is templated and can take as input any valid mathematical object that tf knows how to apply a transform to, by way of the templated math conversions interface. For example, the template type could be a Transform, Pose, Vector, or Quaternion message type (as defined in geometry_msgs). More...
|
|
template<class T > |
T & | transform (const T &in, T &out, const ::std::string &target_frame, const ::ros::Time &target_time, const ::std::string &fixed_frame, ::ros::Duration timeout={0, 0}) const |
| Transform an input into the target frame (advanced). This function is templated and can take as input any valid mathematical object that tf knows how to apply a transform to, by way of the templated math conversions interface. For example, the template type could be a Transform, Pose, Vector, or Quaternion message type (as defined in geometry_msgs). This function follows the advanced API, which allows transforming between different time points, and specifying a fixed frame that does not varying in time. More...
|
|
| ~InterruptibleTFBuffer () override |
| Destroys the class. Waits until a running canTransform() call is finished. More...
|
|
| InterruptibleSleepInterface () |
|
virtual bool | sleep (const ::ros::Duration &duration) const |
| Sleep for the given duration or until ok() returns false. More...
|
|
virtual | ~InterruptibleSleepInterface () |
| Destroy the object waiting for a pending sleep() call to finish. More...
|
|
|
typedef boost::function< void(TransformableRequestHandle request_handle, const std::string &target_frame, const std::string &source_frame, ros::Time time, TransformableResult result)> | TransformableCallback |
|
| Buffer (ros::Duration cache_time=ros::Duration(BufferCore::DEFAULT_CACHE_TIME), bool debug=false) |
|
virtual bool | canTransform (const std::string &target_frame, const ros::Time &target_time, const std::string &source_frame, const ros::Time &source_time, const std::string &fixed_frame, const ros::Duration timeout, std::string *errstr=NULL) const |
|
virtual bool | canTransform (const std::string &target_frame, const std::string &source_frame, const ros::Time &target_time, const ros::Duration timeout, std::string *errstr=NULL) const |
|
virtual geometry_msgs::TransformStamped | lookupTransform (const std::string &target_frame, const ros::Time &target_time, const std::string &source_frame, const ros::Time &source_time, const std::string &fixed_frame, const ros::Duration timeout) const |
|
virtual geometry_msgs::TransformStamped | lookupTransform (const std::string &target_frame, const std::string &source_frame, const ros::Time &time, const ros::Duration timeout) const |
|
B & | transform (const A &in, B &out, const std::string &target_frame, const ros::Time &target_time, const std::string &fixed_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
B & | transform (const A &in, B &out, const std::string &target_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
T | transform (const T &in, const std::string &target_frame, const ros::Time &target_time, const std::string &fixed_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
T | transform (const T &in, const std::string &target_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
T & | transform (const T &in, T &out, const std::string &target_frame, const ros::Time &target_time, const std::string &fixed_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
T & | transform (const T &in, T &out, const std::string &target_frame, ros::Duration timeout=ros::Duration(0.0)) const |
|
boost::signals2::connection | _addTransformsChangedListener (boost::function< void(void)> callback) |
|
std::string | _allFramesAsDot () const |
|
std::string | _allFramesAsDot (double current_time) const |
|
void | _chainAsVector (const std::string &target_frame, ros::Time target_time, const std::string &source_frame, ros::Time source_time, const std::string &fixed_frame, std::vector< std::string > &output) const |
|
bool | _frameExists (const std::string &frame_id_str) const |
|
void | _getFrameStrings (std::vector< std::string > &ids) const |
|
int | _getLatestCommonTime (CompactFrameID target_frame, CompactFrameID source_frame, ros::Time &time, std::string *error_string) const |
|
bool | _getParent (const std::string &frame_id, ros::Time time, std::string &parent) const |
|
CompactFrameID | _lookupFrameNumber (const std::string &frameid_str) const |
|
CompactFrameID | _lookupOrInsertFrameNumber (const std::string &frameid_str) |
|
void | _removeTransformsChangedListener (boost::signals2::connection c) |
|
CompactFrameID | _validateFrameId (const char *function_name_arg, const std::string &frame_id) const |
|
TransformableCallbackHandle | addTransformableCallback (const TransformableCallback &cb) |
|
TransformableRequestHandle | addTransformableRequest (TransformableCallbackHandle handle, const std::string &target_frame, const std::string &source_frame, ros::Time time) |
|
std::string | allFramesAsString () const |
|
std::string | allFramesAsYAML () const |
|
std::string | allFramesAsYAML (double current_time) const |
|
| BufferCore (ros::Duration cache_time_=ros::Duration(DEFAULT_CACHE_TIME)) |
|
void | cancelTransformableRequest (TransformableRequestHandle handle) |
|
bool | canTransform (const std::string &target_frame, const ros::Time &target_time, const std::string &source_frame, const ros::Time &source_time, const std::string &fixed_frame, std::string *error_msg=NULL) const |
|
bool | canTransform (const std::string &target_frame, const std::string &source_frame, const ros::Time &time, std::string *error_msg=NULL) const |
|
void | clear () |
|
ros::Duration | getCacheLength () |
|
bool | isUsingDedicatedThread () const |
|
geometry_msgs::TransformStamped | lookupTransform (const std::string &target_frame, const ros::Time &target_time, const std::string &source_frame, const ros::Time &source_time, const std::string &fixed_frame) const |
|
geometry_msgs::TransformStamped | lookupTransform (const std::string &target_frame, const std::string &source_frame, const ros::Time &time) const |
|
void | removeTransformableCallback (TransformableCallbackHandle handle) |
|
bool | setTransform (const geometry_msgs::TransformStamped &transform, const std::string &authority, bool is_static=false) |
|
void | setUsingDedicatedThread (bool value) |
|
virtual | ~BufferCore (void) |
|
| InterruptibleSleepInterface () |
|
virtual bool | sleep (const ::ros::Duration &duration) const |
| Sleep for the given duration or until ok() returns false. More...
|
|
virtual | ~InterruptibleSleepInterface () |
| Destroy the object waiting for a pending sleep() call to finish. More...
|
|
static const int | DEFAULT_CACHE_TIME |
|
static const uint32_t | MAX_GRAPH_DEPTH |
|
Provides overrides of canTransform() that can be interrupted. Normally, canTransform() waits until transform is available, timeout is reached (which may be never in paused simulation), time jumps backwards or ros::ok() returns false. This buffer adds another option of interrupting the call. It also allows "wrapping around" another buffer that does not support this interruptibility and add this ability to it.
- Note
- In the "wrapping around" mode, do not call any other functions than canTransform() and lookupTransform(). Other functions will return wrong results.
-
The buffer is partly concurrent. This means canTransform() and lookupTransform() calls can be interleaved, but in the end all of them share the same tf2::BufferCore which locks the frames mutex in canTransform()/lookupTransform(). But they access the BufferCore only from time to time in some polling intervals, so concurrency should be good in the end.
-
The destructor of this class does not finish until no canTransform() or lookupTransform() call is being executed. Call requestStop() to instruct the buffer to reject any new requests and finish the ongoing ones as soon as possible, most probably resulting in failures.
Definition at line 42 of file interruptible_buffer.h.