26 #include <VirtualRobot/Robot.h>
43 std::vector<gaze_targets::GazeTarget>
46 std::vector<gaze_targets::GazeTarget>
targets;
61 std::vector<gaze_targets::GazeTarget>
75 std::vector<gaze_targets::GazeTarget> gazeTargets;
77 if (human.
keypoints.count(headKpName.value()) == 0)
80 <<
"` not available!";
93 gazeTargets.push_back(headTarget);
98 const float distanceHumanRobot =
112 const auto handPriorityFromDistance =
113 [&](
const float handBodyDistance,
const float handRobotDistance)
117 const float normalizedHandBodyPriority =
125 const float normalizedHandRobotPriority =
std::clamp(
132 normalizedHandRobotPriority;
135 const auto handsPriorityFromDistance = [&](
const float handsRobotDistance)
144 if (human.
keypoints.count(leftWristKpName.value()) > 0)
147 human.
keypoints.at(leftWristKpName.value());
149 const float distanceLeft =
152 const float handRobotDistance = leftWristKp.
positionRobot->toEigen().head<2>().
norm();
154 const float priority = handPriorityFromDistance(distanceLeft, handRobotDistance);
163 gazeTargets.push_back(handTarget);
167 if (human.
keypoints.count(rightWristKpName.value()) > 0)
170 human.
keypoints.at(rightWristKpName.value());
172 const float distanceRight =
176 const float handRobotDistance = rightWristKp.
positionRobot->toEigen().head<2>().
norm();
178 const float priority = handPriorityFromDistance(distanceRight, handRobotDistance);
188 gazeTargets.push_back(handTarget);
195 human.
keypoints.at(leftWristKpName.value());
197 human.
keypoints.at(rightWristKpName.value());
199 const float alpha = 0.5;
201 const Eigen::Vector3f centerHandsPosition =
206 const float centerHandsRobotDistance =
207 (centerHandsPosition -
robot_->getGlobalPosition()).head<2>().norm();
209 const float priority = handsPriorityFromDistance(centerHandsRobotDistance);
222 gazeTargets.push_back(handsTarget);
229 for (
const auto&
target : gazeTargets)
238 std::vector<gaze_targets::GazeTarget>
250 std::vector<gaze_targets::GazeTarget> gazeTargets;
252 if (human.
keypoints.count(headKpName.value()) == 0)
255 <<
"` not available!";
268 gazeTargets.push_back(headTarget);