25#include <SimoxUtility/algorithm/string.h>
44 defs->defineOptionalProperty<std::string>(
45 "PriorKnowledgeName",
"PriorKnowledge",
"Prior knowledge name.");
46 defs->defineOptionalProperty<std::string>(
47 "WorkingMemoryName",
"WorkingMemory",
"Working memory name.");
48 defs->defineOptionalProperty<std::string>(
49 "RobotStateComponentName",
"RobotStateComponent",
"Robot state component name.");
52 defs->defineOptionalProperty<std::string>(
53 "ObjectClassBlackWhitelistTopic",
54 "WorkingMemoryToArVizObjectClassBlackWhitelistUpdates",
55 "The topic where updates to the object class black-whitelist are published.");
56 defs->defineOptionalProperty<std::vector<std::string>>(
57 "ObjectClassWhitelist",
59 "If not empty, only these object classes are shown (comma separated list).")
60 .map(
"[empty whitelist]", {});
61 defs->defineOptionalProperty<std::vector<std::string>>(
62 "ObjectClassBlacklist",
64 "These object classes will never be shown (comma separated list).")
65 .map(
"[empty blacklist]", {});
69 p.updateFrequency,
"p.UpdateFrequency",
"Target number of updates per second.");
71 defs->optional(p.floor.show,
"p.floor.Show",
"Whether to show the floor.");
75 "Height (z) of the floor plane. \n"
76 "Set slightly below 0 to avoid z-fighting when drawing planes on the ground.");
77 defs->optional(p.loadObjectDatasetsStr,
79 "Only load the files for the following datasets, separated by ;. Load all "
80 "if input is empty.");
89 return "WorkingMemoryToArViz";
111 auto datasets = simox::alg::split(p.loadObjectDatasetsStr,
";");
113 drawer.setArViz(
arviz);
114 drawer.initFromProxies(priorKnowledge, workingMemory, robotStateComponent, datasets);
117 armarx::BlackWhitelistUpdate update;
118 getProperty(update.whitelist.set,
"ObjectClassWhitelist");
119 getProperty(update.blacklist.set,
"ObjectClassBlacklist");
120 drawer.updateObjectClassBlackWhitelist(update);
123 if (p.floor.show > 0)
125 drawer.updateFloorObject(p.floor.height);
134 CycleUtil cycle(
int(1000 / p.updateFrequency));
136 while (task && !task->isStopped())
139 std::scoped_lock lock(drawerMutex);
140 drawer.updateObjects();
171 std::scoped_lock lock(drawerMutex);
172 drawer.updateObjectClassBlackWhitelist(update);
177 const memoryx::AttachObjectToRobotNodeInput& input,
181 std::scoped_lock lock(drawerMutex);
182 drawer.attachObjectToRobotNode(input);
187 const memoryx::DetachObjectFromRobotNodeInput& input,
191 std::scoped_lock lock(drawerMutex);
192 drawer.detachObjectFromRobotNode(input);
armarx::viz::Client arviz
ComponentPropertyDefinitions(std::string prefix, bool hasObjectNameParameter=true)
bool usingProxyFromProperty(const std::string &propertyName, const std::string &endpoints="")
Use a proxy whose name is specified by the given property.
void usingTopicFromProperty(const std::string &propertyName, bool orderedPublishing=false)
Use a topic whose name is specified by the given property.
ProxyType getProxyFromProperty(const std::string &propertyName, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true)
Get a proxy whose name is specified by the given property.
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Property< PropertyType > getProperty(const std::string &name)
This util class helps with keeping a cycle time during a control cycle.
IceUtil::Time waitForCycleDuration()
This function will wait (virtual or system time) until the cycle time is reached.
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
Property definitions of WorkingMemoryToArViz.
WorkingMemoryToArVizPropertyDefinitions(std::string prefix)
void onInitComponent() override
Pure virtual hook for the subclass.
void attachObjectToRobotNode(const memoryx::AttachObjectToRobotNodeInput &input, const Ice::Current &=Ice::emptyCurrent) override
void onDisconnectComponent() override
Hook for subclass.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void onConnectComponent() override
Pure virtual hook for the subclass.
void detachObjectFromRobotNode(const memoryx::DetachObjectFromRobotNodeInput &input, const Ice::Current &=Ice::emptyCurrent) override
void onExitComponent() override
Hook for subclass.
void updateBlackWhitelist(const BlackWhitelistUpdate &update, const Ice::Current &=Ice::emptyCurrent) override
std::string getDefaultName() const override
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
SimpleRunningTask(Ts...) -> SimpleRunningTask< std::function< void(void)> >
#define ARMARX_TRACE_LITE