7 #include <Eigen/Geometry>
9 #include <SimoxUtility/algorithm/get_map_keys_values.h>
10 #include <SimoxUtility/math/pose.h>
16 #include <ArmarXCore/interface/core/PackagePath.h>
40 p.enabled, prefix +
"enabled",
"Enable or disable visualization of humans.");
41 defs->optional(p.frequencyHz, prefix +
"frequenzyHz",
"Frequency of visualization.");
58 bool batchMode =
true;
75 const std::vector<armarx::armem::human::HumanPose>& humanPoses)
77 std::string providerName =
"azure_kinect";
79 std::map<std::string, armarx::armem::human::HumanPose> poseMap;
83 if (humanPose.humanTrackingId.has_value())
85 poseMap[humanPose.humanTrackingId.value()] = humanPose;
102 while (updateTask and not updateTask->isStopped())
111 visualizeOnce(timestamp);
113 catch (
const std::exception& e)
115 ARMARX_WARNING <<
"Caught exception while visualizing robots: \n" << e.what();
119 ARMARX_WARNING <<
"Caught unknown exception while visualizing robots.";
122 if (debugObserver.has_value())
124 debugObserver->sendDebugObserverBatch();
127 metronome.waitForNextTick();
133 Visu::visualizeOnce(
const Time& timestamp)
145 const std::map<std::string, std::vector<armarx::armem::human::HumanPose>>
154 std::vector<viz::Layer> providerLayers;
155 for (
const auto& [providerName, humanPoses] : humanPosesPerProvider)
158 viz::Layer layerFrames = arviz.
layer(
"HumanPoses_" + providerName +
"_Frames");
161 visualizeHumanPoses(layers, humanPoses);
162 providerLayers.push_back(layerSkeleton);
163 providerLayers.push_back(layerFrames);
173 arviz.
commit(providerLayers);
178 if (debugObserver.has_value())
180 const std::string p =
"Visu | ";
181 debugObserver->setDebugObserverDatafield(p +
"t Total (ms)",
182 tVisuTotal.toMilliSecondsDouble());
183 debugObserver->setDebugObserverDatafield(p +
"t 1 Get Data (ms)",
184 tVisuGetData.toMilliSecondsDouble());
185 debugObserver->setDebugObserverDatafield(p +
"t 1.1 Descriptions (ms)",
186 tRobotDescriptions.toMilliSecondsDouble());
188 debugObserver->setDebugObserverDatafield(p +
"t 2 Build Layers (ms)",
189 tVisuBuildLayers.toMilliSecondsDouble());
190 debugObserver->setDebugObserverDatafield(p +
"t 3 Commit (ms)",
191 tVisuCommit.toMilliSecondsDouble());