From bc2aad209d88295c51423c456e31ad73eb8df894 Mon Sep 17 00:00:00 2001 From: phesch <ulila@student.kit.edu> Date: Mon, 9 May 2022 19:53:45 +0200 Subject: [PATCH] Add time offset and window params to ObjMem Visu --- .../armem_objects/server/instance/Visu.cpp | 23 +++++++++++++++---- .../armem_objects/server/instance/Visu.h | 7 +++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp index 131a60865..07ded4465 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp @@ -49,8 +49,12 @@ namespace armarx::armem::server::obj::instance defs->optional(useArticulatedModels, prefix + "useArticulatedModels", "Prefer articulated object models if available."); - defs->optional(showLinearPredictions, prefix + "showLinearPredictions", + defs->optional(showLinearPredictions, prefix + "predictions.linear.show", "Show arrows linearly predicting object positions."); + defs->optional(linearPredictionTimeOffsetSeconds, prefix + "predictions.linear.timeOffset", + "The offset (in seconds) to the current time to make predictions for."); + defs->optional(linearPredictionTimeWindowSeconds, prefix + "predictions.linear.timeWindow", + "The time window (in seconds) into the past to perform the regression on."); } @@ -247,9 +251,9 @@ namespace armarx::armem::server::obj::instance objpose::ObjectPosePredictionRequest request; toIce(request.objectID, id); request.settings.predictionEngineID = "Linear Position Regression"; - toIce(request.timeWindow, Duration::Seconds(2)); - // TODO(phesch): Make parametrizable. - toIce(request.timestamp, Time::Now() + Duration::MilliSeconds(1000)); + toIce(request.timeWindow, Duration::SecondsDouble(linearPredictionTimeWindowSeconds)); + toIce(request.timestamp, + Time::Now() + Duration::SecondsDouble(linearPredictionTimeOffsetSeconds)); auto predictionResult = predictor(request); if (predictionResult.success) { @@ -302,6 +306,9 @@ namespace armarx::armem::server::obj::instance useArticulatedModels.setValue(visu.useArticulatedModels); showLinearPredictions.setValue(visu.showLinearPredictions); + linearPredictionTimeOffsetSeconds.setValue(visu.linearPredictionTimeOffsetSeconds); + linearPredictionTimeWindowSeconds.setValue(visu.linearPredictionTimeWindowSeconds); + linearPredictionTimeWindowSeconds.setRange(0, std::numeric_limits<float>::max()); GridLayout grid; int row = 0; @@ -330,6 +337,12 @@ namespace armarx::armem::server::obj::instance grid.add(Label("Show Linear Predictions"), {row, 0}).add(showLinearPredictions, {row, 1}); row++; + grid.add(Label("Time (seconds from now):"), {row, 0}) + .add(linearPredictionTimeOffsetSeconds, {row, 1}); + row++; + grid.add(Label("Time Window (seconds):"), {row, 0}) + .add(linearPredictionTimeWindowSeconds, {row, 1}); + row++; group = GroupBox(); group.setLabel("Visualization"); @@ -380,6 +393,8 @@ namespace armarx::armem::server::obj::instance visu.useArticulatedModels = useArticulatedModels.getValue(); visu.showLinearPredictions = showLinearPredictions.getValue(); + visu.linearPredictionTimeOffsetSeconds = linearPredictionTimeOffsetSeconds.getValue(); + visu.linearPredictionTimeWindowSeconds = linearPredictionTimeWindowSeconds.getValue(); } } diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h index 8803e4d73..a88e3d2c8 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h @@ -87,8 +87,10 @@ namespace armarx::armem::server::obj::instance /// Prefer articulated models if available. bool useArticulatedModels = true; - /// Show linear prediction arrows for object positions. + /// Linear prediction arrows for object positions. bool showLinearPredictions = false; + float linearPredictionTimeOffsetSeconds = 1; + float linearPredictionTimeWindowSeconds = 2; SimpleRunningTask<>::pointer_type updateTask; @@ -128,6 +130,9 @@ namespace armarx::armem::server::obj::instance armarx::RemoteGui::Client::CheckBox showLinearPredictions; + armarx::RemoteGui::Client::FloatSpinBox linearPredictionTimeOffsetSeconds; + armarx::RemoteGui::Client::FloatSpinBox linearPredictionTimeWindowSeconds; + void setup(const Visu& visu); void update(Visu& visu); -- GitLab