From ad92494538094e047b737c060920650578625ce4 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Thu, 23 Jun 2022 13:36:43 +0200
Subject: [PATCH] trajectory_control: only robot is necessary (instead of full
 scene)

---
 .../TrajectoryController.cpp                  |  6 ++---
 .../trajectory_control/TrajectoryController.h |  6 +----
 .../TrajectoryFollowingController.cpp         | 24 +++++++++----------
 .../TrajectoryFollowingController.h           |  4 +++-
 .../trajectory_control/WaypointController.cpp |  8 +++----
 .../trajectory_control/WaypointController.h   |  2 +-
 .../trajectory_control/aron_conversions.cpp   |  4 ++--
 .../trajectory_control/aron_conversions.h     |  6 +----
 8 files changed, 26 insertions(+), 34 deletions(-)

diff --git a/source/armarx/navigation/trajectory_control/TrajectoryController.cpp b/source/armarx/navigation/trajectory_control/TrajectoryController.cpp
index 8252cedb..be79e84e 100644
--- a/source/armarx/navigation/trajectory_control/TrajectoryController.cpp
+++ b/source/armarx/navigation/trajectory_control/TrajectoryController.cpp
@@ -2,8 +2,8 @@
 
 namespace armarx::navigation::traj_ctrl
 {
-    TrajectoryController::TrajectoryController(const core::Scene& context) : context(context)
-    {
-    }
+    // TrajectoryController::TrajectoryController(const core::Scene& context) : context(context)
+    // {
+    // }
 
 } // namespace armarx::navigation::traj_ctrl
diff --git a/source/armarx/navigation/trajectory_control/TrajectoryController.h b/source/armarx/navigation/trajectory_control/TrajectoryController.h
index f13e168a..72d5927d 100644
--- a/source/armarx/navigation/trajectory_control/TrajectoryController.h
+++ b/source/armarx/navigation/trajectory_control/TrajectoryController.h
@@ -61,15 +61,11 @@ namespace armarx::navigation::traj_ctrl
     class TrajectoryController
     {
     public:
-        TrajectoryController(const core::Scene& context);
+        TrajectoryController() = default;
         virtual ~TrajectoryController() = default;
 
         virtual TrajectoryControllerResult control(const core::Trajectory& goal) = 0;
 
-    protected:
-        const core::Scene& context;
-
-    private:
     };
     using TrajectoryControllerPtr = std::shared_ptr<TrajectoryController>;
 
diff --git a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
index 1997cb8f..2a68520c 100644
--- a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
+++ b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
@@ -34,7 +34,7 @@ namespace armarx::navigation::traj_ctrl
         arondto::TrajectoryFollowingControllerParams dto;
 
         TrajectoryFollowingControllerParams bo;
-        aron_conv::toAron(dto, bo);
+        armarx::navigation::traj_ctrl::toAron(dto, bo);
 
         return dto.toAron();
     }
@@ -46,16 +46,17 @@ namespace armarx::navigation::traj_ctrl
         dto.fromAron(dict);
 
         TrajectoryFollowingControllerParams bo;
-        aron_conv::fromAron(dto, bo);
+        armarx::navigation::traj_ctrl::fromAron(dto, bo);
 
         return bo;
     }
 
     // TrajectoryFollowingController
 
