From 18260a4278c09279e88bec6d14455d2f19f6f759 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Fri, 9 Jul 2021 10:25:02 +0200
Subject: [PATCH] aron conversions

---
 .../libraries/global_planning/Point2Point.cpp | 17 +++++++-
 .../aron/GlobalPlannerParams.xml              |  4 +-
 .../aron/Point2PointParams.xml                | 16 ++++----
 .../global_planning/aron_conversions.cpp      | 30 ++++++++++++++
 .../global_planning/aron_conversions.h        | 40 +++++++++++++++++++
 5 files changed, 94 insertions(+), 13 deletions(-)

diff --git a/source/Navigation/libraries/global_planning/Point2Point.cpp b/source/Navigation/libraries/global_planning/Point2Point.cpp
index ffe51c74..fef24e7f 100644
--- a/source/Navigation/libraries/global_planning/Point2Point.cpp
+++ b/source/Navigation/libraries/global_planning/Point2Point.cpp
@@ -12,6 +12,8 @@
 #include "Navigation/libraries/core/types.h"
 #include "Navigation/libraries/global_planning/GlobalPlanner.h"
 #include "Navigation/libraries/global_planning/core.h"
+#include <Navigation/libraries/global_planning/aron/Point2PointParams.aron.generated.h>
+#include <Navigation/libraries/global_planning/aron_conversions.h>
 
 namespace armarx::nav::glob_plan
 {
@@ -25,12 +27,23 @@ namespace armarx::nav::glob_plan
 
     aron::datanavigator::DictNavigatorPtr Point2PointParams::toAron() const
     {
-        return nullptr; // TODO implement
+        arondto::Point2PointParams dto;
+
+        Point2PointParams bo;
+        aron_conv::toAron(dto, bo);
+
+        return dto.toAron();
     }
 
     Point2PointParams Point2PointParams::FromAron(const aron::datanavigator::DictNavigatorPtr& dict)
     {
-        return Point2PointParams(); // TODO implement
+        arondto::Point2PointParams dto;
+        dto.fromAron(dict);
+
+        Point2PointParams bo;
+        aron_conv::fromAron(dto, bo);
+
+        return bo;
     }
 
     // Point2Point
diff --git a/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml b/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
index 240840b1..0e908374 100644
--- a/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
+++ b/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
@@ -9,7 +9,7 @@
     <GenerateTypes>
 
         <Object name='armarx::nav::glob_plan::arondto::GlobalPlannerParams'>
-            <ObjectChild key='resolution'>
+            <!-- <ObjectChild key='resolution'>
                 <float />
             </ObjectChild>
             <ObjectChild key='frame'>
@@ -17,7 +17,7 @@
             </ObjectChild>
             <ObjectChild key='pose'>
                 <Pose />
-            </ObjectChild>
+            </ObjectChild> -->
             
         </Object>
 
diff --git a/source/Navigation/libraries/global_planning/aron/Point2PointParams.xml b/source/Navigation/libraries/global_planning/aron/Point2PointParams.xml
index 1c2f006f..84e2f0fd 100644
--- a/source/Navigation/libraries/global_planning/aron/Point2PointParams.xml
+++ b/source/Navigation/libraries/global_planning/aron/Point2PointParams.xml
@@ -2,6 +2,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <AronTypeDefinition>
     <CodeIncludes>
+        <Include include="<Navigation/libraries/global_planning/aron/GlobalPlannerParams.aron.generated.h>" />
     </CodeIncludes>
     <AronIncludes>
         <Include include="<Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml>" />
@@ -9,17 +10,14 @@
 
     <GenerateTypes>
 
-        <Object name='armarx::nav::glob_plan::arondto::GlobalPlannerParams' extends="armarx::nav::glob_plan::arondto::GlobalPlannerParams">
-            <ObjectChild key='resolution'>
-                <float />
-            </ObjectChild>
-            <ObjectChild key='frame'>
-                <string />
+        <!-- <Object name='armarx::nav::glob_plan::arondto::Point2PointParams' extends="armarx::nav::glob_plan::arondto::GlobalPlannerParams"> -->
+        <Object name='armarx::nav::glob_plan::arondto::Point2PointParams'>
+             <ObjectChild key='includeStartPose'>
+                <bool />
             </ObjectChild>
-            <ObjectChild key='pose'>
-                <Pose />
+            <ObjectChild key='velocity'>
+                <float />
             </ObjectChild>
-            
         </Object>
 
 
diff --git a/source/Navigation/libraries/global_planning/aron_conversions.cpp b/source/Navigation/libraries/global_planning/aron_conversions.cpp
index e69de29b..54836cfa 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.cpp
+++ b/source/Navigation/libraries/global_planning/aron_conversions.cpp
@@ -0,0 +1,30 @@
+#include "aron_conversions.h"
+
+#include <RobotAPI/libraries/aron/common/aron_conversions.h>
+
+#include <Navigation/libraries/global_planning/aron/GlobalPlannerParams.aron.generated.h>
+
+namespace armarx::nav::glob_plan::aron_conv
+{
+    void toAron(arondto::GlobalPlannerParams& dto, const GlobalPlanner& bo)
+    {
+    }
+
+    void fromAron(const arondto::GlobalPlannerParams& dto, GlobalPlanner& bo)
+    {
+    }
+
+    void toAron(arondto::Point2PointParams& dto, const Point2PointParams& bo)
+    {
+        // fromAron(static_cast<const arondto::GlobalPlannerParams&>(dto), static_cast<const GlobalPlannerParams&>(bo));
+        aron::toAron(dto.includeStartPose, bo.includeStartPose);
+        aron::toAron(dto.velocity, bo.velocity);
+    }
+
+    void fromAron(const arondto::Point2PointParams& dto, Point2PointParams& bo)
+    {
+        // fromAron(static_cast<arondto::GlobalPlannerParams&>(dto), static_cast<GlobalPlannerParams&>(bo));
+        aron::fromAron(dto.includeStartPose, bo.includeStartPose);
+        aron::fromAron(dto.velocity, bo.velocity);
+    }
+} // namespace armarx::nav::glob_plan::aron_conv
diff --git a/source/Navigation/libraries/global_planning/aron_conversions.h b/source/Navigation/libraries/global_planning/aron_conversions.h
index e69de29b..bd803b3c 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.h
+++ b/source/Navigation/libraries/global_planning/aron_conversions.h
@@ -0,0 +1,40 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author     Fabian Reister ( fabian dot reister at kit dot edu )
+ * @date       2021
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include "Navigation/libraries/global_planning/GlobalPlanner.h"
+#include "Navigation/libraries/global_planning/Point2Point.h"
+// #include "Navigation/libraries/global_planning/AStar.h"
+#include "Navigation/libraries/global_planning/aron/GlobalPlannerParams.aron.generated.h"
+#include "Navigation/libraries/global_planning/aron/Point2PointParams.aron.generated.h"
+// #include "Navigation/libraries/global_planning/aron/AStarParams.aron.generated.h"
+
+namespace armarx::nav::glob_plan::aron_conv
+{
+
+    void toAron(arondto::GlobalPlannerParams& dto, const GlobalPlanner& bo);
+    void fromAron(const arondto::GlobalPlannerParams& dto, GlobalPlanner& bo);
+
+    void toAron(arondto::Point2PointParams& dto, const Point2PointParams& bo);
+    void fromAron(const arondto::Point2PointParams& dto, Point2PointParams& bo);
+
+} // namespace armarx::nav::glob_plan
-- 
GitLab