From 871b9d5d6fc9a397d93d757e066caf49245cfe85 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 29 Sep 2021 22:14:04 +0200
Subject: [PATCH] armem_robot: aron conversions for platform state (=> twist)

---
 .../libraries/armem_robot/aron_conversions.cpp    | 15 +++++++++++++++
 .../libraries/armem_robot/aron_conversions.h      |  3 +++
 source/RobotAPI/libraries/armem_robot/types.h     | 12 ++++++++++++
 3 files changed, 30 insertions(+)

diff --git a/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp b/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
index da72cc16f..426511a9a 100644
--- a/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
+++ b/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
@@ -1,5 +1,6 @@
 #include "aron_conversions.h"
 
+#include "ArmarXCore/core/logging/Logging.h"
 #include <RobotAPI/libraries/aron/common/aron_conversions.h>
 
 #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
@@ -107,5 +108,19 @@ namespace armarx::armem
         dto.objectPoseGlobal = bo.globalPose.matrix();
         dto.objectJointValues = bo.jointMap;
     }
+    
+    void robot::fromAron(const armarx::armem::prop::arondto::Platform& dto, robot::PlatformState& bo) 
+    {
+        bo.twist.linear.setZero();
+        bo.twist.linear.head<2>() = dto.velocity.head<2>(); // x and y
+
+        bo.twist.angular.setZero();
+        bo.twist.angular.z() = dto.velocity.z(); // yaw
+    }
+    
+    void robot::toAron(armarx::armem::prop::arondto::Platform& dto, const robot::PlatformState& bo) 
+    {
+        ARMARX_ERROR << "Not implemented yet.";
+    }
 
 }  // namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem_robot/aron_conversions.h b/source/RobotAPI/libraries/armem_robot/aron_conversions.h
index 9c124d758..e6b462fa8 100644
--- a/source/RobotAPI/libraries/armem_robot/aron_conversions.h
+++ b/source/RobotAPI/libraries/armem_robot/aron_conversions.h
@@ -8,6 +8,7 @@
 #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h>
 #include <RobotAPI/libraries/armem_robot/aron/RobotState.aron.generated.h>
 #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h>
+#include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h>
 
 
 namespace armarx::armem::robot
@@ -26,6 +27,8 @@ namespace armarx::armem::robot
     void fromAron(const arondto::RobotState& dto, RobotState& bo);
     void toAron(arondto::RobotState& dto, const RobotState& bo);
 
+    void fromAron(const armarx::armem::prop::arondto::Platform& dto, PlatformState& bo);
+    void toAron(armarx::armem::prop::arondto::Platform& dto, const PlatformState& bo);
 
     void fromAron(const arondto::ObjectClass& dto, RobotDescription& bo);
     void toAron(arondto::ObjectClass& dto, const RobotDescription& bo);
diff --git a/source/RobotAPI/libraries/armem_robot/types.h b/source/RobotAPI/libraries/armem_robot/types.h
index 92f16199a..ad7454d6f 100644
--- a/source/RobotAPI/libraries/armem_robot/types.h
+++ b/source/RobotAPI/libraries/armem_robot/types.h
@@ -23,6 +23,18 @@ namespace armarx::armem::robot
         PackagePath xml{"", std::filesystem::path("")};
     };
 
+
+    struct Twist
+    {
+        Eigen::Vector3f linear;
+        Eigen::Vector3f angular;
+    };
+
+    struct PlatformState
+    {
+        Twist twist;
+    };
+
     struct RobotState
     {
         using JointMap = std::map<std::string, float>;
-- 
GitLab