From c9bb2065192b0609ae2a28ca8df5d772443fafac Mon Sep 17 00:00:00 2001 From: Marius Baden <marius.baden@student.kit.edu> Date: Wed, 3 Aug 2022 18:32:26 +0200 Subject: [PATCH] Create basic tracked humans from OpenPose --- .../dynamic_scene_provider/HumanTracker.cpp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp index 94ee8e37..41649ff4 100644 --- a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp +++ b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp @@ -11,6 +11,31 @@ HumanTracker::HumanTracker() void HumanTracker::update(const Measurements &measurements) { + trackedHumans.clear(); + + foreach (humanPose, measurements.humanPoses) { + + const armem::human::Keypoint3DIdMap& keypoints = humanPose.keypoint3dMap; + ARMARX_CHECK_NOT_EMPTY(keypoints); + + const Eigen::Vector3f centerPos = Eigen::Vector3f::Zero(); + for (const auto& [_, v] : keypoints) + { + centerPos += v.positionGlobal; + } + centerPos /= static_cast<float>(keypoints.size()); + + const HumanTracker::TrackedHuman newHuman = HumanTracker::TrackedHuman{ + .global_T_human = core::Pose2D{ + .x = centerPos.x; + .y = centerPos.y; + };; + .linearVelocity = 0; //TODO more sophisticated guess + } + trackedHumans.push_back(newHuman); + } + + this->trackedHumans = HumanTracker::TrackedHuman{ .global_T_human = core::Pose2D{ .x = 0; -- GitLab