Skip to content
Snippets Groups Projects
Commit 99e82c12 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

SceneSnapshot: Store just a string instead of ObjectID for class

parent 4de5a7c0
Branches armem/load-and-storescene-snapshots
No related tags found
1 merge request!171Periodic merge of armem/dev into master
......@@ -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);
}
......@@ -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;
};
......
......@@ -48,6 +48,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)
......@@ -216,6 +217,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());
}
......@@ -810,7 +815,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);
......@@ -837,11 +842,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;
......@@ -852,7 +859,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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment