From d44610f96100377721d277bf3768aab660ca2f9e Mon Sep 17 00:00:00 2001 From: uhfpm_plewnia <uhfpm@student.kit.edu> Date: Mon, 17 Jul 2023 06:13:54 +0200 Subject: [PATCH] added Information about scenes for experiments in ForgettingExperiments --- .../libraries/armem/core/MemoryID.cpp | 1 + .../armem/server/ltm/CoreSegment.cpp | 2 - .../libraries/armem/server/ltm/Memory.cpp | 10 +++-- .../server/test/ForgettingExperiments.cpp | 45 ++++++++++++++++++- .../armem/server/test/ForgettingExperiments.h | 6 ++- 5 files changed, 56 insertions(+), 8 deletions(-) diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.cpp b/source/RobotAPI/libraries/armem/core/MemoryID.cpp index 7578dfefb..9cc021062 100644 --- a/source/RobotAPI/libraries/armem/core/MemoryID.cpp +++ b/source/RobotAPI/libraries/armem/core/MemoryID.cpp @@ -133,6 +133,7 @@ namespace armarx::armem MemoryID MemoryID::cleanID() const { + //ARMARX_INFO << this->str(); std::vector<std::string> allItems = this->getAllItems(true); //ARMARX_INFO << VAROUT(allItems); diff --git a/source/RobotAPI/libraries/armem/server/ltm/CoreSegment.cpp b/source/RobotAPI/libraries/armem/server/ltm/CoreSegment.cpp index e76184c79..71cc8baa0 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/CoreSegment.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/CoreSegment.cpp @@ -120,8 +120,6 @@ namespace armarx::armem::server::ltm //ARMARX_INFO << VAROUT(e.id()); //TODO: why does this not have any provider segments? - - //ARMARX_INFO << VAROUT(e.id().cleanID()); /* diff --git a/source/RobotAPI/libraries/armem/server/ltm/Memory.cpp b/source/RobotAPI/libraries/armem/server/ltm/Memory.cpp index 4e2bf9b9f..544765d02 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/Memory.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/Memory.cpp @@ -104,7 +104,9 @@ namespace armarx::armem::server::ltm { std::string segmentName = util::fs::detail::unescapeName(subdirName); - //ARMARX_INFO << VAROUT(id()); + ARMARX_INFO << "Name of segment " << segmentName; + ARMARX_INFO << "After getting segment name"; + ARMARX_INFO << VAROUT(id().withCoreSegmentName(segmentName)); //ARMARX_INFO << VAROUT(id().getCoreSegmentID()); CoreSegment c(getMemoryBasePath(), getSettings(), @@ -145,8 +147,8 @@ namespace armarx::armem::server::ltm // legacy: check if segment is stored on hard drive without db if (fullPathExists()) { - ARMARX_INFO << VAROUT(id()); - ARMARX_INFO << VAROUT(id().getCoreSegmentID()); + //ARMARX_INFO << VAROUT(id()); + //ARMARX_INFO << VAROUT(id().getCoreSegmentID()); auto c = CoreSegment(getMemoryBasePath(), getSettings(), getExportName(), @@ -183,7 +185,7 @@ namespace armarx::armem::server::ltm m.id() = id().getMemoryID(); - //ARMARX_INFO << VAROUT(m.id()); + ARMARX_INFO << VAROUT(id()); forEachCoreSegment( [&m](auto& x) diff --git a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp index d6a3c7af0..eef5de181 100644 --- a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp +++ b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp @@ -8,7 +8,7 @@ namespace armarx::armem::server::test { -void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName) +void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName, std::string sim_json_data, std::string object_memory_json_data) { //ARMARX_INFO << "Saving statistics"; auto now = std::chrono::high_resolution_clock::now(); @@ -82,6 +82,16 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte s << std::put_time(time, "%Y%m%d%H%M%S"); std::string timeID = s.str(); jsonData["Time "] = timeString; + + if(sim_json_data.empty() || object_memory_json_data.empty()){ + jsonData["Scene-Information for Simulation"] = load_scene_information("sim"); + jsonData["Scene-Information for ObjectMemory"] = load_scene_information("om"); + jsonData["Additional object in simulation"] = find_difference(jsonData["Scene-Information for ObjectMemory"], jsonData["Scene-Information for Simulation"]); + }else { + jsonData["Scene-Information for Simulation"] = sim_json_data; + jsonData["Scene-Information for ObjectMemory"] = object_memory_json_data; + } + std::string path = d_p.string(); path += "/tmp_wm_"; path += timeID; @@ -104,4 +114,37 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte } } +nlohmann::json load_scene_information(std::string om_or_sim) +{ + std::string home_dir = getenv("HOME"); + if(home_dir.empty()){ + ARMARX_WARNING << "Trying to open home directory but env variable HOME is not set"; + } + std::filesystem::path path = home_dir; + path /= "code"; + path /= "h2t" ; + path /= "PriorKnowledgeData"; + path /= "data"; + path /= "PriorKnowledgeData"; + path /= "scenes"; + std::string name_for_current_scene = "ARMAR-III-kitchen"; //this can be changed later, maybe to something that indicates better that these are the changed files + std::string file_name = name_for_current_scene + "_" + om_or_sim + ".json"; + path /= file_name; + + std::ifstream ifs(path); + nlohmann::json json_data = nlohmann::json::parse(ifs); + + return json_data; + +} + +nlohmann::json find_difference(nlohmann::json om, nlohmann::json sim) +{ + //the new object is at the last position of sim at the moment + auto objects = sim.at("objects"); + int num_elements = objects.size(); + auto object = objects[num_elements - 1]; + return object; +} + } diff --git a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.h b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.h index 8c2e7f7ba..0cc2a8de0 100644 --- a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.h +++ b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.h @@ -30,6 +30,10 @@ namespace armarx::armem::server::test { - void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName = ""); + void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics> stats, std::string memoryName = "", std::string sim_json_data = "", std::string object_memory_json_data = ""); + + nlohmann::json load_scene_information(std::string om_or_sim); + + nlohmann::json find_difference(nlohmann::json om, nlohmann::json sim); } -- GitLab