diff --git a/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml b/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml index 8397a5d2c65f9d1145b69ab45f0b8e21bba33c20..17247c71fb680682a28cbc47e7c14387fc21861b 100644 --- a/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml +++ b/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml @@ -6,7 +6,6 @@ </AronIncludes> <GenerateTypes> <Object name='armarx::armem::grasping::arondto::KnownGrasp'> - <ObjectChild key='name'> <string /> </ObjectChild> @@ -22,25 +21,30 @@ <ObjectChild key='pose'> <Pose /> </ObjectChild> - </Object> + <!-- A Grasp set is a set of grasps that need to be executed to grasp an object. The order is important! --> <Object name='armarx::armem::grasping::arondto::KnownGraspSet'> - <ObjectChild key='name'> <string /> </ObjectChild> + <ObjectChild key='robot'> + <string /> + </ObjectChild> + + <ObjectChild key='endeffector'> + <string /> + </ObjectChild> + <ObjectChild key='grasps'> - <Dict> + <List> <armarx::armem::grasping::arondto::KnownGrasp /> - </Dict> + </List> </ObjectChild> - </Object> <Object name='armarx::armem::grasping::arondto::KnownGraspInfo'> - <ObjectChild key='correspondingObject'> <armarx::armem::arondto::MemoryID /> </ObjectChild> @@ -54,7 +58,6 @@ <ObjectChild key='xml'> <armarx::arondto::PackagePath /> </ObjectChild> - </Object> </GenerateTypes> diff --git a/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp b/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp index 5b8aaafea2d04db384f510d23788b16d94fe34db..e66a190bdf75e652c6505d91f7aae4fe9ae9649a 100644 --- a/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp +++ b/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp @@ -50,8 +50,8 @@ namespace armarx::armem::grasping::segment arondto::KnownGraspSet retGraspSet; retGraspSet.name = graspSetNode.attribute_value("name"); - //std::string robotType = graspSetNode.attribute_value("RobotType"); - //std::string endEffector = graspSetNode.attribute_value("EndEffector"); + retGraspSet.robot = graspSetNode.attribute_value("RobotType"); + retGraspSet.endeffector = graspSetNode.attribute_value("EndEffector"); for (const auto& graspNode : graspSetNode.nodes()) { @@ -97,7 +97,7 @@ namespace armarx::armem::grasping::segment ARMARX_INFO << "Found grasp '" << retGrasp.name << "' in set '" << retGraspSet.name << "' for obj '" << objectClassName << "' with pose \n" << retGrasp.pose; - retGraspSet.grasps[retGrasp.name] = retGrasp; + retGraspSet.grasps.push_back(retGrasp); } ret.graspSets[retGraspSet.name] = retGraspSet; }