From 5cfb835487e1f3b2b9158765777f203a1b03aad6 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Fri, 9 Jul 2021 10:39:40 +0200
Subject: [PATCH] aron conversions for traj ctrl

---
 .../global_planning/aron_conversions.cpp      |  6 ++-
 .../global_planning/aron_conversions.h        | 40 ++++-----------
 .../trajectory_control/CMakeLists.txt         | 40 ++++++++++-----
 .../trajectory_control/aron/PIDParams.xml     | 20 ++++++++
 .../aron/TrajectoryControllerParams.xml       | 25 ++++++++++
 .../TrajectoryFollowingControllerParams.xml   | 27 ++++++++++
 .../aron/WaypointControllerParams.xml         | 25 ++++++++++
 .../trajectory_control/aron_conversions.cpp   | 42 ++++++++++++++++
 .../trajectory_control/aron_conversions.h     | 50 +++++++++++++++++++
 9 files changed, 232 insertions(+), 43 deletions(-)
 create mode 100644 source/Navigation/libraries/trajectory_control/aron/PIDParams.xml
 create mode 100644 source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml
 create mode 100644 source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml
 create mode 100644 source/Navigation/libraries/trajectory_control/aron/WaypointControllerParams.xml
 create mode 100644 source/Navigation/libraries/trajectory_control/aron_conversions.cpp
 create mode 100644 source/Navigation/libraries/trajectory_control/aron_conversions.h

diff --git a/source/Navigation/libraries/global_planning/aron_conversions.cpp b/source/Navigation/libraries/global_planning/aron_conversions.cpp
index 54836cfa..36055448 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.cpp
+++ b/source/Navigation/libraries/global_planning/aron_conversions.cpp
@@ -2,7 +2,11 @@
 
 #include <RobotAPI/libraries/aron/common/aron_conversions.h>
 
