diff --git a/source/armarx/navigation/human/HumanTracker.cpp b/source/armarx/navigation/human/HumanTracker.cpp
index ea22b062e5bcb3f01a95fcdd5268661788cb11ac..4cde5d0d777c53160e3ecdddaa375b07e72a832c 100644
--- a/source/armarx/navigation/human/HumanTracker.cpp
+++ b/source/armarx/navigation/human/HumanTracker.cpp
@@ -7,6 +7,7 @@
 #include <range/v3/range/conversion.hpp>
 #include <range/v3/view/transform.hpp>
 
+
 namespace armarx::navigation::human
 {
     void
@@ -53,13 +54,13 @@ namespace armarx::navigation::human
         // footprints
         std::vector<AdvancedCluster> potentialFootprints;
         std::vector<Cluster> unusedClusters;
-        for (auto it = measurements.clusters.begin(); it != measurements.clusters.end();)
+        for (const auto& cluster : measurements.clusters)
         {
-            auto& cluster = *it;
 
             if (getClusterSize(cluster) <= 2 * parameters.maxFootprintSize)
             {
-                Eigen::Vector2f clusterCenter = cluster.ellipsoid.pose.translation();
+                // TODO: Why is the ellipse translation() here 3D? Can we just use the first 2 entries?
+                Eigen::Vector2f clusterCenter = cluster.ellipsoid.pose.translation().segment(0, 2);
 
                 potentialFootprints.push_back(AdvancedCluster{
                     .center = clusterCenter, .cluster = cluster, .associated = false});
@@ -70,7 +71,6 @@ namespace armarx::navigation::human
             }
         }
 
-
         // associate humans and clusters by their distances
         const auto sortedDistances = getSortedDistances(trackedHumans, potentialFootprints);
 
@@ -97,9 +97,11 @@ namespace armarx::navigation::human
                 auto& footprint1 = posDistance.oldHuman->associatedCluster->cluster;
                 auto& footprint2 = posDistance.newCluster->cluster;
 
-                Eigen::Vector2f centerPos = (footprint1.ellipsoid.pose.translation() +
-                                             footprint2.ellipsoid.pose.translation()) /
-                                            2;
+                // TODO: Why is the ellipse translation() here 3D? Can we just use the first 2 entries?
+                Eigen::Vector2f centerPos =
+                    (footprint1.ellipsoid.pose.translation().segment(0, 2) +
+                     footprint2.ellipsoid.pose.translation().segment(0, 2)) /
+                    2;
 
                 //create pose with orientation from old human
                 core::Pose2D pose = core::Pose2D::Identity();
@@ -146,7 +148,6 @@ namespace armarx::navigation::human
                 unusedClusters.push_back(cluster.cluster);
             }
         }
-
         return unusedClusters;
     }
 
diff --git a/source/armarx/navigation/human/test/human_tracker_test.cpp b/source/armarx/navigation/human/test/human_tracker_test.cpp
index 25e24fa3834136d0ca8244d79ea2003f3e6fe0e3..194498128f23b4f06d3e8e6c23689fa7a1cc5527 100644
--- a/source/armarx/navigation/human/test/human_tracker_test.cpp
+++ b/source/armarx/navigation/human/test/human_tracker_test.cpp
@@ -19,6 +19,8 @@
  *             GNU General Public License
  */
 
+#include <iostream>
+
 #include <ArmarXCore/core/time/DateTime.h>
 #include <ArmarXCore/core/time/Duration.h>
 #include <ArmarXCore/interface/core/BasicVectorTypes.h>
@@ -68,7 +70,6 @@ namespace armarx::navigation::human
         const Eigen::Vector3f movementSpeedMetPerSec(1, 0, 0);
         const int cameraSteps = 10;
 
-
         // CAMERA MEASUREMENTS
 
         const Eigen::Vector3f posDelta =
@@ -106,25 +107,27 @@ namespace armarx::navigation::human
                                                Point(0.002, 0.001)};
 
         const Eigen::Vector3f laserPos = initialPosition + cameraSteps * posDelta;
-        const Eigen::Vector3f leftFootPos = laserPos + Point(0, 0.1);
-        const Eigen::Vector3f rightFootPos = laserPos + Point(0, -0.1);
+        const Eigen::Vector3f leftFootPos = laserPos + Eigen::Vector3f(0, 0.1, 0);
+        const Eigen::Vector3f rightFootPos = laserPos + Eigen::Vector3f(0, -0.1, 0);
 
         std::vector<Point> leftFootPoints = std::vector<Point>();
         std::vector<Point> rightFootPoints = std::vector<Point>();
+        int i = 0;
         for (const Point& offset : relOffsets)
         {
-            leftFootPoints.emplace_back(leftFootPos + offset);
-            rightFootPoints.emplace_back(rightFootPos + offset);
+            leftFootPoints.emplace_back(leftFootPos.segment(0, 2) + offset);
+            rightFootPoints.emplace_back(rightFootPos.segment(0, 2) + offset);
+            i++;
         }
 
         using Pose = Eigen::Isometry3f;
         Pose leftFootPose = Pose::Identity();
         leftFootPose.translation() = leftFootPos;
-        leftFootPose.linear() = Eigen::Rotation2Df(orientation).toRotationMatrix();
+        //        leftFootPose.linear() = Eigen::Rotation2Df(orientation).toRotationMatrix();
 
         Pose rightFootPose = Pose::Identity();
         rightFootPose.translation() = rightFootPos;
-        rightFootPose.linear() = Eigen::Rotation2Df(orientation).toRotationMatrix();
+        //        rightFootPose.linear() = Eigen::Rotation2Df(orientation).toRotationMatrix();
 
         const Ellipsoid leftFootEllipse = {.pose = leftFootPose, .radii = Point(0.05, 0.04)};
         const Ellipsoid rightFootEllipse = {.pose = rightFootPose, .radii = Point(0.05, 0.04)};
@@ -136,13 +139,15 @@ namespace armarx::navigation::human
             std::vector<Cluster>{leftFootCluster, rightFootCluster};
 
         const LaserMm laserMm = {.detectionTime = tLaser, .clusters = clusters};
+
         tracker.update(laserMm);
 
         const std::vector<Human> humans = tracker.getTrackedHumans();
         BOOST_CHECK_EQUAL(humans.size(), 1); // should have detected the one human through laser
         const Human h = humans.at(0);
-        BOOST_CHECK_CLOSE(h.pose.translation().x(), 1.0, 0.05);
-        BOOST_CHECK(h.pose.translation().y() < 0.05);
-        BOOST_CHECK_CLOSE(h.linearVelocity.x(), 1.0, 0.2);
+        BOOST_CHECK(h.pose.translation().x() - laserPos.x() < 0.05);
+        BOOST_CHECK(h.pose.translation().y() - laserPos.y() < 0.05);
+        BOOST_CHECK(h.linearVelocity.x() - movementSpeedMetPerSec.x() < 0.05);
+        BOOST_CHECK(h.linearVelocity.y() - movementSpeedMetPerSec.y() < 0.05);
     }
 } // namespace armarx::navigation::human