11 #include <armarx/view_selection/skills/aron/LookAtArticulatedObjectFrame.aron.generated.h>
23 defaults.objectToSearch.dataset =
"Kitchen-interior";
24 defaults.objectToSearch.className =
"fridge";
25 defaults.objectToSearch.instanceName =
"0";
27 defaults.locationsToScan = {
"FridgeDoorShelf_node"};
29 defaults.durationPerLocationSeconds = 10;
31 defaults.objectToSearchFor.dataset =
"Kitchen-interior";
32 defaults.objectToSearchFor.className =
"bio-milk";
33 defaults.objectToSearchFor.instanceName =
"0";
35 defaults.matchInstanceName =
false;
37 return ::armarx::skills::SkillDescription{
39 .description =
"Scan locations of an articulated object looking for another object.",
40 .rootProfileDefaults = defaults.toAron(),
42 .parametersType = ParamType::ToAronType(),
47 lookAtArticulatedObjectFrame{
63 properties(properties)
75 ARMARX_INFO <<
"Scanning " << in.parameters.objectToSearch.dataset <<
"/"
76 << in.parameters.objectToSearch.className <<
"/"
77 << in.parameters.objectToSearch.instanceName <<
". Looking for "
79 for (
const auto& location : in.parameters.locationsToScan)
85 armarx::view_selection::skills::arondto::LookAtArticulatedObjectFrameParams;
89 Parameters subSkillParams = subSkill.getRootProfileParameters();
91 subSkillParams.object = in.parameters.objectToSearch;
92 subSkillParams.node = location;
93 subSkillParams.objectPoseProvider = std::nullopt;
94 subSkillParams.durationSeconds = in.parameters.durationPerLocationSeconds;
95 subSkillParams.priority = 100;
97 const auto viewSelectionResult =
callSubskill(subSkill, subSkillParams.toAron());
98 if (not viewSelectionResult.has_value() or not viewSelectionResult->hasBeenSucceeded())
115 const auto object = [&]() -> std::optional<objpose::ObjectPose>
117 if (in.parameters.matchInstanceName)
124 for (
const auto& [_, obj] :
128 if (obj.timestamp > skillStartTime)
136 if (
object.has_value() &&
object->timestamp > skillStartTime)
139 ARMARX_INFO <<
"Object " <<
object->objectID <<
" found at "
140 <<
object->timestamp;
143 metronome.waitForNextTick();