From bd081a79c1df4f59c517c57354605273ef9552a0 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Tue, 27 Jul 2021 20:34:14 +0200
Subject: [PATCH] global planning: implemented aron_conversions

---
 .../libraries/global_planning/AStar.cpp       | 17 +++++++++--
 .../libraries/global_planning/AStar.h         |  2 --
 .../global_planning/aron/AStarParams.xml      | 13 ++++-----
 .../aron/GlobalPlannerParams.xml              |  9 ------
 .../global_planning/aron_conversions.cpp      | 28 +++++++++++++++++--
 .../global_planning/aron_conversions.h        | 14 ++++++++--
 6 files changed, 56 insertions(+), 27 deletions(-)

diff --git a/source/Navigation/libraries/global_planning/AStar.cpp b/source/Navigation/libraries/global_planning/AStar.cpp
index 4cb86374..fd38f8d3 100644
--- a/source/Navigation/libraries/global_planning/AStar.cpp
+++ b/source/Navigation/libraries/global_planning/AStar.cpp
@@ -6,7 +6,7 @@
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "Navigation/libraries/global_planning/Point2Point.h"
+#include "Navigation/libraries/global_planning/aron_conversions.h"
 #include <Navigation/libraries/algorithms/astar/AStarPlanner.h>
 #include <Navigation/libraries/algorithms/smoothing/ChainApproximation.h>
 #include <Navigation/libraries/algorithms/smoothing/CircularPathSmoothing.h>
@@ -29,13 +29,24 @@ namespace armarx::nav::glob_plan
     aron::datanavigator::DictNavigatorPtr
     AStarParams::toAron() const
     {
-        return arondto::AStarParams().toAron(); // TODO implement
+        arondto::AStarParams dto;
+
+        AStarParams bo;
+        aron_conv::toAron(dto, bo);
+
+        return dto.toAron();
     }
 
     AStarParams
     AStarParams::FromAron(const aron::datanavigator::DictNavigatorPtr& dict)
     {
-        return AStarParams(); // TODO implement
+        arondto::AStarParams dto;
+        dto.fromAron(dict);
+
+        AStarParams bo;
+        aron_conv::fromAron(dto, bo);
+
+        return bo;
     }
 
     // AStar
diff --git a/source/Navigation/libraries/global_planning/AStar.h b/source/Navigation/libraries/global_planning/AStar.h
index 28972bf4..c23d9186 100644
--- a/source/Navigation/libraries/global_planning/AStar.h
+++ b/source/Navigation/libraries/global_planning/AStar.h
@@ -35,13 +35,11 @@ namespace armarx::nav::glob_plan
     struct AStarParams : public GlobalPlannerParams
     {
         float linearVelocity{500};
-
         float resampleDistance{500};
 
         Algorithms algorithm() const override;
 
         aron::datanavigator::DictNavigatorPtr toAron() const override;
-
         static AStarParams FromAron(const aron::datanavigator::DictNavigatorPtr& dict);
     };
 
diff --git a/source/Navigation/libraries/global_planning/aron/AStarParams.xml b/source/Navigation/libraries/global_planning/aron/AStarParams.xml
index bc9c32c9..39b41041 100644
--- a/source/Navigation/libraries/global_planning/aron/AStarParams.xml
+++ b/source/Navigation/libraries/global_planning/aron/AStarParams.xml
@@ -1,22 +1,21 @@
 <?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>" />
     </AronIncludes>
 
     <GenerateTypes>
 
-        <Object name='armarx::nav::glob_plan::arondto::AStarParams'>
-            <!-- <ObjectChild key='resolution'>
+        <Object name='armarx::nav::glob_plan::arondto::AStarParams' extends="armarx::nav::glob_plan::arondto::GlobalPlannerParams">
+             <ObjectChild key='linearVelocity'>
                 <float />
             </ObjectChild>
-            <ObjectChild key='frame'>
-                <string />
+            <ObjectChild key='resampleDistance'>
+                <float />
             </ObjectChild>
-            <ObjectChild key='pose'>
-                <Pose />
-            </ObjectChild> -->
 
         </Object>
 
