Skip to content

Grid

src.python_motion_planning.utils.environment.env.Grid

Bases: Env

Class for discrete 2-d grid map.

Source code in src\python_motion_planning\utils\environment\env.py
Python
class Grid(Env):
    """
    Class for discrete 2-d grid map.
    """
    def __init__(self, x_range: int, y_range: int) -> None:
        super().__init__(x_range, y_range)
        # allowed motions
        self.motions = [Node((-1, 0), None, 1, None), Node((-1, 1),  None, sqrt(2), None),
                        Node((0, 1),  None, 1, None), Node((1, 1),   None, sqrt(2), None),
                        Node((1, 0),  None, 1, None), Node((1, -1),  None, sqrt(2), None),
                        Node((0, -1), None, 1, None), Node((-1, -1), None, sqrt(2), None)]
        # obstacles
        self.obstacles = None
        self.obstacles_tree = None
        self.init()

    def init(self) -> None:
        """
        Initialize grid map.
        """
        x, y = self.x_range, self.y_range
        obstacles = set()

        # boundary of environment
        for i in range(x):
            obstacles.add((i, 0))
            obstacles.add((i, y - 1))
        for i in range(y):
            obstacles.add((0, i))
            obstacles.add((x - 1, i))

        # user-defined obstacles        
        for i in range(10, 21):
            obstacles.add((i, 15))
        for i in range(15):
            obstacles.add((20, i))
        for i in range(15, 30):
            obstacles.add((30, i))
        for i in range(16):
            obstacles.add((40, i))

        self.obstacles = obstacles
        self.obstacles_tree = cKDTree(np.array(list(obstacles)))

    def update(self, obstacles):
        self.obstacles = obstacles 
        self.obstacles_tree = cKDTree(np.array(list(obstacles)))

init()

Initialize grid map.

Source code in src\python_motion_planning\utils\environment\env.py
Python
def init(self) -> None:
    """
    Initialize grid map.
    """
    x, y = self.x_range, self.y_range
    obstacles = set()

    # boundary of environment
    for i in range(x):
        obstacles.add((i, 0))
        obstacles.add((i, y - 1))
    for i in range(y):
        obstacles.add((0, i))
        obstacles.add((x - 1, i))

    # user-defined obstacles        
    for i in range(10, 21):
        obstacles.add((i, 15))
    for i in range(15):
        obstacles.add((20, i))
    for i in range(15, 30):
        obstacles.add((30, i))
    for i in range(16):
        obstacles.add((40, i))

    self.obstacles = obstacles
    self.obstacles_tree = cKDTree(np.array(list(obstacles)))