RobotGiver.h
Go to the documentation of this file.
1 /**
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Fabian Reister ( fabian dot reister at kit dot edu )
17  * @date 2022
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
27 
29 {
30 
31  /**
32  * @brief The robot is acting as the giver
33  *
34  * The giver will first look at the receiver's face during reach. At a certain distance to the receiver, it will then look at the receiver's hand.
35  * Once the object is exchanged, the giver will then look at the receivers face.
36  */
38  {
39  public:
41 
42  struct Params
43  {
44 
45  //! the distance below which the hand targets will be generated.
47 
50 
51  float handPriorityScaling = 1000;
52 
53  float headPriority = 100;
54 
55  float minHandoverDistance = 500;
56  };
57 
58  std::vector<gaze_targets::GazeTarget>
59  updateTargets(const armem::human::HumanPose& human) override;
60 
61  protected:
62  private:
63  std::vector<gaze_targets::GazeTarget>
64  updateTargetsPreHandover(const armem::human::HumanPose& human) const;
65 
66  std::vector<gaze_targets::GazeTarget>
67  updateTargetsAfterHandover(const armem::human::HumanPose& human) const;
68 
69  const Params params;
70 
71  Phase phase_;
72  };
73 } // namespace armarx::view_selection::target_provider::handover
armarx::view_selection::target_provider::handover
This file is part of ArmarX.
Definition: HandoverTargetProvider.cpp:3
armarx::view_selection::target_provider::handover::RobotGiver::updateTargets
std::vector< gaze_targets::GazeTarget > updateTargets(const armem::human::HumanPose &human) override
Definition: RobotGiver.cpp:37
armarx::view_selection::target_provider::handover::HandoverTargetProvider
Definition: HandoverTargetProvider.h:34
armarx::view_selection::target_provider::handover::HandoverTargetProvider::HandoverTargetProvider
HandoverTargetProvider(const std::string &humanTrackingId, const VirtualRobot::RobotPtr &robot)
Definition: HandoverTargetProvider.cpp:5
armarx::view_selection::target_provider::handover::RobotGiver::Params::minHandReachoutDistance
float minHandReachoutDistance
Definition: RobotGiver.h:48
armarx::armem::human::HumanPose
Definition: types.h:30
armarx::view_selection::target_provider::handover::RobotGiver::Params::maxHandoverInitializationDistance
float maxHandoverInitializationDistance
the distance below which the hand targets will be generated.
Definition: RobotGiver.h:46
armarx::view_selection::target_provider::handover::RobotGiver::Params::headPriority
float headPriority
Definition: RobotGiver.h:53
HandoverTargetProvider.h
armarx::view_selection::target_provider::handover::RobotGiver::Params
Definition: RobotGiver.h:42
armarx::view_selection::target_provider::handover::RobotGiver
The robot is acting as the giver.
Definition: RobotGiver.h:37
GazeTarget.h
armarx::view_selection::target_provider::handover::RobotGiver::Params::maxHandReachoutDistance
float maxHandReachoutDistance
Definition: RobotGiver.h:49
armarx::view_selection::target_provider::handover::RobotGiver::Params::minHandoverDistance
float minHandoverDistance
Definition: RobotGiver.h:55
armarx::view_selection::target_provider::handover::Phase
Phase
Definition: types.h:27
armarx::view_selection::target_provider::handover::RobotGiver::Params::handPriorityScaling
float handPriorityScaling
Definition: RobotGiver.h:51
types.h