tf2 rolling
tf2 maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.
Loading...
Searching...
No Matches
transform_storage.hpp
Go to the documentation of this file.
1// Copyright 2010, Willow Garage, Inc. All rights reserved.
2//
3// Redistribution and use in source and binary forms, with or without
4// modification, are permitted provided that the following conditions are met:
5//
6// * Redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer.
8//
9// * Redistributions in binary form must reproduce the above copyright
10// notice, this list of conditions and the following disclaimer in the
11// documentation and/or other materials provided with the distribution.
12//
13// * Neither the name of the Willow Garage nor the names of its
14// contributors may be used to endorse or promote products derived from
15// this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27// POSSIBILITY OF SUCH DAMAGE.
28
33#ifndef TF2__TRANSFORM_STORAGE_HPP_
34#define TF2__TRANSFORM_STORAGE_HPP_
35
37
40#include "tf2/time.hpp"
41
42namespace tf2
43{
45
48{
49public:
54 const TimePoint & stamp, const Quaternion & q, const Vector3 & t, CompactFrameID frame_id,
56
59 {
60 *this = rhs;
61 }
62
65 {
66 rotation_ = rhs.rotation_;
67 translation_ = rhs.translation_;
68 stamp_ = rhs.stamp_;
69 frame_id_ = rhs.frame_id_;
70 child_frame_id_ = rhs.child_frame_id_;
71 return *this;
72 }
73
75 bool operator==(const TransformStorage & rhs) const
76 {
77 return (this->rotation_ == rhs.rotation_) &&
78 (this->translation_ == rhs.translation_) &&
79 (this->stamp_ == rhs.stamp_) &&
80 (this->frame_id_ == rhs.frame_id_) &&
81 (this->child_frame_id_ == rhs.child_frame_id_);
82 }
83
85 bool operator!=(const TransformStorage & rhs) const
86 {
87 return !(*this == rhs);
88 }
89
95};
96} // namespace tf2
97#endif // TF2__TRANSFORM_STORAGE_HPP_
The Quaternion implements quaternion to perform linear algebra rotations in combination with Matrix3x...
Definition Quaternion.hpp:30
Storage for transforms and their parent.
Definition transform_storage.hpp:48
tf2::Quaternion rotation_
Definition transform_storage.hpp:90
TransformStorage(const TransformStorage &rhs)
Definition transform_storage.hpp:58
TransformStorage & operator=(const TransformStorage &rhs)
Definition transform_storage.hpp:64
TimePoint stamp_
Definition transform_storage.hpp:92
TransformStorage(const TimePoint &stamp, const Quaternion &q, const Vector3 &t, CompactFrameID frame_id, CompactFrameID child_frame_id)
bool operator!=(const TransformStorage &rhs) const
Definition transform_storage.hpp:85
tf2::Vector3 translation_
Definition transform_storage.hpp:91
bool operator==(const TransformStorage &rhs) const
Definition transform_storage.hpp:75
CompactFrameID child_frame_id_
Definition transform_storage.hpp:94
CompactFrameID frame_id_
Definition transform_storage.hpp:93
tf2::Vector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16...
Definition Vector3.hpp:40
Definition buffer_core.hpp:58
uint32_t CompactFrameID
Definition transform_storage.hpp:44
B toMsg(const A &a)
Function that converts from one type to a ROS message type. It has to be implemented by each data typ...
std::chrono::time_point< std::chrono::system_clock, Duration > TimePoint
Definition time.hpp:41
#define TF2_PUBLIC
Definition visibility_control.h:57