Source code for pomdp_py.problems.tag.models.components.grid_map

from pomdp_py.problems.tag.domain.action import *
from pomdp_py.problems.tag.models.transition_model import TagTransitionModel
from pomdp_py.problems.multi_object_search.env.env import interpret


[docs] class GridMap: def __init__(self, width, length, obstacle_poses): self.width = width self.length = length # set of obstacle poses self.obstacle_poses = obstacle_poses
[docs] def valid_pose(self, position): if not ( position[0] >= 0 and position[0] < self.width and position[1] >= 0 and position[1] < self.length ): return False if position in self.obstacle_poses: return False return True
[docs] def valid_motions(self, position, all_motions=MOTION_ACTIONS): valid_motions = set({}) for motion_action in all_motions: if TagTransitionModel.if_move_by(self, position, motion_action) == position: continue valid_motions.add(motion_action) return valid_motions
[docs] @classmethod def from_str(cls, worldstr, **kwargs): dim, _, objects, obstacles, _ = interpret(worldstr) obstacle_poses = set({}) for objid in objects: if objid in obstacles: obstacle_poses.add(objects[objid].pose) grid_map = GridMap(dim[0], dim[1], obstacle_poses) return grid_map
[docs] def free_cells(self): cells = set( { (x, y) for x in range(self.width) for y in range(self.length) if (x, y) not in self.obstacle_poses } ) return cells