5#include <VirtualRobot/XML/RobotIO.h>
18#include <armarx/view_selection/skills/aron/LookAt.aron.generated.h>
30 LookAtArticulatedObjectFrame::init(
const Base::SpecializedInitInput& in)
32 return ::armarx::skills::Skill::InitResult{
37 LookAtArticulatedObjectFrame::main(
const Base::SpecializedMainInput& in)
41 Clock::Now(), in.parameters.objectPoseProvider);
50 fromAron(in.parameters.object, objectID);
52 const std::string objectName = objectID.dataset() +
"/" + objectID.className();
53 ARMARX_INFO <<
"Searching for object name `" << objectName <<
"`";
55 const auto isMatchingDescription = [&objectID](
const auto&
description) ->
bool
56 {
return objectID.equalClass(ObjectID(
description.name)); };
58 const auto descriptionIt =
59 std::find_if(descriptions.begin(), descriptions.end(), isMatchingDescription);
61 <<
"Description " << objectID <<
" not available";
64 std::optional<armarx::armem::articulated_object::ArticulatedObject> objectOpt =
65 srv_.articulatedObjectReader->get(*descriptionIt,
67 objectID.instanceName(),
68 in.parameters.objectPoseProvider);
77 <<
"' from XML file '" << xmlFilename <<
"'";
79 auto object = VirtualRobot::RobotIO::loadRobot(
80 xmlFilename, VirtualRobot::RobotIO::RobotDescription::eStructure);
85 object->setName(objectID.str());
89 const auto node =
object->getRobotNode(in.parameters.node);
92 const Eigen::Vector3f globalPose = node->getGlobalPosition();
95 const armarx::view_selection::gaze_targets::arondto::GazeTarget gazeTarget = [&]()
97 armarx::view_selection::gaze_targets::arondto::GazeTarget gazeTarget;
99 "LookAtArticulatedObjectFrame_" + objectID.str() +
":" + in.parameters.node;
101 gazeTarget.position.header.agent =
"";
104 gazeTarget.position.position = globalPose;
106 gazeTarget.duration =
109 gazeTarget.priority.attentionType =
110 gaze_targets::arondto::AttentionType::ImplEnum::TaskDriven;
111 gazeTarget.priority.priority = in.parameters.priority;
114 gazeTarget.keepInQueue =
false;
121 using Parameters = armarx::view_selection::skills::arondto::LookAtParams;
123 ::armarx::skills::SkillID skillId{
125 ::armarx::skills::ProviderID{.providerName = armarx::view_selection::skills::
126 constants::ViewSelectionSkillProviderName},
130 [&](Parameters& subSkillParams)
132 subSkillParams.target = gazeTarget;
145 LookAtArticulatedObjectFrame::onStopRequested()
149 ::armarx::skills::SkillDescription
153 defaults.priority = 100;
154 defaults.objectPoseProvider = std::nullopt;
159 .rootProfileDefaults = defaults.toAron(),
161 .parametersType = Params::ToAronType(),
162 .resultType = Result::ToAronType(),
static DateTime Now()
Current time on the virtual clock.
static Duration Minutes(std::int64_t minutes)
Constructs a duration in minutes.
static std::filesystem::path toSystemPath(const data::PackagePath &pp)
static Duration SecondsDouble(double seconds)
Constructs a duration in seconds.
std::optional< TerminatedSkillStatusUpdate > callSubskill(const SkillID &skillId)
Call a subskill with the given ID and its default parameters.
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
SkillDescription description
static MainResult MakeFailedResult(aron::data::DictPtr data=nullptr)
arondto::LookAtArticulatedObjectFrameParams Params
::armarx::skills::SimpleSpecializedSkill< Params > Base
static armarx::skills::SkillDescription DefaultSkillDescription()
LookAtArticulatedObjectFrame(const Services &srv)
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#define ARMARX_INFO
The normal logging level.
std::string const GlobalFrame
Variable of the global coordinate system.
armarx::armem::robot_state::Robot ArticulatedObject
bool update(mongocxx::collection &coll, const nlohmann::json &query, const nlohmann::json &update)
aron::data::DictPtr Parameters
bool skillExecutionFailed(const std::optional< armarx::skills::TerminatedSkillStatusUpdate > &update)
const armarx::skills::SkillID LookAtArticulatedObjectFrame
This file is part of ArmarX.
void fromAron(const arondto::PackagePath &dto, PackageFileLocation &bo)
description::RobotDescription description
A result struct for skill initialization.
A result struct for th main method of a skill.
std::experimental::observer_ptr<::armarx::armem::articulated_object::Reader > articulatedObjectReader