From ebf508974b4d7ead165b9a31d4d0ae258537cd9d Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Fri, 25 Jun 2021 09:35:21 +0200 Subject: [PATCH] SceneSnapshot: Store just a string instead of ObjectID for class --- .../libraries/armem_objects/SceneSnapshot.cpp | 14 ++++++++++++-- .../libraries/armem_objects/SceneSnapshot.h | 13 +++++++------ .../armem_objects/server/instance/Segment.cpp | 13 ++++++++++--- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp index c410c7e35..d8ae0a10b 100644 --- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp +++ b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp @@ -2,18 +2,26 @@ #include <SimoxUtility/json.h> +#include <RobotAPI/libraries/ArmarXObjects/ObjectID.h> + // #include <RobotAPI/libraries/armem/core/json_conversions.h> namespace armarx::armem::obj { + + ObjectID SceneSnapshot::Object::getClassID() const + { + return ObjectID(className); + } + } void armarx::armem::obj::to_json(nlohmann::json& j, const SceneSnapshot::Object& rhs) { // j["instanceID"] = rhs.instanceID; - j["class"] = rhs.classID.str(); + j["class"] = rhs.className; j["collection"] = rhs.collection; j["position"] = rhs.position; j["orientation"] = rhs.orientation; @@ -23,7 +31,7 @@ void armarx::armem::obj::to_json(nlohmann::json& j, const SceneSnapshot::Object& void armarx::armem::obj::from_json(const nlohmann::json& j, SceneSnapshot::Object& rhs) { // j.at("instanceID").get_to(rhs.instanceID); - rhs.classID = ObjectID(j.at("class").get<std::string>()); + j.at("class").get_to(rhs.className); j.at("collection").get_to(rhs.collection); j.at("position").get_to(rhs.position); j.at("orientation").get_to(rhs.orientation); @@ -41,3 +49,5 @@ void armarx::armem::obj::from_json(const nlohmann::json& j, SceneSnapshot& rhs) { j.at("objects").get_to(rhs.objects); } + + diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h index b7c9ed5d8..2baa2cd3c 100644 --- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h +++ b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h @@ -25,10 +25,11 @@ #include <Eigen/Geometry> -#include <RobotAPI/libraries/ArmarXObjects/ObjectID.h> -// #include <RobotAPI/libraries/armem/core/MemoryID.h> - +namespace armarx +{ + class ObjectID; +} namespace armarx::armem::obj { @@ -36,13 +37,13 @@ namespace armarx::armem::obj { struct Object { - // MemoryID instanceID; - - ObjectID classID; + std::string className; std::string collection; Eigen::Vector3f position = Eigen::Vector3f::Zero(); Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity(); + + ObjectID getClassID() 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 06dd140ed..eb81a73dc 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp @@ -49,6 +49,7 @@ namespace armarx::armem::server::obj::instance { try { + objectInfo->setLogError(false); // Don't log missing files return objectInfo->loadOOBB(); } catch (const std::ios_base::failure& e) @@ -217,6 +218,10 @@ namespace armarx::armem::server::obj::instance { toAron(dto.classID, instance->id()); } + else + { + toAron(dto.classID, MemoryID()); + } toAron(dto.sourceID, MemoryID()); update.instancesData.push_back(dto.toAron()); } @@ -811,7 +816,7 @@ namespace armarx::armem::server::obj::instance { armem::obj::SceneSnapshot::Object& object = scene.objects.emplace_back(); // object.instanceID = entityInstance.id(); - object.classID = objectInstance->classID.entityName; + object.className = ObjectID(objectInstance->classID.entityName).getClassID().str(); object.collection = ""; object.position = simox::math::position(objectInstance->pose.objectPoseGlobal); object.orientation = simox::math::orientation(objectInstance->pose.objectPoseGlobal); @@ -838,11 +843,13 @@ namespace armarx::armem::server::obj::instance for (const auto& object : scene.objects) { + const ObjectID classID = object.getClassID(); + objpose::ObjectPose& pose = objectPoses.emplace_back(); pose.providerName = sceneName; pose.objectType = objpose::ObjectTypeEnum::KnownObject; - pose.objectID = object.classID.withInstanceName(std::to_string(idCounters[object.classID]++)); + pose.objectID = classID.withInstanceName(std::to_string(idCounters[classID]++)); pose.objectPoseGlobal = simox::math::pose(object.position, object.orientation); pose.objectPoseRobot = pose.objectPoseGlobal; @@ -853,7 +860,7 @@ namespace armarx::armem::server::obj::instance pose.robotPose = Eigen::Matrix4f::Identity(); pose.confidence = 1.0; - pose.localOOBB = getObjectOOBB(object.classID); + pose.localOOBB = getObjectOOBB(classID); pose.timestamp = now; } -- GitLab