8#include <Eigen/Geometry>
33 std::future_status
status = f.wait_for(std::chrono::seconds(0));
34 if (
status == std::future_status::ready)
38 else if (
status == std::future_status::deferred)
57 NavigateTo::init(
const Base::SpecializedInitInput& in)
59 helper.
init(in.parameters.navigatingSkillParams,
62 return ::armarx::skills::Skill::InitResult{
67 NavigateTo::main(
const Base::SpecializedMainInput& in)
69 const Eigen::Isometry3f globalTarget(in.parameters.targetPose);
80 auto future = std::async(std::launch::async,
81 [
this]() {
return helper.
getNavigator()->waitForStop(); });
92 auto se = future.get();
95 ARMARX_INFO <<
"Goal `" << Eigen::Isometry3f(in.parameters.targetPose).translation()
100 if (se.isSafetyStopTriggeredEvent())
104 return ::armarx::skills::Skill::MainResult{
107 if (se.isUserAbortTriggeredEvent())
111 return ::armarx::skills::Skill::MainResult{
114 if (se.isInternalErrorEvent())
117 << se.toInternalErrorEvent().message;
119 return ::armarx::skills::Skill::MainResult{
122 if (se.isGlobalPlanningFailedEvent())
125 << se.toGlobalPlanningFailedEvent().message;
127 return ::armarx::skills::Skill::MainResult{
132 return ::armarx::skills::Skill::MainResult{
137 return ::armarx::skills::Skill::MainResult{
142 NavigateTo::onStopRequested()
144 if (helper.getNavigator().has_value())
147 helper.getNavigator()->stop();
151 armarx::skills::SkillDescription
161 .rootProfileDefaults = defaultParameters.toAron(),
163 .parametersType = Params::ToAronType()};
static Duration Hours(std::int64_t hours)
Constructs a duration in hours.
::armarx::skills::SimpleSpecializedSkill< Params > Base
static armarx::skills::SkillDescription DefaultSkillDescription()
NavigateTo(const NavigatingSkillHelper::Properties &properties, const NavigatingSkillHelper::Services &srv)
std::optional< client::Navigator > & getNavigator()
void init(const arondto::NavigatingSkillParams ¶ms, const std::string &id)
static arondto::NavigatingSkillParams DefaultSkillDescription()
arondto::NavigateToParams ParamType
std::atomic_bool timeoutReached
bool shouldSkillTerminate() const override
Returns whether the skill should terminate as soon as possible.
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
const std::string NavigateTo
bool is_ready(std::future< R > const &f)
A result struct for skill initialization.
A result struct for th main method of a skill.