From 2cbeb27e8335a1ebf76ed20fcec8b717e73c003e Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Fri, 30 Jul 2021 08:17:03 +0200 Subject: [PATCH] Pass Aron dict in RobotUnitData --- .../server/proprioception/RobotStateWriter.cpp | 10 ++++++---- .../server/proprioception/RobotUnitData.h | 11 ++++++++--- .../converters/Armar6RobotUnitDataConverter.cpp | 6 ++++-- .../converters/Armar6RobotUnitDataConverter.h | 2 +- .../converters/RobotUnitDataConverterInterface.cpp | 1 - .../converters/RobotUnitDataConverterInterface.h | 8 +++++++- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp index 99592121e..fd8ace277 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp @@ -39,6 +39,7 @@ #include <RobotAPI/libraries/armem/core/ice_conversions.h> #include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h> #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h> +#include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/server/localization/Segment.h> @@ -143,19 +144,20 @@ namespace armarx::armem::server::robot_state::proprioception armem::EntityUpdate& up = update.proprioception.add(); up.entityID = properties.robotUnitProviderID.withEntityName(properties.robotUnitProviderID.providerSegmentName); up.timeCreated = data.timestamp; - up.instancesData = { data.proprioception.toAron() }; + up.instancesData = { data.proprioception }; // odometry pose -> localization segment + if (data.proprioception->hasElement("platform")) { ARMARX_DEBUG << "Found odometry data."; - const Eigen::Vector3f& relPose = data.proprioception.platform.relativePosition; + prop::arondto::Platform platform; + platform.fromAron(aron::datanavigator::DictNavigator::DynamicCastAndCheck(data.proprioception->getElement("platform"))); + const Eigen::Vector3f& relPose = platform.relativePosition; Eigen::Affine3f odometryPose = Eigen::Affine3f::Identity(); odometryPose.translation() << relPose.x(), relPose.y(), 0; // TODO set height odometryPose.linear() = simox::math::rpy_to_mat3f(0.F, 0.F, relPose.z()); - // const auto timestamp = armem::Time::microSeconds(it->second.timestamp); - armem::robot_state::Transform& transform = update.localization; transform.header.parentFrame = armarx::OdometryFrame; transform.header.frame = "root"; // TODO: robot root node diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotUnitData.h b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotUnitData.h index a066754e8..4045742af 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotUnitData.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotUnitData.h @@ -1,16 +1,21 @@ #pragma once +#include <memory> + #include <RobotAPI/libraries/armem/core/Time.h> -#include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h> +namespace armarx::aron::datanavigator +{ + using DictNavigatorPtr = std::shared_ptr<class DictNavigator>; +} namespace armarx::armem::server::robot_state::proprioception { struct RobotUnitData { - armem::Time timestamp; - arondto::Proprioception proprioception; + Time timestamp; + aron::datanavigator::DictNavigatorPtr proprioception; }; } diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.cpp index 292bd120f..96f550c01 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.cpp @@ -4,6 +4,7 @@ #include <SimoxUtility/algorithm/advanced.h> #include <RobotAPI/libraries/RobotUnitDataStreamingReceiver/RobotUnitDataStreamingReceiver.h> +#include <RobotAPI/libraries/aron/core/navigator/data/container/Dict.h> namespace armarx::armem::server::robot_state::proprioception @@ -164,7 +165,8 @@ namespace armarx::armem::server::robot_state::proprioception } - arondto::Proprioception Armar6RobotUnitDataConverter::convert( + aron::datanavigator::DictNavigatorPtr + Armar6RobotUnitDataConverter::convert( const RobotUnitDataStreaming::TimeStep& data, const RobotUnitDataStreaming::DataStreamingDescription& description) { @@ -175,7 +177,7 @@ namespace armarx::armem::server::robot_state::proprioception { process(dto, dataEntryName, {data, dataEntry}); } - return dto; + return dto.toAron(); } diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.h b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.h index 71d06cfb2..96a7b15aa 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/Armar6RobotUnitDataConverter.h @@ -23,7 +23,7 @@ namespace armarx::armem::server::robot_state::proprioception virtual ~Armar6RobotUnitDataConverter() override; - arondto::Proprioception convert( + aron::datanavigator::DictNavigatorPtr convert( const RobotUnitDataStreaming::TimeStep& data, const RobotUnitDataStreaming::DataStreamingDescription& description) override; diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.cpp index 740f37b3b..718094e1f 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.cpp @@ -6,7 +6,6 @@ namespace armarx::armem::server::robot_state RobotUnitDataConverterInterface::~RobotUnitDataConverterInterface() { - } } diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.h b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.h index 7ff34a1dc..349e9c91a 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/converters/RobotUnitDataConverterInterface.h @@ -1,5 +1,7 @@ #pragma once +#include <memory> + namespace armarx::RobotUnitDataStreaming { @@ -11,6 +13,10 @@ namespace armarx::armem::arondto { class Proprioception; } +namespace armarx::aron::datanavigator +{ + using DictNavigatorPtr = std::shared_ptr<class DictNavigator>; +} namespace armarx::armem::server::robot_state { @@ -20,7 +26,7 @@ namespace armarx::armem::server::robot_state virtual ~RobotUnitDataConverterInterface(); - virtual arondto::Proprioception convert( + virtual aron::datanavigator::DictNavigatorPtr convert( const RobotUnitDataStreaming::TimeStep& data, const RobotUnitDataStreaming::DataStreamingDescription& description) = 0; -- GitLab