diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp index c410c7e358ed86cbab32543340ffea67e013def7..d8ae0a10b97825f924d7e1605dc4687dcce9bfee 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 b7c9ed5d80a28a66f573c077f7aa2a92c4b5c327..2baa2cd3c323794aa4112bbc5df8c3353073dc61 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 06dd140ed2152258f8aeccd7e1e984a4f6dd10e2..eb81a73dc3fa4b949dbdf880a9023b51d02d7320 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; }