diff --git a/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml b/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
index f74b78db..40731e9b 100644
--- a/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
+++ b/source/Navigation/libraries/global_planning/aron/GlobalPlannerParams.xml
@@ -8,15 +8,6 @@
     <GenerateTypes>
 
         <Object name='armarx::nav::glob_plan::arondto::GlobalPlannerParams'>
-            <!-- <ObjectChild key='resolution'>
-                <float />
-            </ObjectChild>
-            <ObjectChild key='frame'>
-                <string />
-            </ObjectChild>
-            <ObjectChild key='pose'>
-                <Pose />
-            </ObjectChild> -->
 
         </Object>
 
diff --git a/source/Navigation/libraries/global_planning/aron_conversions.cpp b/source/Navigation/libraries/global_planning/aron_conversions.cpp
index 4161254b..fa8e2c84 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.cpp
+++ b/source/Navigation/libraries/global_planning/aron_conversions.cpp
@@ -1,22 +1,24 @@
 #include "aron_conversions.h"
 
+#include "RobotAPI/libraries/aron/common/aron_conversions/core.h"
 #include <RobotAPI/libraries/aron/common/aron_conversions.h>
 
+#include "Navigation/libraries/global_planning/AStar.h"
 #include "Navigation/libraries/global_planning/GlobalPlanner.h"
 #include "Navigation/libraries/global_planning/Point2Point.h"
+#include "Navigation/libraries/global_planning/aron/AStarParams.aron.generated.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)
+    toAron(arondto::GlobalPlannerParams& dto, const GlobalPlannerParams& bo)
     {
     }
 
     void
-    fromAron(const arondto::GlobalPlannerParams& dto, GlobalPlanner& bo)
+    fromAron(const arondto::GlobalPlannerParams& dto, GlobalPlannerParams& bo)
     {
     }
 
@@ -35,4 +37,24 @@ namespace armarx::nav::glob_plan::aron_conv
         aron::fromAron(dto.includeStartPose, bo.includeStartPose);
         aron::fromAron(dto.velocity, bo.velocity);
     }
+
+    void
+    toAron(arondto::AStarParams& dto, const AStarParams& bo)
+    {
+        toAron(static_cast<arondto::GlobalPlannerParams&>(dto),
+               static_cast<const GlobalPlannerParams&>(bo));
+
+        aron::toAron(dto.linearVelocity, bo.linearVelocity);
+        aron::toAron(dto.resampleDistance, bo.resampleDistance);
+    }
+
+    void
+    fromAron(const arondto::AStarParams& dto, AStarParams& bo)
+    {
+        fromAron(static_cast<const arondto::GlobalPlannerParams&>(dto),
+                 static_cast<GlobalPlannerParams&>(bo));
+
+        aron::fromAron(dto.linearVelocity, bo.linearVelocity);
+        aron::fromAron(dto.resampleDistance, bo.resampleDistance);
+    }
 } // 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 113c7d8a..2a946d43 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.h
+++ b/source/Navigation/libraries/global_planning/aron_conversions.h
@@ -1,22 +1,30 @@
+#pragma once
 
 namespace armarx::nav::glob_plan
 {
-    struct GlobalPlanner;
+    struct GlobalPlannerParams;
     struct Point2PointParams;
+    struct AStarParams;
 
     namespace arondto
     {
         struct GlobalPlannerParams;
         struct Point2PointParams;
+        struct AStarParams;
+
     } // namespace arondto
+
 } // namespace armarx::nav::glob_plan
 
 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::GlobalPlannerParams& dto, const GlobalPlannerParams& bo);
+    void fromAron(const arondto::GlobalPlannerParams& dto, GlobalPlannerParams& bo);
 
     void toAron(arondto::Point2PointParams& dto, const Point2PointParams& bo);
     void fromAron(const arondto::Point2PointParams& dto, Point2PointParams& bo);
 
+    void toAron(arondto::AStarParams& dto, const AStarParams& bo);
+    void fromAron(const arondto::AStarParams& dto, AStarParams& bo);
+
 } // namespace armarx::nav::glob_plan::aron_conv
-- 
GitLab