-    TrajectoryFollowingController::TrajectoryFollowingController(const Params& params,
-                                                                 const core::Scene& context) :
-        TrajectoryController(context),
+    TrajectoryFollowingController::TrajectoryFollowingController(
+        const VirtualRobot::RobotPtr& robot,
+        const Params& params) :
+        robot(robot),
         params(params),
         pidPos(params.pidPos.Kp,
                params.pidPos.Ki,
@@ -93,11 +94,8 @@ namespace armarx::navigation::traj_ctrl
     core::Twist
     TrajectoryFollowingController::applyTwistLimits(core::Twist twist)
     {
-        const core::Twist limits
-        {
-            .linear = Eigen::Vector3f::Ones() * params.limits.linear,
-            .angular = Eigen::Vector3f::Ones() * params.limits.angular
-        };
+        const core::Twist limits{.linear = Eigen::Vector3f::Ones() * params.limits.linear,
+                                 .angular = Eigen::Vector3f::Ones() * params.limits.angular};
 
         // for all entries, scale should be less than 1
         const auto scalePos = twist.linear.cwiseAbs().cwiseQuotient(limits.linear.cwiseAbs());
@@ -128,9 +126,9 @@ namespace armarx::navigation::traj_ctrl
     TrajectoryControllerResult
     TrajectoryFollowingController::control(const core::Trajectory& trajectory)
     {
-        ARMARX_CHECK_NOT_NULL(context.robot) << "Robot not available";
+        ARMARX_CHECK_NOT_NULL(robot) << "Robot not available";
 
-        const core::Pose currentPose(context.robot->getGlobalPose());
+        const core::Pose currentPose(robot->getGlobalPose());
 
         const auto projectedPose = trajectory.getProjection(
             currentPose.translation(), core::VelocityInterpolation::LinearInterpolation);
@@ -182,7 +180,7 @@ namespace armarx::navigation::traj_ctrl
             const auto feedforwardVelocity = desiredMovementDirection * ffVel;
 
             ARMARX_VERBOSE << deactivateSpam(1) << "Feed forward direction "
-                         << feedforwardVelocity.normalized();
+                           << feedforwardVelocity.normalized();
             ARMARX_VERBOSE << deactivateSpam(1) << "Feed forward velocity " << feedforwardVelocity;
             ARMARX_VERBOSE << deactivateSpam(1) << "Control value " << pidPos.getControlValue();
 
diff --git a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.h b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.h
index a9a8a94c..ffb81732 100644
--- a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.h
+++ b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.h
@@ -48,7 +48,7 @@ namespace armarx::navigation::traj_ctrl
     public:
         using Params = TrajectoryFollowingControllerParams;
 
-        TrajectoryFollowingController(const Params& params, const core::Scene& context);
+        TrajectoryFollowingController(const VirtualRobot::RobotPtr& robot, const Params& params);
         ~TrajectoryFollowingController() override = default;
 
         TrajectoryControllerResult control(const core::Trajectory& trajectory) override;
@@ -57,8 +57,10 @@ namespace armarx::navigation::traj_ctrl
         core::Twist applyTwistLimits(core::Twist twist);
 
     private:
+        const VirtualRobot::RobotPtr robot;
         const Params params;
 
+
         MultiDimPIDControllerTemplate<3> pidPos;
         MultiDimPIDControllerTemplate<3> pidPosTarget;
         MultiDimPIDControllerTemplate<3> pidOri;
diff --git a/source/armarx/navigation/trajectory_control/WaypointController.cpp b/source/armarx/navigation/trajectory_control/WaypointController.cpp
index c08ff5b9..527bd4f3 100644
--- a/source/armarx/navigation/trajectory_control/WaypointController.cpp
+++ b/source/armarx/navigation/trajectory_control/WaypointController.cpp
@@ -21,7 +21,7 @@ namespace armarx::navigation::traj_ctrl
         arondto::WaypointControllerParams dto;
 
         WaypointControllerParams bo;
-        aron_conv::toAron(dto, bo);
+        armarx::navigation::traj_ctrl::toAron(dto, bo);
 
         return dto.toAron();
     }
@@ -33,15 +33,15 @@ namespace armarx::navigation::traj_ctrl
         dto.fromAron(dict);
 
         WaypointControllerParams bo;
-        aron_conv::fromAron(dto, bo);
+        armarx::navigation::traj_ctrl::fromAron(dto, bo);
 
         return bo;
     }
 
     // WaypointController
 
-    WaypointController::WaypointController(const Params& params, const core::Scene& context) :
-        TrajectoryController(context), params(params)
+    WaypointController::WaypointController(const Params& params) :
+        params(params)
     {
     }
 
diff --git a/source/armarx/navigation/trajectory_control/WaypointController.h b/source/armarx/navigation/trajectory_control/WaypointController.h
index 13133e67..ec5d4372 100644
--- a/source/armarx/navigation/trajectory_control/WaypointController.h
+++ b/source/armarx/navigation/trajectory_control/WaypointController.h
@@ -39,7 +39,7 @@ namespace armarx::navigation::traj_ctrl
     public:
         using Params = WaypointControllerParams;
 
-        WaypointController(const Params& params, const core::Scene& context);
+        WaypointController(const Params& params);
         ~WaypointController() override = default;
 
         TrajectoryControllerResult control(const core::Trajectory& goal) override;
diff --git a/source/armarx/navigation/trajectory_control/aron_conversions.cpp b/source/armarx/navigation/trajectory_control/aron_conversions.cpp
index d8d6d898..2cc2d0b4 100644
--- a/source/armarx/navigation/trajectory_control/aron_conversions.cpp
+++ b/source/armarx/navigation/trajectory_control/aron_conversions.cpp
@@ -13,7 +13,7 @@
 #include <armarx/navigation/trajectory_control/aron/WaypointControllerParams.aron.generated.h>
 
 
-namespace armarx::navigation::traj_ctrl::aron_conv
+namespace armarx::navigation::traj_ctrl
 {
 
     void
@@ -67,4 +67,4 @@ namespace armarx::navigation::traj_ctrl::aron_conv
     }
 
 
-} // namespace armarx::navigation::traj_ctrl::aron_conv
+} // namespace armarx::navigation::traj_ctrl
diff --git a/source/armarx/navigation/trajectory_control/aron_conversions.h b/source/armarx/navigation/trajectory_control/aron_conversions.h
index 14954575..f8496c98 100644
--- a/source/armarx/navigation/trajectory_control/aron_conversions.h
+++ b/source/armarx/navigation/trajectory_control/aron_conversions.h
@@ -39,10 +39,6 @@ namespace armarx::navigation::traj_ctrl
         class WaypointControllerParams;
     } // namespace arondto
 
-} // namespace armarx::navigation::traj_ctrl
-
-namespace armarx::navigation::traj_ctrl::aron_conv
-{
 
     void toAron(arondto::TrajectoryControllerParams& dto, const TrajectoryControllerParams& bo);
     void fromAron(const arondto::TrajectoryControllerParams& dto, TrajectoryControllerParams& bo);
@@ -55,4 +51,4 @@ namespace armarx::navigation::traj_ctrl::aron_conv
     void toAron(arondto::WaypointControllerParams& dto, const WaypointControllerParams& bo);
     void fromAron(const arondto::WaypointControllerParams& dto, WaypointControllerParams& bo);
 
-} // namespace armarx::navigation::traj_ctrl::aron_conv
+}  // namespace armarx::navigation::traj_ctrl
-- 
GitLab