Skip to content
Snippets Groups Projects

robot state memory update

Merged Fabian Reister requested to merge feature/armem-robot-state-memory-update into armem/dev
All threads resolved!
1 file
+ 26
9
Compare changes
  • Side-by-side
  • Inline
@@ -21,6 +21,7 @@
*/
#include "TransformWriter.h"
#include "RobotAPI/libraries/armem/core/MemoryID.h"
#include <algorithm>
#include <iterator>
@@ -46,6 +47,7 @@
#include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h>
#include <RobotAPI/libraries/armem_robot_state/aron_conversions.h>
#include <optional>
namespace armarx::armem::client::robot_state::localization
@@ -89,21 +91,36 @@ namespace armarx::armem::client::robot_state::localization
ARMARX_DEBUG << "Trying to create core segment + provider segment";
const auto result =
memoryWriter.addSegment(properties.localizationSegment, transform.header.agent);
if (not result.success)
const auto providerId = [&]() -> std::optional<armem::MemoryID>
{
try
{
const auto result =
memoryWriter.addSegment(properties.localizationSegment, transform.header.agent);
if (not result.success)
{
ARMARX_WARNING << "Could not obtain provider id! Reason: " << result.errorMessage;
return std::nullopt;
}
return armem::MemoryID(result.segmentID);
}
catch (...)
{
ARMARX_WARNING << "Could not obtain provider id!";
return std::nullopt;
}
}();
if (not providerId)
{
ARMARX_ERROR << result.errorMessage;
// TODO(fabian.reister): message
return false;
}
const auto timestamp = IceUtil::Time::microSeconds(transform.header.timestamp);
const auto providerId = armem::MemoryID(result.segmentID);
const auto entityID = providerId.withEntityName(transform.header.parentFrame + "," +
const auto entityID = providerId->withEntityName(transform.header.parentFrame + "," +
transform.header.frame).withTimestamp(timestamp);
armem::EntityUpdate update;
Loading