From 3d7a8c8ba941c1ad04b25fba50ab258233ad6b58 Mon Sep 17 00:00:00 2001 From: Michel Breyer Date: Thu, 4 Nov 2021 20:08:16 +0100 Subject: [PATCH] Catch rare qhull errors --- src/active_grasp/controller.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/active_grasp/controller.py b/src/active_grasp/controller.py index 29f4f08..eaf0ffe 100644 --- a/src/active_grasp/controller.py +++ b/src/active_grasp/controller.py @@ -161,12 +161,16 @@ class GraspController: tip = grasp.pose.apply([0.0, 0.0, 0.05]) for label in range(labels.max() + 1): segment = cloud.select_by_index(np.flatnonzero(labels == label)) - hull = compute_convex_hull(segment) - name = f"object_{label}" - self.add_collision_mesh(name, hull) - dist = trimesh.proximity.closest_point_naive(hull, np.array([tip]))[1] - if dist < min_dist: - self.target_co_name, min_dist = name, dist + try: + hull = compute_convex_hull(segment) + name = f"object_{label}" + self.add_collision_mesh(name, hull) + dist = trimesh.proximity.closest_point_naive(hull, np.array([tip]))[1] + if dist < min_dist: + self.target_co_name, min_dist = name, dist + except: + # Qhull fails in some edge cases + pass # Add collision object for the support self.add_collision_mesh("support", compute_convex_hull(support_cloud))