From c0840fbf65a46b5f0cac9d2bc9418ca3e025f39e Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 13 Jul 2022 13:28:03 +0200
Subject: [PATCH] TrajectoryFollowingController: floating point rounding fix

---
 .../TrajectoryFollowingController.cpp              | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
index 486ba3d0..b5ef2b45 100644
--- a/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
+++ b/source/armarx/navigation/trajectory_control/TrajectoryFollowingController.cpp
@@ -112,13 +112,15 @@ namespace armarx::navigation::traj_ctrl
         twist.linear /= scaleMax;
         twist.angular /= scaleMax;
 
+        constexpr float eps = 0.001;
+
         // pedantic checks
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.x()), params.limits.linear);
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.y()), params.limits.linear);
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.z()), params.limits.linear);
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.x()), params.limits.angular);
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.y()), params.limits.angular);
-        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.z()), params.limits.angular);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.x()), params.limits.linear + eps);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.y()), params.limits.linear + eps);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.linear.z()), params.limits.linear + eps);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.x()), params.limits.angular + eps);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.y()), params.limits.angular + eps);
+        ARMARX_CHECK_LESS_EQUAL(std::abs(twist.angular.z()), params.limits.angular + eps);
 
         return twist;
     }
-- 
GitLab