From 1932cb191db69e0a4aba88b857c8bb06cd9a31a0 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Mon, 28 Jun 2021 10:11:06 +0200 Subject: [PATCH] Try to resolve object IDs without dataset --- .../libraries/armem_objects/SceneSnapshot.cpp | 15 +++++++++++++++ .../libraries/armem_objects/SceneSnapshot.h | 2 ++ .../armem_objects/server/instance/Segment.cpp | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp index d8ae0a10b..d491662ed 100644 --- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp +++ b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp @@ -3,6 +3,7 @@ #include <SimoxUtility/json.h> #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h> +#include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h> // #include <RobotAPI/libraries/armem/core/json_conversions.h> @@ -15,6 +16,20 @@ namespace armarx::armem::obj return ObjectID(className); } + + ObjectID SceneSnapshot::Object::getClassID(ObjectFinder& finder) const + { + ObjectID id = getClassID(); + if (id.dataset().empty()) + { + if (std::optional<ObjectInfo> info = finder.findObject(id.className())) + { + return info->id(); + } + } + return id; + } + } diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h index 2baa2cd3c..add5f1f18 100644 --- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h +++ b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h @@ -29,6 +29,7 @@ namespace armarx { class ObjectID; + class ObjectFinder; } namespace armarx::armem::obj { @@ -44,6 +45,7 @@ namespace armarx::armem::obj Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity(); ObjectID getClassID() const; + ObjectID getClassID(ObjectFinder& finder) const; }; std::vector<Object> objects; }; diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp index ae496c09b..f85d71460 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp @@ -842,7 +842,7 @@ namespace armarx::armem::server::obj::instance for (const auto& object : scene.objects) { - const ObjectID classID = object.getClassID(); + const ObjectID classID = object.getClassID(objectFinder); objpose::ObjectPose& pose = objectPoses.emplace_back(); -- GitLab