RotateTowardsLocation.cpp
Go to the documentation of this file.
2
7
12
13#include <armarx/navigation/skills/aron/RotateTowards.aron.generated.h>
15
17{
18
19 armarx::skills::SkillDescription
21 {
22 ParamType defaultParameters;
23
24 defaultParameters.navigatingSkillParams = NavigatingSkillHelper::DefaultSkillDescription();
25 defaultParameters.navigatingSkillParams.globalPlanningAlgorithm =
26 arondto::GlobalPlanningAlgorithm::Point2Point;
27
30 .description = "Rotate the robot to face a specified location.",
31 .rootProfileDefaults = defaultParameters.toAron(),
33 .parametersType = Params::ToAronType(),
34 };
35 }
36
41
43 const Services& services) :
44 Base(GetSkillDescription()), services_(services), properties_(properties)
45 {
46 }
47
49 RotateTowardsLocation::main(const Base::SpecializedMainInput& in)
50 {
52
53 const auto locations = services_.locationReader.resolveLocation(
54 in.parameters.location, in.parameters.locationProvider);
55
56 ARMARX_CHECK_NOT_EMPTY(locations) << "Location " << QUOTED(in.parameters.location) << " not available!";
57 if (locations.size() > 1)
58 {
59 ARMARX_WARNING << "Multiple locations matched the requested location name '"
60 << in.parameters.location << "'. Using the first one.";
61 }
62 const auto positionIce = locations.front().framedPose.position;
63 const auto position = armarx::fromIce(positionIce);
64
66
67 // Rotate towards position
68 {
69 using ParamsT = arondto::RotateTowardsParams;
70
71 auto update = callSubskill<ParamsT>(properties_.subSkillIDs.rotateTowards,
72 [&](ParamsT& parameters) noexcept
73 {
74 parameters.navigatingSkillParams =
75 in.parameters.navigatingSkillParams;
76 parameters.targetPositionGlobal = position;
77 });
79 {
80 return MakeFailedResult();
81 }
82 }
83
85
86 return MakeSucceededResult();
87 }
88
89} // namespace armarx::navigation::skills
#define ARMARX_CHECK_NOT_EMPTY(c)
#define QUOTED(x)
static Duration Hours(std::int64_t hours)
Constructs a duration in hours.
Definition Duration.cpp:120
std::vector< core::Location > resolveLocation(const std::string &locationName, const std::optional< std::string > &provider)
Definition Reader.cpp:210
static arondto::NavigatingSkillParams DefaultSkillDescription()
::armarx::skills::SkillDescription GetSkillDescription()
::armarx::skills::SimpleSpecializedSkill< Params > Base
RotateTowardsLocation(const Properties &properties, const Services &services)
std::optional< TerminatedSkillStatusUpdate > callSubskill(const SkillID &skillId)
Call a subskill with the given ID and its default parameters.
Definition Skill.cpp:119
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:413
armarx::aron::data::DictPtr parameters
Definition Skill.h:369
void throwIfSkillShouldTerminate(const std::string &abortedMessage="") const
Definition Skill.cpp:389
static MainResult MakeFailedResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:422
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
Definition Logging.h:193
const armarx::skills::SkillID RotateTowardsLocation
Definition skill_ids.cpp:86
bool skillExecutionFailed(const std::optional< armarx::skills::TerminatedSkillStatusUpdate > &update)
This file offers overloads of toIce() and fromIce() functions for STL container types.
void fromIce(const std::map< IceKeyT, IceValueT > &iceMap, boost::container::flat_map< CppKeyT, CppValueT > &cppMap)
This file is part of ArmarX.
This file is part of ArmarX.
armarx::navigation::memory::client::graph::Reader & locationReader
A result struct for th main method of a skill.
Definition Skill.h:62
#define ARMARX_TRACE
Definition trace.h:77