45 workingMemoryProxy = getProxy<WorkingMemoryInterfacePrx>(
"WorkingMemory");
46 objectInstancesProxy = workingMemoryProxy->getObjectInstancesSegment();
52 return "OnTablePredicateProvider";
58 return PredicateInfo{
"ontable", 1};
64 PredicateInstanceList returnPIList;
78 std::vector<TableDef> tables;
80 TableDef{
"table1", Eigen::Vector3f(-600, 600, 900), Eigen::Vector3f(600, 1500, 1400)});
82 TableDef{
"table2", Eigen::Vector3f(-600, -1500, 900), Eigen::Vector3f(600, -600, 1400)});
86 EntityIdList objectIds = objectInstancesProxy->getAllEntityIds();
88 for (std::string
id : objectIds)
90 EntityRefBasePtr entityBase = objectInstancesProxy->getEntityRefById(
id);
91 const ObjectInstancePtr object = ObjectInstancePtr::dynamicCast(entityBase->getEntity());
95 ARMARX_WARNING <<
"Something went wrong when getting the object with id " <<
id
96 <<
" from working memory";
100 for (TableDef table : tables)
103 auto pos =
object->getPosition();
106 if (pos->x > table.min[0] && pos->y > table.min[1] && pos->z > table.min[2] &&
107 pos->x < table.max[0] && pos->y < table.max[1] && pos->z < table.max[2])