From aea129e46db0270585b9d36cc2cfb87f8eacf67d Mon Sep 17 00:00:00 2001 From: Fabian Paus <fabian.paus@kit.edu> Date: Tue, 3 Dec 2019 17:58:06 +0100 Subject: [PATCH] ArViz: Add loopback capability --- .../RobotAPI/gui-plugins/ArViz/ArVizWidget.ui | 10 ++++++++++ .../ArViz/ArVizWidgetController.cpp | 18 +++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidget.ui b/source/RobotAPI/gui-plugins/ArViz/ArVizWidget.ui index 7022edb4f..a4fd359f7 100644 --- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidget.ui +++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidget.ui @@ -481,6 +481,16 @@ </property> </widget> </item> + <item> + <widget class="QCheckBox" name="replayLoopbackCheckBox"> + <property name="text"> + <string>Loopback</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> <item> <spacer name="horizontalSpacer_6"> <property name="orientation"> diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp index 55f18a35c..fd5acc314 100644 --- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp @@ -650,8 +650,7 @@ long ArVizWidgetController::getRevisionForTimestamp(long timestamp) auto updateEnd = std::lower_bound(batch.updates.begin(), batch.updates.end(), pivot, timestampLess); if (updateEnd == batch.updates.end()) { - ARMARX_WARNING << "Could not find revision for timestamp: " << timestampToString(timestamp); - return -1; + return -2; } if (updateEnd != batch.updates.begin()) { @@ -689,13 +688,18 @@ void ArVizWidgetController::onReplayTimerTick() replayCurrentTimestamp += 33000 * replaySpeed; long revision = getRevisionForTimestamp(replayCurrentTimestamp); - ARMARX_INFO << "Timestamp: " << timestampToString(replayCurrentTimestamp) - << "\nRevision: " << revision; - if (revision < 0) + if (revision == -2) { - replayCurrentTimestamp = currentRecording.firstTimestampInMicroSeconds; + if (widget.replayLoopbackCheckBox->checkState() == Qt::Checked) + { + replayCurrentTimestamp = currentRecording.firstTimestampInMicroSeconds; + } + else + { + revision = currentRecording.lastRevision; + } } - else + if (revision >= 0) { widget.replayRevisionSlider->setValue(revision); } -- GitLab