From c6d0a42f96f2842a85fd64bc12a0c0adb58d61e5 Mon Sep 17 00:00:00 2001 From: Patrick Hegemann <335495-patrickhegemann@users.noreply.gitlab.com> Date: Wed, 9 Feb 2022 11:41:34 +0100 Subject: [PATCH] Get snapshot before or at timestamp in TransformHelper --- .../common/localization/TransformHelper.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp index dbf23a237..a595d5502 100644 --- a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp @@ -5,6 +5,8 @@ #include <SimoxUtility/math/pose/interpolate.h> #include <ArmarXCore/core/exceptions/LocalException.h> +#include "ArmarXCore/core/exceptions/local/ExpressionException.h" + #include <RobotAPI/libraries/core/FramedPose.h> #include <RobotAPI/libraries/aron/common/aron_conversions.h> @@ -249,7 +251,10 @@ namespace armarx::armem::common::robot_state::localization // } std::vector<::armarx::armem::robot_state::Transform> transforms; - transforms.push_back(_convertEntityToTransform(entity.getLatestSnapshot().getInstance(0))); + + auto snapshot = entity.findLatestSnapshotBeforeOrAt(timestamp); + ARMARX_CHECK(snapshot) << "No snapshot found before or at time " << timestamp; + transforms.push_back(_convertEntityToTransform(snapshot->getInstance(0))); // ARMARX_DEBUG << "obtaining transform"; if (transforms.size() > 1) -- GitLab