TransformHelper.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Fabian Reister ( fabian dot reister at kit dot edu )
17  * @date 2021
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <vector>
25 #include <optional>
26 
27 #include <Eigen/Core>
28 #include <Eigen/Geometry>
29 
32 
33 
35 {
38 
39 
40 
42  {
43  public:
44 
45  static
49  const TransformQuery& query);
50 
51  static
55  const TransformQuery& query);
56 
57 
58  static
62  const TransformQuery& query);
63 
64  static
68  const TransformQuery& query);
69 
70 
71  private:
72 
73  template <class ...Args>
74  static
76  _lookupTransform(
78  const TransformQuery& query);
79 
80 
81  template <class ...Args>
82  static
84  _lookupTransformChain(
86  const TransformQuery& query);
87 
88 
89  template <class ...Args>
90  static
91  std::vector<std::string>
92  _buildTransformChain(
94  const TransformQuery& query);
95 
96 
97  template <class ...Args>
98  static
99  std::vector<Eigen::Affine3f>
100  _obtainTransforms(
102  const std::vector<std::string>& tfChain,
103  const std::string& agent,
104  const armem::Time& timestamp);
105 
106 
107  template <class ...Args>
108  static
109  Eigen::Affine3f
110  _obtainTransform(
111  const std::string& entityName,
112  const armem::base::ProviderSegmentBase<Args...>& agentProviderSegment,
113  const armem::Time& timestamp);
114 
115  template <class ...Args>
116  static
117  std::optional<armarx::core::time::DateTime>
118  _obtainTimestamp(const armem::base::CoreSegmentBase<Args...>& localizationCoreSegment, const armem::Time& timestamp);
119 
120  static
121  Eigen::Affine3f
122  _interpolateTransform(
123  const std::vector<::armarx::armem::robot_state::Transform>& queue,
124  armem::Time timestamp);
125 
126  static
127  ::armarx::armem::robot_state::Transform
128  _convertEntityToTransform(
129  const armem::wm::EntityInstance& item);
130 
131  };
132 } // namespace armarx::armem::common::robot_state::localization
armarx::armem::base::ProviderSegmentBase
Data of a provider segment containing multiple entities.
Definition: ProviderSegmentBase.h:22
armarx::armem::wm::EntityInstance
Client-side working entity instance.
Definition: memory_definitions.h:32
forward_declarations.h
armarx::armem::common::robot_state::localization::TransformQuery
Definition: types.h:75
types.h
armarx::armem::base::CoreSegmentBase
Data of a core segment containing multiple provider segments.
Definition: CoreSegmentBase.h:22
armarx::armem::wm::CoreSegment
Client-side working memory core segment.
Definition: memory_definitions.h:119
armarx::armem::common::robot_state::localization::TransformResult
Definition: types.h:34
armarx::armem::common::robot_state::localization::TransformHelper::lookupTransformChain
static TransformChainResult lookupTransformChain(const armem::wm::CoreSegment &localizationCoreSegment, const TransformQuery &query)
Definition: TransformHelper.cpp:418
armarx::armem::server::wm::CoreSegment
base::CoreSegmentBase
Definition: memory_definitions.h:86
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::robot_state::constants::localizationCoreSegment
const std::string localizationCoreSegment
Definition: constants.h:29
armarx::armem::common::robot_state::localization::TransformHelper
Definition: TransformHelper.h:41
armarx::armem::common::robot_state::localization::TransformHelper::lookupTransform
static TransformResult lookupTransform(const armem::wm::CoreSegment &localizationCoreSegment, const TransformQuery &query)
Definition: TransformHelper.cpp:404
armarx::armem::common::robot_state::localization
Definition: TransformHelper.cpp:27
armarx::armem::common::robot_state::localization::TransformChainResult
Definition: types.h:54