From fc32519af5832acd3853aea8a8af8e757eda526a Mon Sep 17 00:00:00 2001
From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu>
Date: Tue, 8 Feb 2022 11:54:48 +0100
Subject: [PATCH] updates to known grasps (need to be ordered)

---
 .../aron/KnownGraspCandidate.xml              | 19 +++++++++++--------
 .../server/KnownGraspProviderSegment.cpp      |  6 +++---
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml b/source/RobotAPI/libraries/armem_grasping/aron/KnownGraspCandidate.xml
index 8397a5d2c..17247c71f 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 5b8aaafea..e66a190bd 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;
             }
-- 
GitLab