def weight_regions(oracle, body_name, region_names): # TODO - take into account the size of obstacles region_weights = {region_name: oracle.regions[region_name].area() for region_name in region_names} for obj in oracle.objects: if oracle.is_active(obj) and obj != body_name: for region in region_names: if oracle.region_contains(region, obj, oracle.get_pose(obj)): region_weights[region] -= aabb_area(oracle.get_aabb(obj)) return region_weights
def weight_regions( oracle, body_name, region_names): # TODO - take into account the size of obstacles region_weights = { region_name: oracle.regions[region_name].area() for region_name in region_names } for obj in oracle.objects: if oracle.is_active(obj) and obj != body_name: for region in region_names: if oracle.region_contains(region, obj, oracle.get_pose(obj)): region_weights[region] -= aabb_area(oracle.get_aabb(obj)) return region_weights
def fn(self, body_name, region_name): oracle = self.oracle poses = [] region = oracle.get_region(region_name) for _ in range(int(self.poses_per_ratio*region.area()/aabb_area(oracle.get_aabb(body_name)) + 1)): theta = uniform(0, 2*PI) quat = quat_from_z_rot(theta) aabb = oracle.get_aabb(body_name, trans_from_quat(quat)) cspace = region.cspace(aabb) if cspace is None: continue # NOTE - does not add more placements ((minx, maxx), (miny, maxy)) = cspace x = uniform(minx, maxx) y = uniform(miny, maxy) z = region.z + aabb.extents()[2] + REGION_PLACEMENT_Z_OFFSET point = np.array([x, y, z]) - aabb.pos() poses.append(Pose(pose_from_quat_point(quat, point))) return poses
def fn(self, body_name, region_name): oracle = self.oracle poses = [] region = oracle.get_region(region_name) for _ in range( int(self.poses_per_ratio * region.area() / aabb_area(oracle.get_aabb(body_name)) + 1)): theta = uniform(0, 2 * PI) quat = quat_from_z_rot(theta) aabb = oracle.get_aabb(body_name, trans_from_quat(quat)) cspace = region.cspace(aabb) if cspace is None: continue # NOTE - does not add more placements ((minx, maxx), (miny, maxy)) = cspace x = uniform(minx, maxx) y = uniform(miny, maxy) z = region.z + aabb.extents()[2] + REGION_PLACEMENT_Z_OFFSET point = np.array([x, y, z]) - aabb.pos() poses.append(Pose(pose_from_quat_point(quat, point))) return poses