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)
73 ARMARX_DEBUG <<
"TransformReader: registerPropertyDefinitions";
75 const std::string prefix = propertyPrefix;
77 def->optional(properties.localizationSegment,
78 prefix +
"localizationSegment",
79 "Name of the localization memory core segment to use.");
81 def->optional(properties.memoryName, prefix +
"Memory");
88 ARMARX_INFO <<
"TransformReader: Waiting for memory '" << properties.memoryName <<
"' ...";
91 memoryReader = memoryNameSystem.
useReader(properties.memoryName);
92 ARMARX_INFO <<
"TransformReader: Connected to memory '" << properties.memoryName;
103 const std::string& robotRootFrame,
107 .frame = robotRootFrame,
109 .timestamp = timestamp}};
140 ARMARX_DEBUG <<
"Looking up transform at timestamp " << timestamp;
142 const IceUtil::Time durationEpsilon = IceUtil::Time::milliSeconds(-1);
143 (void)durationEpsilon;
158 std::scoped_lock l(memoryReaderMutex);
162 if (not qResult.success)
170 query.
header.
frame +
"' : " + qResult.errorMessage};
174 qResult.memory.getCoreSegment(properties.localizationSegment);
187 .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.