From 91ca0ac159ac4da6f602f06f668c740a01fa598f Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Mon, 27 Jan 2025 19:40:43 +0100 Subject: [PATCH] fixing example --- .../ArticulatedObjectLocalizerExample.cpp | 45 +++++++++++++++---- .../client/articulated_object/Reader.cpp | 2 +- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp index 35f546692..1f812f23a 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp @@ -22,6 +22,7 @@ #include "ArticulatedObjectLocalizerExample.h" #include <memory> +#include <optional> #include <Eigen/Geometry> @@ -38,6 +39,9 @@ #include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/services/tasks/PeriodicTask.h> #include <ArmarXCore/core/time/CycleUtil.h> +#include <ArmarXCore/core/time/Duration.h> +#include <ArmarXCore/core/time/ScopedStopWatch.h> +#include <ArmarXCore/core/time/StopWatch.h> #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem_objects/types.h> @@ -162,13 +166,32 @@ namespace armarx::articulated_object } } - const auto state = articulatedObjectReaderPlugin->get().queryState( - articulatedObject->getType() + "/" + articulatedObject->getName(), - Clock::Now(), - p.obj.readProviderName); + const armem::robot_state::RobotState state = [this]() + { + // Query state from memory + { + const std::optional<armem::robot_state::RobotState> state = + articulatedObjectReaderPlugin->get().queryState( + articulatedObject->getType() + "/" + articulatedObject->getName(), + Clock::Now(), + p.obj.readProviderName); + + if (state) + { + return state.value(); + } + } + + // The object does not exist in the memory (yet). Therefore, we create an initial state. + armem::robot_state::RobotState state{.timestamp = Clock::Now(), + .globalPose = Eigen::Isometry3f::Identity(), + .jointMap = articulatedObject->getJointValues(), + .proprioception = std::nullopt}; + + return state; + }(); - ARMARX_CHECK(state.has_value()); - articulatedObject->setGlobalPose(state->globalPose.matrix()); + articulatedObject->setGlobalPose(state.globalPose.matrix()); ARMARX_DEBUG << "Reporting articulated objects"; @@ -189,8 +212,14 @@ namespace armarx::articulated_object // articulatedObject->setGlobalPose(simox::math::pose(Eigen::Vector3f(1000, 0, 0))); articulatedObject->setJointValues(jointValues); - auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get(); - articulatedObjectWriter.storeArticulatedObject(articulatedObject, now); + { + core::time::ScopedStopWatch sw( + [this](const armarx::Duration& dur) + { ARMARX_INFO << "Storing object took " << dur << "."; }); + + auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get(); + articulatedObjectWriter.storeArticulatedObject(articulatedObject, now); + } } } // namespace armarx::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp index 55a101582..4feb69e76 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp @@ -352,7 +352,7 @@ namespace armarx::armem::articulated_object } catch (...) { - ARMARX_FATAL << "Failed to obtain robot state"; + ARMARX_VERBOSE << "Failed to obtain robot state"; return std::nullopt; } } -- GitLab