-#include <Navigation/libraries/global_planning/aron/GlobalPlannerParams.aron.generated.h>
+#include "Navigation/libraries/global_planning/GlobalPlanner.h"
+#include "Navigation/libraries/global_planning/Point2Point.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
 {
diff --git a/source/Navigation/libraries/global_planning/aron_conversions.h b/source/Navigation/libraries/global_planning/aron_conversions.h
index bd803b3c..64443b33 100644
--- a/source/Navigation/libraries/global_planning/aron_conversions.h
+++ b/source/Navigation/libraries/global_planning/aron_conversions.h
@@ -1,40 +1,22 @@
-/*
- * 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
+namespace armarx::nav::glob_plan
+{
+    struct GlobalPlanner;
+    struct Point2PointParams;
 
-#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 arondto
+    {
+        struct GlobalPlannerParams;
+        struct Point2PointParams;
+    } // namespace aron
+} // 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::Point2PointParams& dto, const Point2PointParams& bo);
     void fromAron(const arondto::Point2PointParams& dto, Point2PointParams& bo);
 
-} // namespace armarx::nav::glob_plan
+} // namespace armarx::nav::glob_plan::aron_conv
diff --git a/source/Navigation/libraries/trajectory_control/CMakeLists.txt b/source/Navigation/libraries/trajectory_control/CMakeLists.txt
index 5e52ec37..81a695d3 100644
--- a/source/Navigation/libraries/trajectory_control/CMakeLists.txt
+++ b/source/Navigation/libraries/trajectory_control/CMakeLists.txt
@@ -1,34 +1,48 @@
-set(LIB_NAME       ${PROJECT_NAME}TrajectoryControl)
+set(LIB_NAME ${PROJECT_NAME}TrajectoryControl)
 
 armarx_component_set_name("${LIB_NAME}")
 armarx_set_target("Library: ${LIB_NAME}")
 
 armarx_add_library(
-    LIBS     
+    LIBS
         ArmarXCoreInterfaces
         ArmarXCore
         RobotAPICore
         Navigation::Core
-
-    SOURCES  
+    SOURCES
         ./TrajectoryController.cpp
         ./TrajectoryFollowingController.cpp
         ./WaypointController.cpp
-    HEADERS  
+        ./aron_conversions.cpp
+    HEADERS
         ./TrajectoryController.h
         ./TrajectoryFollowingController.h
         ./WaypointController.h
+        ./aron_conversions.h
+)
+
+add_library(
+    Navigation::TrajectoryControl
+    ALIAS
+    ${PROJECT_NAME}TrajectoryControl
 )
 
-add_library(Navigation::TrajectoryControl ALIAS ${PROJECT_NAME}TrajectoryControl)
+armarx_enable_aron_file_generation_for_target(
+    TARGET_NAME
+        "${LIB_NAME}"
+    ARON_FILES
+        aron/PIDParams.xml
+        aron/TrajectoryControllerParams.xml
+        aron/TrajectoryFollowingControllerParams.xml
+        aron/WaypointControllerParams.xml
+        # aron/AStarParams.xml
+)
 
-#find_package(MyLib QUIET)
-#armarx_build_if(MyLib_FOUND "MyLib not available")
-# all target_include_directories must be guarded by if(Xyz_FOUND)
-# for multiple libraries write: if(X_FOUND AND Y_FOUND)....
-#if(MyLib_FOUND)
-#    target_include_directories(trajectory_control PUBLIC ${MyLib_INCLUDE_DIRS})
-#endif()
+# find_package(MyLib QUIET) armarx_build_if(MyLib_FOUND "MyLib not available")
+# all target_include_directories must be guarded by if(Xyz_FOUND) for multiple
+# libraries write: if(X_FOUND AND Y_FOUND).... if(MyLib_FOUND)
+# target_include_directories(trajectory_control PUBLIC ${MyLib_INCLUDE_DIRS})
+# endif()
 
 # add unit tests
 add_subdirectory(test)
diff --git a/source/Navigation/libraries/trajectory_control/aron/PIDParams.xml b/source/Navigation/libraries/trajectory_control/aron/PIDParams.xml
new file mode 100644
index 00000000..f31aa05d
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron/PIDParams.xml
@@ -0,0 +1,20 @@
+<!--Some fancy comment -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+
+        <Object name='armarx::nav::traj_ctrl::arondto::PIDParams'>
+            <ObjectChild key='Kp'>
+                <float />
+            </ObjectChild>
+             <ObjectChild key='Ki'>
+                <float />
+            </ObjectChild>
+             <ObjectChild key='Kd'>
+                <float />
+            </ObjectChild>
+        </Object>
+
+
+    </GenerateTypes>
+</AronTypeDefinition> 
diff --git a/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml b/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml
new file mode 100644
index 00000000..5309967b
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml
@@ -0,0 +1,25 @@
+<!--Some fancy comment -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <!-- <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.aron.generated.h>" /> -->
+    </CodeIncludes>
+    <AronIncludes>
+        <!-- <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml>" /> -->
+    </AronIncludes>
+
+    <GenerateTypes>
+
+        <!-- <Object name='armarx::nav::glob_plan::arondto::Point2PointParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> -->
+        <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams'>
+             <!-- <ObjectChild key='includeStartPose'>
+                <bool />
+            </ObjectChild>
+            <ObjectChild key='velocity'>
+                <float />
+            </ObjectChild> -->
+        </Object>
+
+
+    </GenerateTypes>
+</AronTypeDefinition> 
diff --git a/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml b/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml
new file mode 100644
index 00000000..3688cf30
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml
@@ -0,0 +1,27 @@
+<!--Some fancy comment -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.aron.generated.h>" />
+        <Include include="<Navigation/libraries/trajectory_control/aron/PIDParams.aron.generated.h>" />
+    </CodeIncludes>
+    <AronIncludes>
+        <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml>" />
+        <Include include="<Navigation/libraries/trajectory_control/aron/PIDParams.xml>" />
+    </AronIncludes>
+
+    <GenerateTypes>
+
+        <!-- <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryFollowingControllerParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> -->
+        <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryFollowingControllerParams'>
+            <ObjectChild key='pidPos'>
+                <armarx::nav::traj_ctrl::arondto::PIDParams />
+            </ObjectChild>
+            <ObjectChild key='pidOri'>
+                <armarx::nav::traj_ctrl::arondto::PIDParams />
+            </ObjectChild>
+        </Object>
+
+
+    </GenerateTypes>
+</AronTypeDefinition> 
diff --git a/source/Navigation/libraries/trajectory_control/aron/WaypointControllerParams.xml b/source/Navigation/libraries/trajectory_control/aron/WaypointControllerParams.xml
new file mode 100644
index 00000000..4deee7d3
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron/WaypointControllerParams.xml
@@ -0,0 +1,25 @@
+<!--Some fancy comment -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.aron.generated.h>" />
+    </CodeIncludes>
+    <AronIncludes>
+        <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml>" />
+    </AronIncludes>
+
+    <GenerateTypes>
+
+        <!-- <Object name='armarx::nav::traj_ctrl::arondto::WaypointControllerParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> -->
+        <Object name='armarx::nav::traj_ctrl::arondto::WaypointControllerParams'>
+             <ObjectChild key='includeStartPose'>
+                <bool />
+            </ObjectChild>
+            <ObjectChild key='velocity'>
+                <float />
+            </ObjectChild>
+        </Object>
+
+
+    </GenerateTypes>
+</AronTypeDefinition> 
diff --git a/source/Navigation/libraries/trajectory_control/aron_conversions.cpp b/source/Navigation/libraries/trajectory_control/aron_conversions.cpp
new file mode 100644
index 00000000..94884c33
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron_conversions.cpp
@@ -0,0 +1,42 @@
+#include "aron_conversions.h"
+
+#include <RobotAPI/libraries/aron/common/aron_conversions.h>
+
+#include "Navigation/libraries/trajectory_control/TrajectoryController.h"
+#include "Navigation/libraries/trajectory_control/TrajectoryFollowingController.h"
+#include "Navigation/libraries/trajectory_control/WaypointController.h"
+
+namespace armarx::nav::traj_ctrl::aron_conv
+{
+    void toAron(arondto::TrajectoryControllerParams& dto, const TrajectoryControllerParams& bo)
+    {
+
+    }
+
+    void fromAron(const arondto::TrajectoryControllerParams& dto, TrajectoryControllerParams& bo)
+    {
+
+    }
+
+    void toAron(arondto::TrajectoryFollowingControllerParams& dto, const TrajectoryFollowingControllerParams& bo)
+    {
+
+    }
+
+    void fromAron(const arondto::TrajectoryFollowingControllerParams& dto, TrajectoryFollowingControllerParams& bo)
+    {
+
+    }
+
+    void toAron(arondto::WaypointControllerParams& dto, const WaypointControllerParams& bo)
+    {
+
+    }
+
+    void fromAron(const arondto::WaypointControllerParams& dto, WaypointControllerParams& bo)
+    {
+
+    }
+
+
+} // namespace armarx::nav::traj_ctrl::aron_conv
diff --git a/source/Navigation/libraries/trajectory_control/aron_conversions.h b/source/Navigation/libraries/trajectory_control/aron_conversions.h
new file mode 100644
index 00000000..95115c7c
--- /dev/null
+++ b/source/Navigation/libraries/trajectory_control/aron_conversions.h
@@ -0,0 +1,50 @@
+/*
+ * 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
+
+
+namespace armarx::nav::traj_ctrl
+{
+    struct TrajectoryControllerParams;
+    struct TrajectoryFollowingControllerParams;
+    struct WaypointControllerParams;
+
+    namespace arondto
+    {
+        class TrajectoryControllerParams;
+        class TrajectoryFollowingControllerParams;
+        class WaypointControllerParams;
+    } // namespace arondto
+} // namespace armarx::nav::traj_ctrl
+
+namespace armarx::nav::traj_ctrl::aron_conv
+{
+    void toAron(arondto::TrajectoryControllerParams& dto, const TrajectoryControllerParams& bo);
+    void fromAron(const arondto::TrajectoryControllerParams& dto, TrajectoryControllerParams& bo);
+
+    void toAron(arondto::TrajectoryFollowingControllerParams& dto, const TrajectoryFollowingControllerParams& bo);
+    void fromAron(const arondto::TrajectoryFollowingControllerParams& dto, TrajectoryFollowingControllerParams& bo);
+
+    void toAron(arondto::WaypointControllerParams& dto, const WaypointControllerParams& bo);
+    void fromAron(const arondto::WaypointControllerParams& dto, WaypointControllerParams& bo);
+
+}  // namespace armarx::nav::traj_ctrl::aron_conv
-- 
GitLab