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,
141 const IceUtil::Time durationEpsilon = IceUtil::Time::milliSeconds(-1);
142 (void)durationEpsilon;
157 std::scoped_lock l(memoryReaderMutex);
165 .header =
query.header,
167 .status = TransformResult::Status::ErrorFrameNotAvailable,
168 .errorMessage =
"Error in tf lookup '" +
query.header.parentFrame +
" -> " +
172 const auto& localizationCoreSegment =
176 return TransformHelper::lookupTransform(localizationCoreSegment,
query);
183 .header =
query.header,
185 .status = TransformResult::Status::Error,
186 .errorMessage =
"Error in tf lookup '" +
187 query.header.parentFrame +
" -> " +
188 query.header.frame +
"' : Memory exception."};
CoreSegmentT & getCoreSegment(const std::string &name)
The memory name system (MNS) client.
Reader useReader(const MemoryID &memoryID)
Use a memory server and get a reader for it.
The query::Builder class provides a fluent-style specification of hierarchical queries.
QueryInput buildQueryInput() const
CoreSegmentSelector & coreSegments()
Start specifying core segments.
CoreSegmentSelector & withName(const std::string &name) override
ProviderSegmentSelector & providerSegments()
Start specifying provider segments.
EntitySelector & all() override
SnapshotSelector & snapshots()
Start specifying entity snapshots.
ProviderSegmentSelector & withName(const std::string &name) override
EntitySelector & entities()
Start specifying entities.
SnapshotSelector & beforeOrAtTime(Time timestamp)
Indicates that a query to the Memory Name System failed.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
#define ARMARX_VERBOSE
The logging level for verbose information.
std::string const GlobalFrame
Variable of the global coordinate system.
armarx::core::time::DateTime Time
std::string GetHandledExceptionString()
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
wm::Memory memory
The slice of the memory that matched the query.