From f145908e75d05d492df1f0de40e7e39e742ecaf1 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Tue, 4 May 2021 10:26:55 +0200 Subject: [PATCH] moving files and functionality --- .../ObjectPoseProviderExample/CMakeLists.txt | 34 ++++++- .../server/ObjectMemory/ObjectMemory.cpp | 6 +- .../objectpose/ObjectPoseStorageInterface.ice | 5 +- .../RobotAPI/libraries/armem/CMakeLists.txt | 2 + .../client}/MemoryConnector.cpp | 0 .../client}/MemoryConnector.h | 0 .../libraries/armem_objects/CMakeLists.txt | 13 ++- .../armem_objects/aron/Attachment.xml | 2 +- .../armem_objects/aron/Constraint.xml | 22 ++--- .../libraries/armem_objects/aron/Robot.xml | 14 +-- .../armem_objects/aron/RobotDescription.xml | 5 +- .../armem_objects/aron/RobotState.xml | 2 +- .../armem_objects/aron_conversions.cpp | 93 ++++++++++++++++--- .../armem_objects/aron_conversions.h | 23 +++++ .../client/articulated_object/Reader.cpp | 0 .../client/articulated_object/Reader.h | 20 ++++ .../client/articulated_object/Writer.cpp | 0 .../client/articulated_object/Writer.h | 18 ++++ .../client/articulated_object/interfaces.h | 27 ++++++ .../armem_objects/ice_conversions.cpp | 33 ++++--- .../libraries/armem_objects/ice_conversions.h | 13 ++- .../RobotAPI/libraries/armem_objects/types.h | 6 +- .../armem_robot_localization/CMakeLists.txt | 3 +- .../TransformReader.h | 2 +- .../TransformWriter.cpp | 1 - .../TransformWriter.h | 2 +- .../aron/Transform.xml | 21 +---- .../aron/TransformHeader.xml | 23 +++++ .../armem_robot_mapping/CMakeLists.txt | 2 - .../armem_robot_mapping/MappingDataReader.cpp | 2 +- .../armem_robot_mapping/MappingDataReader.h | 3 +- .../armem_robot_mapping/MappingDataWriter.cpp | 1 - .../armem_robot_mapping/MappingDataWriter.h | 7 +- .../libraries/aron/common/CMakeLists.txt | 8 -- .../aron/common/aron_conversions/armarx.cpp | 58 ------------ .../aron/common/aron_conversions/armarx.h | 23 ----- 36 files changed, 314 insertions(+), 180 deletions(-) rename source/RobotAPI/libraries/{armem_robot_localization => armem/client}/MemoryConnector.cpp (100%) rename source/RobotAPI/libraries/{armem_robot_localization => armem/client}/MemoryConnector.h (100%) create mode 100644 source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp create mode 100644 source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp create mode 100644 source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h create mode 100644 source/RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.xml diff --git a/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt b/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt index 1395fc02f..97c324a68 100644 --- a/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt +++ b/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt @@ -3,7 +3,8 @@ armarx_component_set_name("ObjectPoseProviderExample") set(COMPONENT_LIBS # ArmarXCore - ArmarXCore ArmarXCoreInterfaces + ArmarXCore + ArmarXCoreInterfaces # RobotAPI RobotAPI::ArmarXObjects ) @@ -21,3 +22,34 @@ armarx_add_component("${SOURCES}" "${HEADERS}") #generate the application armarx_generate_and_add_component_executable() + + + + + + + +armarx_component_set_name("ArticulatedObjectStateProviderExample") + + +set(COMPONENT_LIBS + # ArmarXCore + ArmarXCore + ArmarXCoreInterfaces + # RobotAPI + RobotAPI::ArmarXObjects +) + +set(SOURCES + ArticulatedObjectStateProviderExample.cpp +) +set(HEADERS + ArticulatedObjectStateProviderExample.h +) + + +armarx_add_component("${SOURCES}" "${HEADERS}") + + +#generate the application +armarx_generate_and_add_component_executable(COMPONENT_NAMESPACE "armarx::articulated_object") \ No newline at end of file diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp index 18ccb6875..cc296ea48 100644 --- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp +++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp @@ -22,6 +22,8 @@ #include "ObjectMemory.h" +#include <RobotAPI/interface/core/articulated_object/topic.h> + namespace armarx::armem::server::obj { @@ -38,6 +40,7 @@ namespace armarx::armem::server::obj // Subscribe defs->topic<objpose::ObjectPoseTopic>(); // "ObjectPoseTopic", "ObjectPoseTopicName", "Name of the Object Pose Topic."); + defs->topic<articulated_object::ArticulatedObjectTopic>(); // "ObjectPoseTopic", "ObjectPoseTopicName", "Name of the Object Pose Topic."); // Use // defs->component(kinematicUnitObserver); // Optional dependency. @@ -107,7 +110,8 @@ namespace armarx::armem::server::obj getProxyFromProperty(kinematicUnitObserver, "cmp.KinematicUnitObserverName", false, "", false); instance::SegmentAdapter::connect( - robotStateComponent, robot, + robotStateComponent, + robot, kinematicUnitObserver, ArVizComponentPluginUser::arviz, debugObserver diff --git a/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice b/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice index 3097f6c75..adc6063bc 100644 --- a/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice +++ b/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice @@ -32,6 +32,8 @@ #include <RobotAPI/interface/objectpose/object_pose_types.ice> #include <RobotAPI/interface/objectpose/ObjectPoseProvider.ice> +#include <RobotAPI/interface/core/articulated_object/topic.ice> + module armarx { @@ -153,7 +155,8 @@ module armarx }; interface ObjectPoseStorageInterface extends - ObjectPoseTopic + ObjectPoseTopic, + armarx::articulated_object::ArticulatedObjectTopic { // Object poses diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt index be3028444..03f509ce8 100644 --- a/source/RobotAPI/libraries/armem/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem/CMakeLists.txt @@ -65,6 +65,7 @@ set(LIB_FILES client/ReaderComponentPlugin.cpp client/Writer.cpp client/WriterComponentPlugin.cpp + client/MemoryConnector.cpp client/Query.cpp client/query/Builder.cpp @@ -162,6 +163,7 @@ set(LIB_HEADERS client/ReaderComponentPlugin.h client/Writer.h client/WriterComponentPlugin.h + client/MemoryConnector.h client/Query.h client/query/Builder.h diff --git a/source/RobotAPI/libraries/armem_robot_localization/MemoryConnector.cpp b/source/RobotAPI/libraries/armem/client/MemoryConnector.cpp similarity index 100% rename from source/RobotAPI/libraries/armem_robot_localization/MemoryConnector.cpp rename to source/RobotAPI/libraries/armem/client/MemoryConnector.cpp diff --git a/source/RobotAPI/libraries/armem_robot_localization/MemoryConnector.h b/source/RobotAPI/libraries/armem/client/MemoryConnector.h similarity index 100% rename from source/RobotAPI/libraries/armem_robot_localization/MemoryConnector.h rename to source/RobotAPI/libraries/armem/client/MemoryConnector.h diff --git a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt index 4c1e05dcc..6e11e6619 100644 --- a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt @@ -19,6 +19,8 @@ armarx_add_library( aron_conversions.h aron_forward_declarations.h + ice_conversions.h + server/class/FloorVis.h server/class/Segment.h @@ -28,13 +30,14 @@ armarx_add_library( server/instance/RobotHeadMovement.h server/instance/Visu.h - server/articulated_object/Segment.h + # server/articulated_object/Segment.h # server/articulated_object/SegmentAdapter.h # server/articulated_object/Visu.h SOURCES aron_conversions.cpp + ice_conversions.cpp server/class/FloorVis.cpp server/class/Segment.cpp @@ -45,7 +48,7 @@ armarx_add_library( server/instance/RobotHeadMovement.cpp server/instance/Visu.cpp - server/articulated_object/Segment.cpp + # server/articulated_object/Segment.cpp # server/articulated_object/SegmentAdapter.cpp # server/articulated_object/Visu.cpp ) @@ -56,6 +59,12 @@ armarx_enable_aron_file_generation_for_target( ARON_FILES aron/ObjectClass.xml aron/ObjectInstance.xml + + # aron/Attachment.xml + aron/RobotDescription.xml + aron/RobotState.xml + aron/Robot.xml + aron/Constraint.xml ) add_library(${PROJECT_NAME}::armem_objects ALIAS armem_objects) diff --git a/source/RobotAPI/libraries/armem_objects/aron/Attachment.xml b/source/RobotAPI/libraries/armem_objects/aron/Attachment.xml index de6386369..6b0227772 100644 --- a/source/RobotAPI/libraries/armem_objects/aron/Attachment.xml +++ b/source/RobotAPI/libraries/armem_objects/aron/Attachment.xml @@ -6,7 +6,7 @@ </CodeIncludes> <GenerateTypes> - <Object name="armarx::arondto::Attachment"> + <Object name="armarx::armem::arondto::Attachment"> <ObjectChild key="constraintType"> diff --git a/source/RobotAPI/libraries/armem_objects/aron/Constraint.xml b/source/RobotAPI/libraries/armem_objects/aron/Constraint.xml index b1360fc5b..534df98a1 100644 --- a/source/RobotAPI/libraries/armem_objects/aron/Constraint.xml +++ b/source/RobotAPI/libraries/armem_objects/aron/Constraint.xml @@ -11,7 +11,7 @@ </AronIncludes> <GenerateTypes> - <Object name="armarx::arondto::RobotID"> + <Object name="armarx::armem::arondto::RobotID"> <ObjectChild key="name"> <string/> </ObjectChild> @@ -20,15 +20,15 @@ </ObjectChild> </Object> - <IntEnum name="armarx::arondto::SceneEntityType"> + <IntEnum name="armarx::armem::arondto::SceneEntityType"> <EnumValue key="Robot" value="0" /> <EnumValue key="ArticulatedObject" value="1" /> <EnumValue key="Object" value="2" /> </IntEnum> - <Object name="armarx::arondto::SceneEntity"> + <Object name="armarx::armem::arondto::SceneEntity"> <ObjectChild key="type"> - <armarx::arondto::SceneEntityType /> + <armarx::armem::arondto::SceneEntityType /> </ObjectChild> <!-- could be a variant --> @@ -40,9 +40,9 @@ </ObjectChild> --> </Object> - <Object name="armarx::arondto::BodyLinkDescription"> + <Object name="armarx::armem::arondto::BodyLinkDescription"> <ObjectChild key="entity"> - <armarx::arondto::SceneEntity /> + <armarx::armem::arondto::SceneEntity /> </ObjectChild> <ObjectChild key="node"> @@ -55,7 +55,7 @@ </Object> <!-- http://www.cs.kent.edu/~ruttan/GameEngines/lectures/Bullet_User_Manual --> - <IntEnum name="armarx::arondto::ConstraintType"> + <IntEnum name="armarx::armem::arondto::ConstraintType"> <EnumValue key="Fixed" value="0" /> <!-- <EnumValue key="Prismatic" value="1" /> --> <!-- <EnumValue key="Revolute" value="2" /> --> @@ -66,10 +66,10 @@ <!-- <EnumValue key="Spring" value="7" /> --> </IntEnum> - <Object name="armarx::arondto::Constraint"> + <Object name="armarx::armem::arondto::Constraint"> <ObjectChild key="type"> - <armarx::arondto::ConstraintType /> + <armarx::armem::arondto::ConstraintType /> </ObjectChild> <!-- <ObjectChild key="transformation"> @@ -78,11 +78,11 @@ <ObjectChild key="bodyA"> - <armarx::arondto::BodyLinkDescription/> + <armarx::armem::arondto::BodyLinkDescription/> </ObjectChild> <ObjectChild key="bodyB"> - <armarx::arondto::BodyLinkDescription/> + <armarx::armem::arondto::BodyLinkDescription/> </ObjectChild> diff --git a/source/RobotAPI/libraries/armem_objects/aron/Robot.xml b/source/RobotAPI/libraries/armem_objects/aron/Robot.xml index dc92382a7..2b2f0ba38 100644 --- a/source/RobotAPI/libraries/armem_objects/aron/Robot.xml +++ b/source/RobotAPI/libraries/armem_objects/aron/Robot.xml @@ -2,23 +2,23 @@ <?xml version="1.0" encoding="UTF-8" ?> <AronTypeDefinition> <CodeIncludes> - <Include include="<RobotAPI/libraries/aron/common/aron/RobotDescription.aron.generated.h>" /> - <Include include="<RobotAPI/libraries/aron/common/aron/RobotState.aron.generated.h>" /> + <Include include="<RobotAPI/libraries/armem_objects/aron/RobotDescription.aron.generated.h>" /> + <Include include="<RobotAPI/libraries/armem_objects/aron/RobotState.aron.generated.h>" /> </CodeIncludes> <AronIncludes> - <Include include="<RobotAPI/libraries/aron/common/aron/RobotDescription.xml>" /> - <Include include="<RobotAPI/libraries/aron/common/aron/RobotState.xml>" /> + <Include include="<RobotAPI/libraries/armem_objects/aron/RobotDescription.xml>" /> + <Include include="<RobotAPI/libraries/armem_objects/aron/RobotState.xml>" /> </AronIncludes> <GenerateTypes> - <Object name="armarx::arondto::Robot"> + <Object name="armarx::armem::arondto::Robot"> <ObjectChild key='description'> - <armarx::arondto::RobotDescription /> + <armarx::armem::arondto::RobotDescription /> </ObjectChild> <ObjectChild key='state'> - <armarx::arondto::RobotState /> + <armarx::armem::arondto::RobotState /> </ObjectChild> <ObjectChild key='timestamp'> diff --git a/source/RobotAPI/libraries/armem_objects/aron/RobotDescription.xml b/source/RobotAPI/libraries/armem_objects/aron/RobotDescription.xml index bc6f8f2a0..84ab00dc1 100644 --- a/source/RobotAPI/libraries/armem_objects/aron/RobotDescription.xml +++ b/source/RobotAPI/libraries/armem_objects/aron/RobotDescription.xml @@ -4,10 +4,13 @@ <AronIncludes> <Include include="<RobotAPI/libraries/aron/common/aron/PackagePath.xml>" /> </AronIncludes> + <CodeIncludes> + <Include include="<RobotAPI/libraries/aron/common/aron/PackagePath.aron.generated.h>" /> + </CodeIncludes> <GenerateTypes> - <Object name='armarx::arondto::RobotDescription'> + <Object name='armarx::armem::arondto::RobotDescription'> <ObjectChild key='name'> <string /> diff --git a/source/RobotAPI/libraries/armem_objects/aron/RobotState.xml b/source/RobotAPI/libraries/armem_objects/aron/RobotState.xml index 1579bf790..eaf9b41a7 100644 --- a/source/RobotAPI/libraries/armem_objects/aron/RobotState.xml +++ b/source/RobotAPI/libraries/armem_objects/aron/RobotState.xml @@ -6,7 +6,7 @@ </CodeIncludes> <GenerateTypes> - <Object name="armarx::arondto::RobotState"> + <Object name="armarx::armem::arondto::RobotState"> <ObjectChild key='timestamp'> <Time /> diff --git a/source/RobotAPI/libraries/armem_objects/aron_conversions.cpp b/source/RobotAPI/libraries/armem_objects/aron_conversions.cpp index 859f3d601..a1a760531 100644 --- a/source/RobotAPI/libraries/armem_objects/aron_conversions.cpp +++ b/source/RobotAPI/libraries/armem_objects/aron_conversions.cpp @@ -2,26 +2,89 @@ #include <RobotAPI/libraries/ArmarXObjects/aron_conversions.h> +#include <RobotAPI/libraries/aron/common/aron_conversions/core.h> +#include <RobotAPI/libraries/aron/common/aron_conversions/stl.h> +#include <RobotAPI/libraries/aron/common/aron_conversions/armarx.h> -void armarx::armem::fromAron(const arondto::ObjectInstance& dto, objpose::arondto::ObjectPose& bo) +namespace armarx::armem { - bo = dto.pose; -} -void armarx::armem::toAron(arondto::ObjectInstance& dto, const objpose::arondto::ObjectPose& bo) -{ - dto.pose = bo; -} + void fromAron(const arondto::ObjectInstance& dto, + objpose::arondto::ObjectPose& bo) + { + bo = dto.pose; + } + void toAron(arondto::ObjectInstance& dto, const objpose::arondto::ObjectPose& bo) + { + dto.pose = bo; + } -void armarx::armem::fromAron(const arondto::ObjectInstance& dto, objpose::ObjectPose& bo) -{ - objpose::fromAron(dto.pose, bo); -} + void fromAron(const arondto::ObjectInstance& dto, objpose::ObjectPose& bo) + { + objpose::fromAron(dto.pose, bo); + } -void armarx::armem::toAron(arondto::ObjectInstance& dto, const objpose::ObjectPose& bo) -{ - objpose::toAron(dto.pose, bo); -} + void toAron(arondto::ObjectInstance& dto, const objpose::ObjectPose& bo) + { + objpose::toAron(dto.pose, bo); + } + + + /* to be moved */ + void fromAron(const long& dto, IceUtil::Time& time) + { + time = IceUtil::Time::microSeconds(dto); + } + + void toAron(long& dto, const IceUtil::Time& time) + { + dto = time.toMicroSeconds(); + } + + + /* Robot */ + + void fromAron(const arondto::Robot& dto, Robot& bo) + { + fromAron(dto.description, bo.description); + fromAron(dto.state, bo.config); + } + + void toAron(arondto::Robot& dto, const Robot& bo) + { + toAron(dto.description, bo.description); + toAron(dto.state, bo.config); + } + + /* RobotDescription */ + + void fromAron(const arondto::RobotDescription& dto, RobotDescription& bo) + { + aron::fromAron(dto.name, bo.name); + fromAron(dto.xml, bo.xml); + } + + void toAron(arondto::RobotDescription& dto, const RobotDescription& bo) + { + aron::toAron(dto.name, bo.name); + toAron(dto.xml, bo.xml); + } + + /* RobotState */ + + void fromAron(const arondto::RobotState& dto, RobotState& bo) + { + fromAron(dto.timestamp, bo.timestamp); + bo.globalPose.matrix() = dto.globalPose; + bo.jointMap = dto.jointMap; + } + void toAron(arondto::RobotState& dto, const RobotState& bo) + { + toAron(dto.timestamp, bo.timestamp); + dto.globalPose = bo.globalPose.matrix(); + dto.jointMap = bo.jointMap; + } +} // namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem_objects/aron_conversions.h b/source/RobotAPI/libraries/armem_objects/aron_conversions.h index 7ea733e99..995c249f9 100644 --- a/source/RobotAPI/libraries/armem_objects/aron_conversions.h +++ b/source/RobotAPI/libraries/armem_objects/aron_conversions.h @@ -5,6 +5,12 @@ #include <RobotAPI/libraries/armem_objects/aron/ObjectInstance.aron.generated.h> +#include <RobotAPI/libraries/armem_objects/types.h> + +#include <RobotAPI/libraries/armem_objects/aron/RobotDescription.aron.generated.h> +#include <RobotAPI/libraries/armem_objects/aron/RobotState.aron.generated.h> +#include <RobotAPI/libraries/armem_objects/aron/Robot.aron.generated.h> + namespace armarx::armem { void fromAron(const arondto::ObjectInstance& dto, objpose::arondto::ObjectPose& bo); @@ -12,4 +18,21 @@ namespace armarx::armem void fromAron(const arondto::ObjectInstance& dto, objpose::ObjectPose& bo); void toAron(arondto::ObjectInstance& dto, const objpose::ObjectPose& bo); + + + // TODO move the following + void fromAron(const long& dto, IceUtil::Time& time); + void toAron(long& dto, const IceUtil::Time& time); + // end TODO + + + void fromAron(const arondto::Robot& dto, Robot& bo); + void toAron(arondto::Robot& dto, const Robot& bo); + + void fromAron(const arondto::RobotDescription& dto, RobotDescription& bo); + void toAron(arondto::RobotDescription& dto, const RobotDescription& bo); + + void fromAron(const arondto::RobotState& dto, RobotState& bo); + void toAron(arondto::RobotState& dto, const RobotState& bo); + } diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp new file mode 100644 index 000000000..e69de29bb diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h index e69de29bb..556284d2c 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h @@ -0,0 +1,20 @@ +#pragma once + +#include "interfaces.h" + + +namespace armarx::armem::articulated_object +{ + class Reader: + virtual public ReaderInterface, + virtual public ::armarx::armem::MemoryConnector + { + public: + virtual ~Reader() = default; + + void synchronize(ArticulatedObject& obj, const armem::Time& timestamp) override; + ArticulatedObject get(const ArticulatedObjectDescription& description, const armem::Time& timestamp) override; + }; + + +} // namespace armarx::armem::articulated_object \ No newline at end of file diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp new file mode 100644 index 000000000..e69de29bb diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h index e69de29bb..9afe430b8 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h @@ -0,0 +1,18 @@ +#pragma once + +#include "interfaces.h" + + +namespace armarx::armem::articulated_object +{ + + class Writer: public WriterInterface + { + public: + virtual ~WriterInterface() = default; + + void store(const ArticulatedObject& obj) override; + }; + + +} // namespace armarx::armem::articulated_object \ No newline at end of file diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h new file mode 100644 index 000000000..9ffb994ae --- /dev/null +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h @@ -0,0 +1,27 @@ +#pragma once + + +#include <RobotAPI/libraries/armem/core/Time.h> +#include <RobotAPI/libraries/armem_objects/types.h> + +namespace armarx::armem::articulated_object +{ + class ReaderInterface + { + public: + virtual ~ReaderInterface() = default; + + virtual void synchronize(ArticulatedObject& obj, const armem::Time& timestamp) = 0; + virtual ArticulatedObject get(const ArticulatedObjectDescription& description, const armem::Time& timestamp) = 0; + }; + + + class WriterInterface + { + public: + virtual ~WriterInterface() = default; + + virtual void store(const ArticulatedObject& obj) = 0; + }; + +} // namespace armarx::armem::articulated_object \ No newline at end of file diff --git a/source/RobotAPI/libraries/armem_objects/ice_conversions.cpp b/source/RobotAPI/libraries/armem_objects/ice_conversions.cpp index 335686861..bbfecee5b 100644 --- a/source/RobotAPI/libraries/armem_objects/ice_conversions.cpp +++ b/source/RobotAPI/libraries/armem_objects/ice_conversions.cpp @@ -1,32 +1,41 @@ -#include "ice_conversions.cpp" +#include "ice_conversions.h" -#include <RobotAPI/libraries/aron/common/aron/new_types.h> #include <RobotAPI/interface/core/articulated_object/types.h> +#include <RobotAPI/libraries/armem/core/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/ice_conversions_templates.h> + namespace armarx { - void fromIce(const ::armarx::articulated_object::data::RobotState& ice, ::armarx::RobotState& bo) + void toIce(::armarx::articulated_object::data::Config& ice, const ::armarx::armem::RobotState& bo) { - fromIce(ice.config, bo.config); - fromIce(ice.id, bo.description); + // toIce(ice.timestamp, bo.timestamp); + // toIce(ice.globalPose, bo.globalPose); + // toIce(ice.jointMap, bo.jointMap); } - void toIce(::armarx::articulated_object::data::ArticulatedObject& ice, const ::armarx::articulated_object::ArticulatedObject& bo) - { + void fromIce(const ::armarx::articulated_object::data::Config& ice, ::armarx::armem::RobotState& bo) + { + fromIce(ice.timestamp, bo.timestamp); + // fromIce(ice.globalPose, bo.globalPose); + // fromIce(ice.jointMap, bo.jointMap); } - void fromIce(const ::armarx::articulated_object::data::ArticulatedObject& ice, ::armarx::articulated_object::ArticulatedObject& bo) + void toIce(::armarx::articulated_object::data::ArticulatedObject& ice, const ::armarx::armem::articulated_object::ArticulatedObject& bo) { - fromIce(ice.config, bo.config); - fromIce(ice.id, bo.description); + // toIce(ice.config, bo.config); + //? toIce(ice.id, bo.description); } - void toIce(::armarx::articulated_object::data::ArticulatedObject& ice, const ::armarx::articulated_object::ArticulatedObject& bo) - { + void fromIce(const ::armarx::articulated_object::data::ArticulatedObject& ice, ::armarx::armem::articulated_object::ArticulatedObject& bo) + { + // fromIce(ice.config, bo.config); + // fromIce(ice.id, bo.description); } + } // namespace armarx \ No newline at end of file diff --git a/source/RobotAPI/libraries/armem_objects/ice_conversions.h b/source/RobotAPI/libraries/armem_objects/ice_conversions.h index 00aa04afd..fbbe30069 100644 --- a/source/RobotAPI/libraries/armem_objects/ice_conversions.h +++ b/source/RobotAPI/libraries/armem_objects/ice_conversions.h @@ -1,12 +1,17 @@ #pragma once -#include <RobotAPI/libraries/aron/common/aron/new_types.h> +#include <RobotAPI/libraries/armem_objects/types.h> + #include <RobotAPI/interface/core/articulated_object/types.h> -namespace armarx +namespace armarx::armem { - void fromIce(const ::armarx::articulated_object::data::ArticulatedObject& ice, ::armarx::articulated_object::ArticulatedObject& bo); - void toIce(::armarx::articulated_object::data::ArticulatedObject& ice, const ::armarx::articulated_object::ArticulatedObject& bo); + void fromIce(const ::armarx::articulated_object::data::Config& ice, ::armarx::armem::RobotState& bo); + void toIce(::armarx::articulated_object::data::Config& ice, const ::armarx::armem::RobotState& bo); + + + void fromIce(const ::armarx::articulated_object::data::ArticulatedObject& ice, ::armarx::armem::articulated_object::ArticulatedObject& bo); + void toIce(::armarx::articulated_object::data::ArticulatedObject& ice, const ::armarx::armem::articulated_object::ArticulatedObject& bo); } // namespace armarx diff --git a/source/RobotAPI/libraries/armem_objects/types.h b/source/RobotAPI/libraries/armem_objects/types.h index 60fa683ae..c772840db 100644 --- a/source/RobotAPI/libraries/armem_objects/types.h +++ b/source/RobotAPI/libraries/armem_objects/types.h @@ -11,7 +11,7 @@ #include <ArmarXCore/core/PackagePath.h> -namespace armarx +namespace armarx::armem { struct RobotDescription @@ -41,8 +41,10 @@ namespace armarx namespace articulated_object { + using ArticulatedObjectDescription = RobotDescription; + using ArticulatedObject = Robot; using ArticulatedObjects = std::vector<ArticulatedObject>; } -} // namespace armarx \ No newline at end of file +} // namespace armarx::armem \ No newline at end of file diff --git a/source/RobotAPI/libraries/armem_robot_localization/CMakeLists.txt b/source/RobotAPI/libraries/armem_robot_localization/CMakeLists.txt index 19a7f0019..24caa9df3 100644 --- a/source/RobotAPI/libraries/armem_robot_localization/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_robot_localization/CMakeLists.txt @@ -22,12 +22,10 @@ armarx_add_library( ./TransformInterfaces.h ./TransformReader.h ./TransformWriter.h - ./MemoryConnector.h ./aron_conversions.h SOURCES ./TransformReader.cpp ./TransformWriter.cpp - ./MemoryConnector.cpp ./aron_conversions.cpp ) @@ -36,6 +34,7 @@ armarx_enable_aron_file_generation_for_target( TARGET_NAME "${LIB_NAME}" ARON_FILES + aron/TransformHeader.xml aron/Transform.xml ) diff --git a/source/RobotAPI/libraries/armem_robot_localization/TransformReader.h b/source/RobotAPI/libraries/armem_robot_localization/TransformReader.h index 9b0489954..4107ed61f 100644 --- a/source/RobotAPI/libraries/armem_robot_localization/TransformReader.h +++ b/source/RobotAPI/libraries/armem_robot_localization/TransformReader.h @@ -23,8 +23,8 @@ #pragma once #include <RobotAPI/libraries/armem/client/Reader.h> +#include <RobotAPI/libraries/armem/client/MemoryConnector.h> -#include "MemoryConnector.h" #include "TransformInterfaces.h" namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.cpp b/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.cpp index 1ac8ea58b..7a9bcd1f4 100644 --- a/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.cpp @@ -113,7 +113,6 @@ namespace armarx::armem armem::EntityUpdate update; update.entityID = entityID; - update.timeCreated = armem::Time::now(); aron::Transform aronTransform; toAron(transform, aronTransform); diff --git a/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.h b/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.h index 2804fbc53..7d1ee2acb 100644 --- a/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.h +++ b/source/RobotAPI/libraries/armem_robot_localization/TransformWriter.h @@ -25,8 +25,8 @@ #include <mutex> #include <RobotAPI/libraries/armem/client/Writer.h> +#include <RobotAPI/libraries/armem/client/MemoryConnector.h> -#include "MemoryConnector.h" #include "TransformInterfaces.h" namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem_robot_localization/aron/Transform.xml b/source/RobotAPI/libraries/armem_robot_localization/aron/Transform.xml index 1e4e4c7d6..afdd4fafd 100644 --- a/source/RobotAPI/libraries/armem_robot_localization/aron/Transform.xml +++ b/source/RobotAPI/libraries/armem_robot_localization/aron/Transform.xml @@ -3,24 +3,12 @@ <AronTypeDefinition> <CodeIncludes> <Include include="<Eigen/Core>" /> + <Include include="<RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.aron.generated.h>" /> </CodeIncludes> + <AronIncludes> + <Include include="<RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.xml>" /> + </AronIncludes> <GenerateTypes> - - <Object name="armarx::aron::TransformHeader"> - <ObjectChild key='parentFrame'> - <string /> - </ObjectChild> - <ObjectChild key='frame'> - <string /> - </ObjectChild> - <ObjectChild key='agent'> - <string /> - </ObjectChild> - <ObjectChild key='timestamp'> - <Time /> - </ObjectChild> - </Object> - <Object name="armarx::aron::Transform"> <ObjectChild key='header'> <armarx::aron::TransformHeader /> @@ -29,6 +17,5 @@ <Pose /> </ObjectChild> </Object> - </GenerateTypes> </AronTypeDefinition> diff --git a/source/RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.xml b/source/RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.xml new file mode 100644 index 000000000..85add64be --- /dev/null +++ b/source/RobotAPI/libraries/armem_robot_localization/aron/TransformHeader.xml @@ -0,0 +1,23 @@ +<!--This class contains the data structure for ObjectPose --> +<?xml version="1.0" encoding="UTF-8" ?> +<AronTypeDefinition> + <CodeIncludes> + <Include include="<Eigen/Core>" /> + </CodeIncludes> + <GenerateTypes> + <Object name="armarx::aron::TransformHeader"> + <ObjectChild key='parentFrame'> + <string /> + </ObjectChild> + <ObjectChild key='frame'> + <string /> + </ObjectChild> + <ObjectChild key='agent'> + <string /> + </ObjectChild> + <ObjectChild key='timestamp'> + <Time /> + </ObjectChild> + </Object> + </GenerateTypes> +</AronTypeDefinition> diff --git a/source/RobotAPI/libraries/armem_robot_mapping/CMakeLists.txt b/source/RobotAPI/libraries/armem_robot_mapping/CMakeLists.txt index 5712d4c15..28e32f85f 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_robot_mapping/CMakeLists.txt @@ -10,8 +10,6 @@ armarx_add_library( # This package RobotAPICore RobotAPI::libraries::armem - # TODO(fabian.reister): remove this dependency! - RobotAPI::armem_robot_localization # System / External Eigen3::Eigen HEADERS diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp index d035b2b79..ec4fa0207 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp @@ -33,7 +33,7 @@ #include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/libraries/armem/util/util.h> -#include <RobotAPI/libraries/armem_robot_localization/MemoryConnector.h> +#include <RobotAPI/libraries/armem/client/MemoryConnector.h> #include <RobotAPI/libraries/armem_robot_mapping/aron/LaserScan.aron.generated.h> #include <RobotAPI/libraries/armem_robot_mapping/aron_conversions.h> #include <RobotAPI/libraries/armem_robot_mapping/types.h> diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h index 359b88fe8..5135d41b8 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h @@ -28,8 +28,7 @@ #include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> #include <RobotAPI/libraries/armem/client/Reader.h> -// TODO(fabian.reister): move MemoryConnector to armem library -#include <RobotAPI/libraries/armem_robot_localization/MemoryConnector.h> +#include <RobotAPI/libraries/armem/client/MemoryConnector.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem_robot_mapping/types.h> diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp index dd0299ece..2216b159f 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp @@ -71,7 +71,6 @@ namespace armarx::armem armem::EntityUpdate update; update.entityID = entityID; - update.timeCreated = armem::Time::now(); arondto::LaserScanStamped aronSensorData; // currently only sets the header diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h index 5d5f21185..4eddff56c 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h @@ -22,13 +22,12 @@ #pragma once -#include <RobotAPI/interface/units/LaserScannerUnit.h> #include <mutex> -#include <RobotAPI/libraries/armem/client/Writer.h> +#include <RobotAPI/interface/units/LaserScannerUnit.h> -// TODO(fabian.reister): move MemoryConnector to armem lib -#include "RobotAPI/libraries/armem_robot_localization/MemoryConnector.h" +#include <RobotAPI/libraries/armem/client/Writer.h> +#include <RobotAPI/libraries/armem/client/MemoryConnector.h> namespace armarx::armem diff --git a/source/RobotAPI/libraries/aron/common/CMakeLists.txt b/source/RobotAPI/libraries/aron/common/CMakeLists.txt index a64ff5e71..6fc9fa463 100644 --- a/source/RobotAPI/libraries/aron/common/CMakeLists.txt +++ b/source/RobotAPI/libraries/aron/common/CMakeLists.txt @@ -23,9 +23,6 @@ armarx_add_library( aron_conversions/armarx.cpp aron_conversions/simox.cpp aron_conversions/stl.cpp - - # TODO move - aron/ice_conversions.cpp ) @@ -37,11 +34,6 @@ armarx_enable_aron_file_generation_for_target( aron/OrientedBox.xml aron/PackagePath.xml - # aron/Attachment.xml - aron/RobotDescription.xml - aron/RobotState.xml - aron/Robot.xml - aron/Constraint.xml ) diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp index 0aa43a2b2..ea25e01e3 100644 --- a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp +++ b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp @@ -7,17 +7,6 @@ namespace armarx { - /* to be moved */ - void fromAron(const long& dto, IceUtil::Time& time) - { - time = IceUtil::Time::microSeconds(dto); - } - - void toAron(long& dto, const IceUtil::Time& time) - { - dto = time.toMicroSeconds(); - } - /* PackagePath */ void fromAron(const arondto::PackagePath& dto, PackagePath& bo) @@ -33,51 +22,4 @@ namespace armarx } - /* Robot */ - - void fromAron(const arondto::Robot& dto, Robot& bo) - { - fromAron(dto.description, bo.description); - fromAron(dto.state, bo.config); - } - - void toAron(arondto::Robot& dto, const Robot& bo) - { - toAron(dto.description, bo.description); - toAron(dto.state, bo.config); - } - - - /* RobotDescription */ - - void fromAron(const arondto::RobotDescription& dto, RobotDescription& bo) - { - aron::fromAron(dto.name, bo.name); - fromAron(dto.xml, bo.xml); - } - - void toAron(arondto::RobotDescription& dto, const RobotDescription& bo) - { - aron::toAron(dto.name, bo.name); - toAron(dto.xml, bo.xml); - } - - - /* RobotState */ - - void fromAron(const arondto::RobotState& dto, RobotState& bo) - { - fromAron(dto.timestamp, bo.timestamp); - bo.globalPose.matrix() = dto.globalPose; - bo.jointMap = dto.jointMap; - } - - void toAron(arondto::RobotState& dto, const RobotState& bo) - { - toAron(dto.timestamp, bo.timestamp); - dto.globalPose = bo.globalPose.matrix(); - dto.jointMap = bo.jointMap; - } - - } // namespace armarx diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h index fafb4c33a..985409745 100644 --- a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h +++ b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h @@ -6,32 +6,9 @@ #include <RobotAPI/libraries/aron/common/aron/PackagePath.aron.generated.h> -#include <RobotAPI/libraries/aron/common/aron/new_types.h> -#include <RobotAPI/libraries/aron/common/aron/RobotDescription.aron.generated.h> -#include <RobotAPI/libraries/aron/common/aron/RobotState.aron.generated.h> -#include <RobotAPI/libraries/aron/common/aron/Robot.aron.generated.h> - namespace armarx { - - // TODO move the following - void fromAron(const long& dto, IceUtil::Time& time); - void toAron(long& dto, const IceUtil::Time& time); - - // end TODO - - void fromAron(const arondto::PackagePath& dto, PackagePath& bo); void toAron(arondto::PackagePath& dto, const PackagePath& bo); - - void fromAron(const arondto::Robot& dto, Robot& bo); - void toAron(arondto::Robot& dto, const Robot& bo); - - void fromAron(const arondto::RobotDescription& dto, RobotDescription& bo); - void toAron(arondto::RobotDescription& dto, const RobotDescription& bo); - - void fromAron(const arondto::RobotState& dto, RobotState& bo); - void toAron(arondto::RobotState& dto, const RobotState& bo); - } // namespace armarx -- GitLab