diff --git a/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.cpp b/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.cpp
index 66f0da7fc5b668c322127ab8ef5eb1219f01d851..f52a657939b9ded2a6af72870f00a8bac18bec63 100644
--- a/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.cpp
+++ b/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.cpp
@@ -210,6 +210,8 @@ GraspEvaluationPoseUncertainty::PoseEvalResults GraspEvaluationPoseUncertainty::
     PoseEvalResults res;
     res.avgQuality = 0.0f;
     res.forceClosureRate = 0.0f;
+    res.avgQualityCol = 0.0f;
+    res.forceClosureRateCol = 0.0f;
     res.numPosesTested = 0;
     res.numValidPoses = 0;
     res.numColPoses = 0;
@@ -251,9 +253,11 @@ GraspEvaluationPoseUncertainty::PoseEvalResults GraspEvaluationPoseUncertainty::
         {
             res.numValidPoses++;
             res.avgQuality += results.at(i).quality;
+            res.avgQualityCol += results.at(i).quality;
             if (results.at(i).forceClosure)
             {
                 res.forceClosureRate += 1.0f;
+                res.forceClosureRateCol += 1.0f;
                 res.numForceClosurePoses++;
             }
         }
@@ -264,6 +268,11 @@ GraspEvaluationPoseUncertainty::PoseEvalResults GraspEvaluationPoseUncertainty::
         res.forceClosureRate /= float(res.numValidPoses);
         res.avgQuality /= float(res.numValidPoses);
     }
+    if (res.numPosesTested>0)
+    {
+        res.forceClosureRateCol /= float(res.numPosesTested);
+        res.avgQualityCol /= float(res.numPosesTested);
+    }
 
     // restore setup
     eef->getRobot()->setGlobalPose(eefRobotPoseInit);
diff --git a/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.h b/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.h
index dad5a35483bc06b73c01ff565603783d18dac832..caf12839afd46921b216d2dabb6a18e589b24625 100644
--- a/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.h
+++ b/GraspPlanning/GraspQuality/GraspEvaluationPoseUncertainty.h
@@ -95,6 +95,8 @@ public:
         int numForceClosurePoses = 0.0;        // poses that have force closure
         float forceClosureRate = 0.0; // without collision poses
         float avgQuality = 0.0;       // without collision poses
+        float forceClosureRateCol = 0.0; // with collision poses
+        float avgQualityCol = 0.0;       // with collision poses
 
         void print()
         {
@@ -105,8 +107,10 @@ public:
             if (numPosesTested>0)
                 colPercent = float(numColPoses) / float(numPosesTested) * 100.0f;
             VR_INFO << "Num Poses initially in collision:" << numColPoses << " == " << colPercent << "%" << endl;
-            VR_INFO << "Avg Quality (valid poses):" << avgQuality << endl;
-            VR_INFO << "FC rate (valid poses):" << forceClosureRate * 100.0f << "%" << endl;
+            VR_INFO << "Avg Quality (only col freeposes):" << avgQuality << endl;
+            VR_INFO << "FC rate (only col free poses):" << forceClosureRate * 100.0f << "%" << endl;
+            VR_INFO << "Avg Quality (all poses):" << avgQualityCol << endl;
+            VR_INFO << "FC rate (all poses):" << forceClosureRateCol * 100.0f << "%" << endl;
         }
     };
 
diff --git a/GraspPlanning/examples/GraspPlanner/GraspPlannerWindow.cpp b/GraspPlanning/examples/GraspPlanner/GraspPlannerWindow.cpp
index 6aa37e225dc88e3728588ef1b2a9940f70793141..dc136a70dfc1ef38d0601a224521d31104679dcf 100644
--- a/GraspPlanning/examples/GraspPlanner/GraspPlannerWindow.cpp
+++ b/GraspPlanning/examples/GraspPlanner/GraspPlannerWindow.cpp
@@ -551,7 +551,7 @@ void GraspPlannerWindow::planObjectBatch()
     boost::filesystem::path resultsCSVPath("genericgraspplanningresults-" + robot->getName() + ".csv");
     resultsCSVPath = boost::filesystem::absolute(resultsCSVPath);
     std::ofstream fs(resultsCSVPath.string().c_str(), std::ofstream::out);
-    fs << "object," << planner->getEvaluation().GetCSVHeader() << ",RobustnessAvgQuality,RobustnessAvgForceClosureRate";
+    fs << "object," << planner->getEvaluation().GetCSVHeader() << ",RobustnessAvgQualityNoCol,RobustnessAvgForceClosureRateNoCol,RobustnessAvgQualityCol,RobustnessAvgForceClosureRateCol";
     QProgressDialog progress("Calculating grasps...", "Abort", 0, paths.size(), this);
     progress.setWindowModality(Qt::WindowModal);
     progress.show();
@@ -577,11 +577,13 @@ void GraspPlannerWindow::planObjectBatch()
             objectFile = path.toStdString();
             loadObject();
             {
-                planner->setRetreatOnLowContacts(false);
+                //planner->setRetreatOnLowContacts(false);
                 plan();
 //                save(boost::filesystem::path(path.toStdString()).replace_extension(".moxml").string());
                 float avgRate = 0;
                 float avgForceClosureRate = 0;
+                float avgRateCol = 0;
+                float avgForceClosureRateCol = 0;
                 size_t graspSum = 0;
                 std::vector<double> histogramFC(bins,0.0);
                 std::vector<double> histogramFCWithCollisions(bins,0.0);
@@ -599,16 +601,20 @@ void GraspPlannerWindow::planObjectBatch()
                     histogramFCWithCollisions.at(std::min<int>((int)((double)(result.numForceClosurePoses)/result.numPosesTested * bins), bins-1))++;
                     avgRate += result.avgQuality;
                     avgForceClosureRate += result.forceClosureRate;
+                    avgRateCol += result.avgQualityCol;
+                    avgForceClosureRateCol += result.forceClosureRateCol;
                     graspSum++;
 //                    if(graspSum > 10)
 //                        break;
                 }
-                if (planner->getPlannedGrasps().size()>0)
+                if (graspSum>0)
                 {
                     avgRate /= planner->getPlannedGrasps().size();
                     avgForceClosureRate /= planner->getPlannedGrasps().size();
+                    avgRateCol /= planner->getPlannedGrasps().size();
+                    avgForceClosureRateCol /= planner->getPlannedGrasps().size();
                 }
-                fs << object->getName() << "," << planner->getEvaluation().toCSVString() << "," << avgRate << "," << avgForceClosureRate;
+                fs << object->getName() << "," << planner->getEvaluation().toCSVString() << "," << avgRate << "," << avgForceClosureRate << "," << avgRateCol << "," << avgForceClosureRateCol;
                 int i = 0;
                 for(auto bin : histogramFC)
                 {
diff --git a/VirtualRobot/Robot.cpp b/VirtualRobot/Robot.cpp
index b7a8367317b9b4f79de0910964a71ad6f86febdf..c06e31d97acbbd280d2cf5e8e1954a842a27d5eb 100644
--- a/VirtualRobot/Robot.cpp
+++ b/VirtualRobot/Robot.cpp
@@ -535,7 +535,7 @@ namespace VirtualRobot
         return res;
     }
 
-    std::vector<std::string> VirtualRobot::Robot::Robot::getRobotNodeSetNames() const
+    std::vector<std::string> Robot::getRobotNodeSetNames() const
     {
         std::vector<std::string> res;
         const auto sets = getRobotNodeSets();