diff --git a/source/armarx/navigation/human/HumanTracker.cpp b/source/armarx/navigation/human/HumanTracker.cpp
index 506bb660cea7fffe05c605f401373b7173df5d06..1a1fa43f2aa999429faacc55fe6d7494814c0b8e 100644
--- a/source/armarx/navigation/human/HumanTracker.cpp
+++ b/source/armarx/navigation/human/HumanTracker.cpp
@@ -1,5 +1,9 @@
 #include "HumanTracker.h"
 
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
 #include "ArmarXCore/core/exceptions/local/ExpressionException.h"
 
 #include "armarx/navigation/human/types.h"
@@ -331,13 +335,21 @@ namespace armarx::navigation::human
     Eigen::Vector2f
     HumanTracker::getClusterCenter(Cluster cluster)
     {
-        Eigen::Vector2f center;
+        typedef boost::geometry::model::d2::point_xy<double> boost_point;
+        typedef boost::geometry::model::polygon<boost_point> boost_polygon;
+
+        std::vector<boost_point> points;
         for (auto& point : cluster.convexHull)
         {
-            center += point;
+            points.push_back(boost_point(point.x(), point.y()));
         }
-        center /= cluster.points.size();
-        return center;
+        boost_polygon poly;
+        boost::geometry::assign_points(poly, points);
+
+        boost_point p;
+        boost::geometry::centroid(poly, p);
+
+        return Eigen::Vector2f{p.x(), p.y()};
     }
 
     void