ObjectMemoryEditor.cpp
Go to the documentation of this file.
2
4
7
8#include "Editor.h"
9
10namespace armarx
11{
14 {
17
18 defs->optional(this->objectScaling,
19 "Editor.ObjectScaling",
20 "Scaling factor that is applied to all intractable objects.");
21
22 defs->optional(this->confidenceThreshold,
23 "Editor.ConfidenceThreshold",
24 "Only objects with a confidence greater than this value are shown.");
25
26 return defs;
27 }
28
29 std::string
31 {
32 return "InteractiveMemoryEditor";
33 }
34
35 void
37 {
38 {
39 providerInfo.objectType = objpose::ObjectType::KnownObject;
40
41 for (const auto& dataset : objectFinder.getDatasets())
42 {
43 std::vector<ObjectInfo> objects = objectFinder.findAllObjectsOfDataset(dataset);
44
45 for (const auto& obj : objects)
46 {
47 providerInfo.supportedObjects.push_back(armarx::toIce(obj.id()));
48 }
49 }
50 }
51 }
52
53 void
55 {
57
58 objectVizTask = new SimpleRunningTask<>([this]() { this->run(); });
59 objectVizTask->start();
60 }
61
62 void
66
67 void
71
72 void
73 ObjectMemoryEditor::run()
74 {
76
77 Editor::Properties properties = {
78 .providerName = getName(),
79 .objectScaling = objectScaling,
80 .confidenceThreshold = confidenceThreshold,
81 .availableObjects = providerInfo.supportedObjects,
82 };
83
84 Editor editor(
85 arviz,
86 properties,
88 { objectPoseTopic->reportObjectPoses(getName(), objpose::toIce(poses)); },
89 [client]() -> objpose::ObjectPoseSeq { return client.fetchObjectPoses(); });
90
91 Metronome metronome(Frequency::Hertz(20));
92 while (objectVizTask and not objectVizTask->isStopped())
93 {
94 editor.step();
95
96 metronome.waitForNextTick();
97 }
98 }
99
100 objpose::ProviderInfo
101 ObjectMemoryEditor::getProviderInfo(const Ice::Current& /*unused*/)
102 {
103 return providerInfo;
104 }
105
106 objpose::provider::RequestObjectsOutput
107 ObjectMemoryEditor::requestObjects(const objpose::provider::RequestObjectsInput& input,
108 const Ice::Current& /*unused*/)
109 {
110 objpose::provider::RequestObjectsOutput output;
111
112 for (const auto& id : input.objectIDs)
113 {
114 output.results[id].success = false;
115 }
116
117 return output;
118 }
119} // namespace armarx
Default component property definition container.
Definition Component.h:70
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Definition Component.cpp:90
static Frequency Hertz(std::int64_t hertz)
Definition Frequency.cpp:20
std::string getName() const
Retrieve name of object.
void onInitComponent() override
Pure virtual hook for the subclass.
void onDisconnectComponent() override
Hook for subclass.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void onConnectComponent() override
Pure virtual hook for the subclass.
void onExitComponent() override
Hook for subclass.
objpose::provider::RequestObjectsOutput requestObjects(const objpose::provider::RequestObjectsInput &input, const Ice::Current &) override
std::string getDefaultName() const override
Retrieve default name of component.
objpose::ProviderInfo getProviderInfo(const Ice::Current &=Ice::emptyCurrent) override
objpose::ObjectPoseClient getClient() const
objpose::ObjectPoseStorageInterfacePrx objectPoseTopic
Provides access to the armarx::objpose::ObjectPoseStorageInterface (aka the object memory).
ObjectPoseSeq fetchObjectPoses() const
Fetch all known object poses.
std::vector< ObjectPose > ObjectPoseSeq
std::vector< ProvidedObjectPose > ProvidedObjectPoseSeq
objpose::AABB toIce(const simox::AxisAlignedBoundingBox &aabb)
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
void toIce(std::map< IceKeyT, IceValueT > &iceMap, const boost::container::flat_map< CppKeyT, CppValueT > &cppMap)
SimpleRunningTask(Ts...) -> SimpleRunningTask< std::function< void(void)> >