diff --git a/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt b/source/RobotAPI/components/ObjectPoseProviderExample/CMakeLists.txt index 1395fc02f564792a7ffe7e0963264f5c0ac6fb9e..97c324a68ebea6122dd6e06cfe12f9cb2ab60510 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 18ccb6875d1611e05cf20a8fa714dd293df995e6..cc296ea48e6f06437060c7e1cb41f7cd06678e8b 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 3097f6c7596fd3fdf82aedd9d974712081cf503c..adc6063bc185f179af57f1b83dc07bba9a6f868c 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 be30284443c02aa0c4a90225855df5b2d753f6aa..03f509ce8d6cd2ddcce5c2800e14a8cafb25dfa1 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 4c1e05dcc6bb83171c9c48ebe7e6c867059ed48a..6e11e66194887d0304f34b9bd2cbaf58da4732fc 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 de63863695864b2c436b329be60f06f4d9da58bb..6b0227772cb6c40b0b449dcd3e931e5314ad1548 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 b1360fc5b024bdf431c5bf3e35922b340d2f146f..534df98a19ce5caa5ed59c6601993c2d598017d9 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 dc92382a77b6819435ddf6f746ceb067e2ffe0b9..2b2f0ba387457c856003a0528ac0e4c223c4b175 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 bc6f8f2a0257fd0d23bfdf792f4aa91ea0266227..84ab00dc170c94880205ce0f9d1327eaf98b0aac 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 1579bf790fce6b1248866a42c3cae467ee583ace..eaf9b41a75f58cfe9b5a9cedbbdfcb5bd6774499 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 859f3d601024ba97dd0e59e938afaba2718a95a1..a1a7605310574f5eb5592a8b243da603a9c261ee 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 7ea733e99c75895ff7aba463f36a0f53d0c4bd38..995c249f9f39e92d3ef889df7dbe8277190b3351 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..556284d2cc8961c96b5545acfdd5a1855c5f2fcf 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9afe430b8e7241b09f21e2745f93bb9e56f2e33c 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 0000000000000000000000000000000000000000..9ffb994aee690080a8254d11ab8f5d4f7eba14d5 --- /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 3356868612aa3ee5a2973604925c30620ce65475..bbfecee5baaf971d7783122771db1510f61c2157 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 00aa04afdf7748c2e3224c918f6a0b4cf5c74173..fbbe3006970f8ca4180e5ae2860764a29456b004 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 60fa683ae66fc983475bd550604c2759adc64c01..c772840db4e270470bce8efa2535af5c81e92094 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 19a7f00199d06462123d94d345f54fec030672cc..24caa9df3f797dc1e259f2709a995d50e1a584a7 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 9b04899545e78bdad1b3d0dbcca03c0ba61b4dcd..4107ed61fcc108737049f6fb063929012575a898 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 1ac8ea58b31d24e14d7f2ee14eb9c34d61178e44..7a9bcd1f4825c6d775201fb862e5a21f0af70cbf 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 2804fbc53e7a0f61c937dc0a1b6c65d558196e1c..7d1ee2acbac7739ea73f92ca2a5205068cf0e5fa 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 1e4e4c7d61c14d70a94499f8491254a20d336c89..afdd4fafdbd74b08c19bbb98cbc1dd326ee6244e 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 0000000000000000000000000000000000000000..85add64bec4441b3e203a2d798322629521ea4fe --- /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 5712d4c15f338783ac913f3416d6b8fcdb900003..28e32f85f987b88246265ae4fc165c7bd68968de 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 d035b2b7926376c0e16e38bcfd6d8182f4609d87..ec4fa02074ffa65ed9bcb13e1d5212ebb0c3cfd1 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 359b88fe8550d9b64f066fe942a5c6fda7dce172..5135d41b89c14380d85b5af4f1e90323cf9feb70 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 dd0299ece229eaac2fb4f44758fae23f763f612d..2216b159f0f18d336834e80f16b9c58c7d05948c 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 5d5f21185ba6bfad4cb319bef81853ef3bd551f5..4eddff56c3dfa7b314fc844fff6a18c60bd45003 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 a64ff5e710dd9d1cce55cceb5140324ceb081024..6fc9fa463f3f037c38f6e0142c934678775d9aaa 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 0aa43a2b2b999317d8258ebd452e6997045c6cae..ea25e01e3517602df7cf7871cd393d5639de8d50 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 fafb4c33af5748c162ced73dc22c70baa9d971b5..985409745af2576b980de11b169809efd91118b2 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