From 327826de90e50a81f1e9b846fbaa692df762f0e9 Mon Sep 17 00:00:00 2001 From: Michel Breyer Date: Wed, 18 Aug 2021 12:31:28 +0200 Subject: [PATCH] Minimum gain and max duration stopping criteria --- active_grasp/nbv.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/active_grasp/nbv.py b/active_grasp/nbv.py index 6df9430..bd9fd3f 100644 --- a/active_grasp/nbv.py +++ b/active_grasp/nbv.py @@ -9,6 +9,8 @@ from vgn.utils import look_at, spherical_to_cartesian class NextBestView(BasePolicy): def __init__(self, rate, filter_grasps): super().__init__(rate, filter_grasps) + self.max_viewpoints = 20 + self.min_gain = 10.0 def activate(self, bbox): super().activate(bbox) @@ -29,9 +31,10 @@ class NextBestView(BasePolicy): self.visualizer.views(self.base_frame, self.intrinsic, views, utilities) # Determine next-best-view - nbv = views[np.argmax(utilities)] + i = np.argmax(utilities) + nbv, g = views[i], gains[i] - if self.check_done(): + if self.check_done(g): self.best_grasp = self.compute_best_grasp() self.done = True return @@ -114,5 +117,5 @@ class NextBestView(BasePolicy): def compute_cost(self, view): return 1.0 - def check_done(self): - return len(self.viewpoints) == 4 + def check_done(self, gain): + return len(self.viewpoints) > self.max_viewpoints or gain < self.min_gain