Go to the documentation of this file.
29 #include <IceUtil/Time.h>
32 #include <Eigen/Geometry>
35 #include <SimoxUtility/algorithm/get_map_keys_values.h>
36 #include <SimoxUtility/algorithm/string/string_tools.h>
37 #include <SimoxUtility/color/cmaps.h>
38 #include <SimoxUtility/math/pose/interpolate.h>
53 #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h>
63 memoryReader(t.memoryReader), properties(t.properties), propertyPrefix(t.propertyPrefix)
72 ARMARX_DEBUG <<
"TransformReader: registerPropertyDefinitions";
74 const std::string prefix = propertyPrefix;
76 def->optional(properties.localizationSegment,
77 prefix +
"localizationSegment",
78 "Name of the localization memory core segment to use.");
80 def->optional(properties.memoryName, prefix +
"Memory");
87 ARMARX_INFO <<
"TransformReader: Waiting for memory '" << properties.memoryName <<
"' ...";
90 memoryReader = memoryNameSystem.
useReader(properties.memoryName);
91 ARMARX_INFO <<
"TransformReader: Connected to memory '" << properties.memoryName;
102 const std::string& robotRootFrame,
106 .frame = robotRootFrame,
108 .timestamp = timestamp}};
139 ARMARX_DEBUG <<
"Looking up transform at timestamp " << timestamp;
141 const IceUtil::Time durationEpsilon = IceUtil::Time::milliSeconds(-1);
142 (void)durationEpsilon;
157 std::scoped_lock l(memoryReaderMutex);
161 if (not qResult.success)
169 query.
header.
frame +
"' : " + qResult.errorMessage};
173 qResult.memory.getCoreSegment(properties.localizationSegment);
186 .errorMessage =
"Error in tf lookup '" +
EntitySelector & all() override
EntitySelector & entities()
Start specifying entities.
QueryInput buildQueryInput() const
SnapshotSelector & snapshots()
Start specifying entity snapshots.
const std::string GlobalFrame
std::string GetHandledExceptionString()
CoreSegmentSelector & coreSegments()
Start specifying core segments.
CoreSegmentSelector & withName(const std::string &name) override
Reader useReader(const MemoryID &memoryID)
Use a memory server and get a reader for it.
armarx::core::time::DateTime Time
Represents a point in time.
ProviderSegmentSelector & withName(const std::string &name) override
const std::string localizationCoreSegment
SnapshotSelector & beforeOrAtTime(Time timestamp)
The memory name system (MNS) client.
Indicates that a query to the Memory Name System failed.
The query::Builder class provides a fluent-style specification of hierarchical queries.
ProviderSegmentSelector & providerSegments()
Start specifying provider segments.
QueryResult query(const QueryInput &input) const
Perform a query.