diff --git a/source/RobotAPI/libraries/aron/common/CMakeLists.txt b/source/RobotAPI/libraries/aron/common/CMakeLists.txt index ea66ba9db549c0f48357b706dfa59f49ee1e8498..8c844b040c17cc362b51f8706f5211cbeac2be21 100644 --- a/source/RobotAPI/libraries/aron/common/CMakeLists.txt +++ b/source/RobotAPI/libraries/aron/common/CMakeLists.txt @@ -37,6 +37,8 @@ armarx_enable_aron_file_generation_for_target( aron/PackagePath.xml aron/AxisAlignedBoundingBox.xml aron/OrientedBox.xml + aron/time.xml + aron/framed.xml ) add_library(aron::common ALIAS aroncommon) diff --git a/source/RobotAPI/libraries/aron/common/aron/FramedPose.xml b/source/RobotAPI/libraries/aron/common/aron/FramedPose.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec5aa0c961a11530ad1d6a08372fe2c42cbf10e8 --- /dev/null +++ b/source/RobotAPI/libraries/aron/common/aron/FramedPose.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<AronTypeDefinition> + + <GenerateTypes> + + <Object name="armarx::arondto::FrameHeader"> + <ObjectChild key='frame'> + <string /> + </ObjectChild> + <ObjectChild key='agent'> + <string /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedPosition"> + <ObjectChild key='header'> + <armarx::arondto::FrameHeader /> + </ObjectChild> + <ObjectChild key='position'> + <Position /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedDirection"> + <ObjectChild key='header'> + <armarx::arondto::FrameHeader /> + </ObjectChild> + <ObjectChild key='direction'> + <Position /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedOrientation"> + <ObjectChild key='header'> + <armarx::arondto::FrameHeader /> + </ObjectChild> + <ObjectChild key='orientation'> + <Orientation /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedPose"> + <ObjectChild key='header'> + <armarx::arondto::FrameHeader /> + </ObjectChild> + <ObjectChild key='pose'> + <Pose /> + </ObjectChild> + </Object> + + </GenerateTypes> + +</AronTypeDefinition> diff --git a/source/RobotAPI/libraries/aron/common/aron/framed.xml b/source/RobotAPI/libraries/aron/common/aron/framed.xml new file mode 100644 index 0000000000000000000000000000000000000000..2e2e6d45f95defa21e39670d5957dba539d63972 --- /dev/null +++ b/source/RobotAPI/libraries/aron/common/aron/framed.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<AronTypeDefinition> + + <CodeIncludes> + <Include include="<Eigen/Geometry>" /> + </CodeIncludes> + + <GenerateTypes> + + <Object name="armarx::arondto::FrameID"> + <ObjectChild key='frame'> + <string /> + </ObjectChild> + <ObjectChild key='agent'> + <string /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedPosition"> + <ObjectChild key='header'> + <armarx::arondto::FrameID /> + </ObjectChild> + <ObjectChild key='position'> + <Position /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedOrientation"> + <ObjectChild key='header'> + <armarx::arondto::FrameID /> + </ObjectChild> + <ObjectChild key='orientation'> + <Orientation /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::FramedPose"> + <ObjectChild key='header'> + <armarx::arondto::FrameID /> + </ObjectChild> + <ObjectChild key='pose'> + <Pose /> + </ObjectChild> + </Object> + + </GenerateTypes> + +</AronTypeDefinition> diff --git a/source/RobotAPI/libraries/aron/common/aron/time.xml b/source/RobotAPI/libraries/aron/common/aron/time.xml new file mode 100644 index 0000000000000000000000000000000000000000..390e677cda4a528839abc613b1d147511511e9e9 --- /dev/null +++ b/source/RobotAPI/libraries/aron/common/aron/time.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<AronTypeDefinition> + + <GenerateTypes> + + <IntEnum name="armarx::arondto::ClockType"> + <EnumValue key="Realtime" value="0" /> + <EnumValue key="Monotonic" value="1" /> + <EnumValue key="Virtual" value="2" /> + <EnumValue key="Unknown" value="3" /> + </IntEnum> + + <Object name="armarx::arondto::Duration"> + <ObjectChild key='microSeconds'> + <long /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::Frequency"> + <ObjectChild key='cycleDuration'> + <armarx::arondto::Duration /> + </ObjectChild> + </Object> + + <Object name="armarx::arondto::DateTime"> + <ObjectChild key='timeSinceEpoch'> + <armarx::arondto::Duration /> + </ObjectChild> + <ObjectChild key='clockType'> + <armarx::arondto::ClockType /> + </ObjectChild> + <ObjectChild key='hostname'> + <string /> + </ObjectChild> + </Object> + + </GenerateTypes> + +</AronTypeDefinition> diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp index d408f45ef12fe9ac8624469e6a25326e96498295..13535b2449250b9c3991accdee2d9289d16fbfaf 100644 --- a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp +++ b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.cpp @@ -31,4 +31,86 @@ namespace armarx dto = bo.toMicroSeconds(); } + void fromAron(const arondto::ClockType& dto, ClockType& bo) + { + switch (dto.value) + { + case arondto::ClockType::Realtime: + bo = ClockType::Realtime; + break; + case arondto::ClockType::Monotonic: + bo = ClockType::Monotonic; + break; + case arondto::ClockType::Virtual: + bo = ClockType::Virtual; + break; + case arondto::ClockType::Unknown: + bo = ClockType::Unknown; + break; + } + } + + void toAron(arondto::ClockType& dto, const ClockType& bo) + { + switch (bo) + { + case ClockType::Realtime: + dto = arondto::ClockType::Realtime; + break; + case ClockType::Monotonic: + dto = arondto::ClockType::Monotonic; + break; + case ClockType::Virtual: + dto = arondto::ClockType::Virtual; + break; + case ClockType::Unknown: + dto = arondto::ClockType::Unknown; + break; + } + } + + void fromAron(const arondto::Duration& dto, Duration& bo) + { + bo = Duration::MicroSeconds(dto.microSeconds); + } + + void toAron(arondto::Duration& dto, const Duration& bo) + { + dto.microSeconds = bo.toMicroSeconds(); + } + + void fromAron(const arondto::Frequency& dto, Frequency& bo) + { + Duration cycleDuration; + fromAron(dto.cycleDuration, cycleDuration); + bo = Frequency(cycleDuration); + } + + void toAron(arondto::Frequency& dto, const Frequency& bo) + { + arondto::Duration cycleDuration; + toAron(cycleDuration, bo.toCycleDuration()); + dto.cycleDuration = cycleDuration; + } + + void fromAron(const arondto::DateTime& dto, DateTime& bo) + { + Duration timeSinceEpoch; + fromAron(dto.timeSinceEpoch, timeSinceEpoch); + ClockType clockType; + fromAron(dto.clockType, clockType); + bo = DateTime(timeSinceEpoch, clockType, dto.hostname); + } + + void toAron(arondto::DateTime& dto, const DateTime& bo) + { + arondto::Duration timeSinceEpoch; + toAron(timeSinceEpoch, bo.toDurationSinceEpoch()); + dto.timeSinceEpoch = timeSinceEpoch; + arondto::ClockType clockType; + toAron(clockType, bo.clockType()); + dto.clockType = clockType; + dto.hostname = bo.hostname(); + } + } // 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 48c24690503cec91a17da37909a53c3228984e26..3f66752a865a0cfe2a0cb7e790e232f087751e2b 100644 --- a/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h +++ b/source/RobotAPI/libraries/aron/common/aron_conversions/armarx.h @@ -1,17 +1,33 @@ #pragma once #include <ArmarXCore/core/PackagePath.h> +#include <ArmarXCore/core/time_minimal.h> #include <IceUtil/Time.h> #include <RobotAPI/libraries/aron/common/aron/PackagePath.aron.generated.h> +#include <RobotAPI/libraries/aron/common/aron/time.aron.generated.h> +#include <RobotAPI/libraries/aron/common/aron/framed.aron.generated.h> namespace armarx { + void fromAron(const arondto::PackagePath& dto, PackagePath& bo); void toAron(arondto::PackagePath& dto, const PackagePath& bo); void fromAron(const long& dto, IceUtil::Time& bo); void toAron(long& dto, const IceUtil::Time& bo); + void fromAron(const arondto::ClockType& dto, ClockType& bo); + void toAron(arondto::ClockType& dto, const ClockType& bo); + + void fromAron(const arondto::Duration& dto, Duration& bo); + void toAron(arondto::Duration& dto, const Duration& bo); + + void fromAron(const arondto::Frequency& dto, Frequency& bo); + void toAron(arondto::Frequency& dto, const Frequency& bo); + + void fromAron(const arondto::DateTime& dto, DateTime& bo); + void toAron(arondto::DateTime& dto, const DateTime& bo); + } // namespace armarx