From 13dfaa47d084794be89ba9751a455bfb5c0adab5 Mon Sep 17 00:00:00 2001 From: Michel Breyer Date: Fri, 8 Oct 2021 14:14:15 +0200 Subject: [PATCH] Recompute candidate views every policy update --- src/active_grasp/nbv.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/active_grasp/nbv.py b/src/active_grasp/nbv.py index 232f77d..183dc8c 100644 --- a/src/active_grasp/nbv.py +++ b/src/active_grasp/nbv.py @@ -62,18 +62,6 @@ class NextBestView(MultiViewPolicy): def activate(self, bbox, view_sphere): super().activate(bbox, view_sphere) - with Timer("view_generation"): - self.generate_view_candidates() - self.info["view_candidates_count"] = len(self.view_candidates) - - def generate_view_candidates(self): - thetas = np.deg2rad([15, 30, 45]) - phis = np.arange(8) * np.deg2rad(45) - self.view_candidates = [] - for theta, phi in itertools.product(thetas, phis): - view = self.view_sphere.get_view(theta, phi) - if self.is_feasible(view): - self.view_candidates.append(view) def update(self, img, x, q): if len(self.views) > self.max_views or self.best_grasp_prediction_is_stable(): @@ -81,7 +69,8 @@ class NextBestView(MultiViewPolicy): else: with Timer("state_update"): self.integrate(img, x, q) - views = self.view_candidates + with Timer("view_generation"): + views = self.generate_views() with Timer("ig_computation"): gains = [self.ig_fn(v, 10) for v in views] with Timer("cost_computation"): @@ -109,6 +98,16 @@ class NextBestView(MultiViewPolicy): return True return False + def generate_views(self): + thetas = np.deg2rad([15, 30, 45]) + phis = np.arange(6) * np.deg2rad(60) + view_candidates = [] + for theta, phi in itertools.product(thetas, phis): + view = self.view_sphere.get_view(theta, phi) + if self.is_feasible(view): + view_candidates.append(view) + return view_candidates + def ig_fn(self, view, downsample): tsdf_grid, voxel_size = self.tsdf.get_grid(), self.tsdf.voxel_size tsdf_grid = -1.0 + 2.0 * tsdf_grid # Open3D maps tsdf to [0,1]