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
30
#include <
RobotAPI/libraries/armem/core/forward_declarations.h
>
31
#include <
RobotAPI/libraries/armem_robot_state/common/localization/types.h
>
32
33
34
namespace
armarx::armem::common::robot_state::localization
35
{
36
using
armarx::armem::common::robot_state::localization::TransformQuery
;
37
using
armarx::armem::common::robot_state::localization::TransformResult
;
38
39
40
41
class
TransformHelper
42
{
43
public
:
44
45
static
46
TransformResult
47
lookupTransform
(
48
const
armem::wm::CoreSegment
&
localizationCoreSegment
,
49
const
TransformQuery
& query);
50
51
static
52
TransformResult
53
lookupTransform
(
54
const
armem::server::wm::CoreSegment
&
localizationCoreSegment
,
55
const
TransformQuery
& query);
56
57
58
static
59
TransformChainResult
60
lookupTransformChain
(
61
const
armem::wm::CoreSegment
&
localizationCoreSegment
,
62
const
TransformQuery
& query);
63
64
static
65
TransformChainResult
66
lookupTransformChain
(
67
const
armem::server::wm::CoreSegment
&
localizationCoreSegment
,
68
const
TransformQuery
& query);
69
70
71
private
:
72
73
template
<
class
...Args>
74
static
75
TransformResult
76
_lookupTransform(
77
const
armem::base::CoreSegmentBase<Args...>
&
localizationCoreSegment
,
78
const
TransformQuery
& query);
79
80
81
template
<
class
...Args>
82
static
83
TransformChainResult
84
_lookupTransformChain(
85
const
armem::base::CoreSegmentBase<Args...>
&
localizationCoreSegment
,
86
const
TransformQuery
& query);
87
88
89
template
<
class
...Args>
90
static
91
std::vector<std::string>
92
_buildTransformChain(
93
const
armem::base::CoreSegmentBase<Args...>
&
localizationCoreSegment
,
94
const
TransformQuery
& query);
95
96
97
template
<
class
...Args>
98
static
99
std::vector<Eigen::Affine3f>
100
_obtainTransforms(
101
const
armem::base::CoreSegmentBase<Args...>
&
localizationCoreSegment
,
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
RobotAPI
libraries
armem_robot_state
common
localization
TransformHelper.h
Generated on Tue Feb 13 2024 06:12:07 for armarx_documentation by
1.8.17