ArticulatedObjectVisu.cpp
Go to the documentation of this file.
2
3#include <algorithm>
4
5#include <SimoxUtility/math/pose.h>
6
11
13
14#include "Segment.h"
15
17{
18
19 void
21 const std::string& prefix)
22 {
23 defs->optional(
24 p.enabled, prefix + "enabled", "Enable or disable visualization of objects.");
25 defs->optional(p.frequencyHz, prefix + "frequenzyHz", "Frequency of visualization.");
26 }
27
30 const std::string& providerName,
32 {
33 viz::Layer layer = arviz.layer(providerName);
34
36
37 return layer;
38 }
39
40 void
42 viz::Layer& layer,
44 {
45 const auto visualizeObject =
47 {
48 const auto xmlPath = obj.description.xml.serialize();
49
50 // clang-format off
51 auto robot = viz::Robot(obj.description.name)
52 // .file(xmlPath.package, xmlPath.path)
53 .file(xmlPath.path, xmlPath.path)
54 .joints(obj.config.jointMap)
55 .pose(obj.config.globalPose);
56 // clang-format on
57
58 robot.useFullModel();
59
60 layer.add(robot);
61 };
62
63 std::for_each(objects.begin(), objects.end(), visualizeObject);
64 }
65
66 void
68 {
70 this, &ArticulatedObjectVisu::visualizeRun, 1000 / p.frequencyHz);
71
72 ARMARX_INFO << "ArticulatedObjectVisu: init";
73 updateTask->start();
74 }
75
76 void
77 ArticulatedObjectVisu::visualizeRun()
78 {
79 // std::scoped_lock lock(visuMutex);
80 ARMARX_INFO << "Update task";
81
82 // if (not p.enabled)
83 // {
84 // return;
85 // }
86
87 // TIMING_START(Visu);
88
89 const auto articulatedObjects = segment.getArticulatedObjects();
90 ARMARX_INFO << "Found " << articulatedObjects.size() << " articulated objects";
91
92 viz::Layer layer = arviz.layer("ArticulatedObjectInstances");
93
94 ARMARX_INFO << "visualizing objects";
95 visualizeObjects(layer, articulatedObjects);
96
97 ARMARX_INFO << "Committing objects";
98 arviz.commit({layer});
99
100 ARMARX_INFO << "Done committing";
101
102 // TIMING_END_STREAM(Visu, ARMARX_VERBOSE);
103
104 // if (debugObserver)
105 // {
106 // debugObserver->setDebugChannel(getName(),
107 // {
108 // { "t Visualize [ms]", new Variant(Visu.toMilliSecondsDouble()) },
109 // });
110 // }
111 }
112
113 // void Visu::RemoteGui::setup(const Visu& visu)
114 // {
115 // using namespace armarx::RemoteGui::Client;
116
117 // enabled.setValue(visu.enabled);
118 // inGlobalFrame.setValue(visu.inGlobalFrame);
119 // alpha.setRange(0, 1.0);
120 // alpha.setValue(visu.alpha);
121 // alphaByConfidence.setValue(visu.alphaByConfidence);
122 // oobbs.setValue(visu.oobbs);
123 // objectFrames.setValue(visu.objectFrames);
124 // {
125 // float max = 10000;
126 // objectFramesScale.setRange(0, max);
127 // objectFramesScale.setDecimals(2);
128 // objectFramesScale.setSteps(int(10 * max));
129 // objectFramesScale.setValue(visu.objectFramesScale);
130 // }
131
132 // GridLayout grid;
133 // int row = 0;
134 // grid.add(Label("Enabled"), {row, 0}).add(enabled, {row, 1});
135 // row++;
136 // grid.add(Label("Global Frame"), {row, 0}).add(inGlobalFrame, {row, 1});
137 // row++;
138 // grid.add(Label("Alpha"), {row, 0}).add(alpha, {row, 1}, {1, 3});
139 // row++;
140 // grid.add(Label("Alpha by Confidence"), {row, 0}).add(alphaByConfidence, {row, 1});
141 // row++;
142 // grid.add(Label("OOBB"), {row, 0}).add(oobbs, {row, 1});
143 // row++;
144 // grid.add(Label("Object Frames"), {row, 0}).add(objectFrames, {row, 1});
145 // grid.add(Label("Scale:"), {row, 2}).add(objectFramesScale, {row, 3});
146 // row++;
147
148 // group.setLabel("Visualization");
149 // group.addChild(grid);
150 // }
151
152 // void Visu::RemoteGui::update(Visu& visu)
153 // {
154 // visu.enabled = enabled.getValue();
155 // visu.inGlobalFrame = inGlobalFrame.getValue();
156 // visu.alpha = alpha.getValue();
157 // visu.alphaByConfidence = alphaByConfidence.getValue();
158 // visu.oobbs = oobbs.getValue();
159 // visu.objectFrames = objectFrames.getValue();
160 // visu.objectFramesScale = objectFramesScale.getValue();
161 // }
162
163} // namespace armarx::armem::server::obj::instance
The periodic task executes one thread method repeatedly using the time period specified in the constr...
void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="visu.")
viz::Layer visualizeProvider(const std::string &providerName, const armarx::armem::articulated_object::ArticulatedObjects &objects) const
void visualizeObjects(viz::Layer &layer, const armarx::armem::articulated_object::ArticulatedObjects &objects) const
virtual Layer layer(std::string const &name) const
Definition Client.cpp:80
CommitResult commit(StagedCommit const &commit)
Definition Client.cpp:89
DerivedT & pose(Eigen::Matrix4f const &pose)
Definition ElementOps.h:176
Robot & useFullModel()
Definition Robot.h:42
Robot & joints(std::map< std::string, float > const &values)
Definition Robot.h:74
Robot & file(std::string const &project, std::string const &filename)
Definition Robot.h:16
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
armarx::armem::robot_state::Robots ArticulatedObjects
Definition types.h:141
armarx::armem::robot_state::Robot ArticulatedObject
Definition types.h:140
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
void add(ElementT const &element)
Definition Layer.h:31