diff --git a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp index 41649ff44412dea5aa6773bdfe96af68abfbcfa5..1cd4c42fe4bd7ea513d1ad3f46ec596ca755d78f 100644 --- a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp +++ b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.cpp @@ -1,61 +1,54 @@ + #include "HumanTracker.h" +#include "ArmarXCore/core/exceptions/local/ExpressionException.h" + namespace armarx::navigation::components::dynamic_scene_provider { -HumanTracker::HumanTracker() -{ + void + HumanTracker::update(const Measurements& measurements) + { + trackedHumans.clear(); -} + for (const armem::human::HumanPose& humanPose : measurements.humanPoses) + { + const armem::human::Keypoint3DIdMap& keypoints = humanPose.keypoint3dMap; + ARMARX_CHECK_NOT_EMPTY(keypoints); -void HumanTracker::update(const Measurements &measurements) -{ - trackedHumans.clear(); + Eigen::Vector3f centerPos = Eigen::Vector3f::Zero(); + for (const auto& [_, v] : keypoints) + { + centerPos += v.positionGlobal; + } + centerPos /= static_cast<float>(keypoints.size()); - foreach (humanPose, measurements.humanPoses) { + core::Pose2D pose = core::Pose2D::Identity(); + pose.translation() = Eigen::Vector2f{centerPos.x(), centerPos.y()}; + pose.linear() = Eigen::Rotation2Df(0 /*angle*/).toRotationMatrix(); - const armem::human::Keypoint3DIdMap& keypoints = humanPose.keypoint3dMap; - ARMARX_CHECK_NOT_EMPTY(keypoints); + const HumanTracker::TrackedHuman newHuman = { + .global_T_human = pose, + .linearVelocity = Eigen::Vector2f::Zero() //TODO more sophisticated guess + }; - 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); } - trackedHumans.push_back(newHuman); } - - this->trackedHumans = HumanTracker::TrackedHuman{ - .global_T_human = core::Pose2D{ - .x = 0; - .y = 0; - }; - .linearVelocity = 0; + const std::vector<HumanTracker::TrackedHuman>& + HumanTracker::getTrackedHumans() const + { + return trackedHumans; } -} - - -std::vector<HumanTracker::TrackedHuman> HumanTracker::getTrackedHumans() const -{ - -} -void HumanTracker::reset() -{ + void + HumanTracker::reset() + { + trackedHumans.clear(); + } -} - -} +} // namespace armarx::navigation::components::dynamic_scene_provider diff --git a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.h b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.h index 770901f16eae8e34ed51caf720d2146a2d7cce2e..556d516b554292ca71181d5198f0f406897f5294 100644 --- a/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.h +++ b/source/armarx/navigation/components/dynamic_scene_provider/HumanTracker.h @@ -2,6 +2,7 @@ #include "VisionX/libraries/armem_human/types.h" + #include "armarx/navigation/core/basic_types.h" namespace armarx::navigation::components::dynamic_scene_provider @@ -27,7 +28,7 @@ namespace armarx::navigation::components::dynamic_scene_provider Eigen::Vector2f linearVelocity; }; - std::vector<TrackedHuman> getTrackedHumans() const; + const std::vector<TrackedHuman>& getTrackedHumans() const; void reset();