LookAtHumanHand.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 2023
18
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19
* GNU General Public License
20
*/
21
22
#pragma once
23
24
#include <
ArmarXCore/core/ManagedIceObject.h
>
25
#include <
ArmarXCore/core/time/Duration.h
>
26
27
#include <
RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h
>
// for hand
28
#include <
RobotAPI/libraries/skills/provider/SimpleSkill.h
>
29
#include <
RobotAPI/libraries/skills/provider/SimpleSpecializedSkill.h
>
30
31
#include <
armarx/view_selection/client/ViewSelection.h
>
32
#include <armarx/view_selection/skills/aron/LookAtHumanHand.aron.generated.h>
33
#include <
armarx/view_selection/skills/constants.h
>
34
#include <
armarx/view_selection/target_provider/handover/RobotReceiver.h
>
35
36
#include <
VisionX/libraries/armem_human/client/HumanPoseReader.h
>
37
38
namespace
armarx::view_selection::skills
39
{
40
class
LookAtHumanHand
:
41
virtual
public
armarx::skills::SimpleSpecializedSkill
<arondto::LookAtHumanHandParams>
42
{
43
public
:
44
using
Params
= arondto::LookAtHumanHandParams;
45
using
Base
=
::armarx::skills::SimpleSpecializedSkill<Params>
;
46
47
struct
Services
48
{
49
armem::client::MemoryNameSystem
&
memoryNameSystem
;
50
client::ViewSelection
&
viewSelectionClient
;
51
const
armarx::armem::MemoryID
humanPoseMemoryID
;
52
const
VirtualRobot::RobotPtr
&
robot
;
53
};
54
55
LookAtHumanHand
(
const
Services
& srv);
// FIXME add params
56
57
private
:
58
::armarx::skills::Skill::InitResult
init
(
const
Base::SpecializedInitInput
& in)
override
;
59
60
::armarx::skills::Skill::MainResult
main
(
const
Base::SpecializedMainInput
& in)
override
;
61
62
void
update();
63
std::optional<armem::human::HumanPose> getLatestPoseOfRequestedHuman();
64
65
void
onStopRequested()
override
;
66
67
public
:
68
static
armarx::skills::SkillDescription
69
DefaultSkillDescription
()
70
{
71
ParamType
defaultParameters;
72
// TODO(): set parameter defaults
73
74
return
armarx::skills::SkillDescription
{
75
.
skillId
= {.
skillName
=
constants::skill_names::LookAtHumanHand
},
76
.description =
"Look at the face of a human specified by their tracking ID."
,
77
.rootProfileDefaults = defaultParameters.toAron(),
78
.timeout =
armarx::core::time::Duration::Seconds
(10),
79
.parametersType = Params::ToAronType()};
80
}
81
82
protected
:
83
private
:
84
std::optional<Services> srv_;
85
86
std::string humanTrackingId;
87
armarx::armem::robot_state::RobotReader::Hand
hand;
88
std::unique_ptr<target_provider::handover::RobotReceiver> handoverTargetProvider;
89
90
struct
91
{
92
double
updatePeriodMs
= 1000. / 30.;
93
} properties;
94
};
95
96
}
// namespace armarx::view_selection::skills
armarx::view_selection::skills
This file is part of ArmarX.
Definition:
constants.cpp:25
armarx::view_selection::skills::constants::skill_names::LookAtHumanHand
const std::string LookAtHumanHand
Definition:
constants.cpp:39
armarx::skills::SimpleSpecializedSkill< arondto::LookAtHumanHandParams >::init
Skill::InitResult init() final
Definition:
SimpleSpecializedSkill.h:62
armarx::view_selection::skills::LookAtHumanHand::Services::robot
const VirtualRobot::RobotPtr & robot
Definition:
LookAtHumanHand.h:52
armarx::skills::SimpleSpecializedSkill< arondto::LookAtHumanHandParams >::ParamType
arondto::LookAtHumanHandParams ParamType
Definition:
SimpleSpecializedSkill.h:14
armarx::view_selection::skills::LookAtHumanHand::updatePeriodMs
double updatePeriodMs
Definition:
LookAtHumanHand.h:92
armarx::skills::SkillID::skillName
std::string skillName
Definition:
SkillID.h:41
armarx::skills::SkillDescription
Definition:
SkillDescription.h:17
armarx::armem::robot_state::RobotReader::Hand
Hand
Definition:
RobotReader.h:91
Duration.h
armarx::view_selection::client::ViewSelection
Definition:
ViewSelection.h:37
SimpleSpecializedSkill.h
armarx::skills::SimpleSpecializedSkill::SpecializedMainInput
Definition:
SimpleSpecializedSkill.h:24
armarx::core::time::Duration::Seconds
static Duration Seconds(std::int64_t seconds)
Constructs a duration in seconds.
Definition:
Duration.cpp:72
armarx::armem::MemoryID
A memory ID.
Definition:
MemoryID.h:47
ManagedIceObject.h
RobotReceiver.h
ViewSelection.h
armarx::skills::SkillDescription::skillId
SkillID skillId
Definition:
SkillDescription.h:19
armarx::skills::SimpleSpecializedSkill
Definition:
SimpleSpecializedSkill.h:10
armarx::view_selection::skills::LookAtHumanHand::Services::humanPoseMemoryID
const armarx::armem::MemoryID humanPoseMemoryID
Definition:
LookAtHumanHand.h:51
armarx::view_selection::skills::LookAtHumanHand::LookAtHumanHand
LookAtHumanHand(const Services &srv)
Definition:
LookAtHumanHand.cpp:10
RobotReader.h
constants.h
armarx::skills::Skill::MainResult
A result struct for th main method of a skill.
Definition:
Skill.h:39
SimpleSkill.h
HumanPoseReader.h
armarx::view_selection::skills::LookAtHumanHand::Params
arondto::LookAtHumanHandParams Params
Definition:
LookAtHumanHand.h:44
armarx::skills::SimpleSpecializedSkill::SpecializedInitInput
Definition:
SimpleSpecializedSkill.h:18
armarx::skills::SimpleSpecializedSkill< arondto::LookAtHumanHandParams >::main
Skill::MainResult main() final
Definition:
SimpleSpecializedSkill.h:71
armarx::view_selection::skills::LookAtHumanHand::Services::viewSelectionClient
client::ViewSelection & viewSelectionClient
Definition:
LookAtHumanHand.h:50
armarx::view_selection::skills::LookAtHumanHand::Services::memoryNameSystem
armem::client::MemoryNameSystem & memoryNameSystem
Definition:
LookAtHumanHand.h:49
armarx::view_selection::skills::LookAtHumanHand::DefaultSkillDescription
static armarx::skills::SkillDescription DefaultSkillDescription()
Definition:
LookAtHumanHand.h:69
armarx::skills::Skill::InitResult
A result struct for skill initialization.
Definition:
Skill.h:27
armarx::view_selection::skills::LookAtHumanHand::Services
Definition:
LookAtHumanHand.h:47
armarx::armem::client::MemoryNameSystem
The memory name system (MNS) client.
Definition:
MemoryNameSystem.h:73
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition:
Bus.h:19
armarx::view_selection::skills::LookAtHumanHand
Definition:
LookAtHumanHand.h:40
armarx
view_selection
skills
LookAtHumanHand.h
Generated by
1.8.17