@@ -59,7 +59,7 @@ class Grid:
5959 applied_constraints : list [AppliedConstraint ] = []
6060 # Note - this is separate from reservation_matrix because multiple robots can have the same
6161 # constraints at the same (x, y, t) tuple
62- constraint_points : np .ndarray
62+ constraint_reservations : np .ndarray
6363
6464 # Number of time steps in the simulation
6565 time_limit : int
@@ -80,7 +80,7 @@ def __init__(
8080 self .grid_size = grid_size
8181 self .reservation_matrix = np .zeros ((grid_size [0 ], grid_size [1 ], self .time_limit ))
8282
83- self .constraint_points = empty_3d_array_of_sets (grid_size [0 ], grid_size [1 ], self .time_limit )
83+ self .constraint_reservations = empty_3d_array_of_sets (grid_size [0 ], grid_size [1 ], self .time_limit )
8484
8585 if num_obstacles > self .grid_size [0 ] * self .grid_size [1 ]:
8686 raise Exception ("Number of obstacles is greater than grid size!" )
@@ -253,7 +253,7 @@ def generate_hallway_obstacles(self) -> list[list[Position]]:
253253
254254 return obstacle_paths
255255
256- def generate_temporary_obstacle (self , hallway_length : int = 3 ) -> list [list [Position ]]:
256+ def generate_temporary_obstacle (self ) -> list [list [Position ]]:
257257 """
258258 Generates a temporary obstacle at (10, 10) that disappears at t=30
259259 """
@@ -263,21 +263,27 @@ def generate_temporary_obstacle(self, hallway_length: int = 3) -> list[list[Posi
263263
264264 return [obstacle_path ]
265265
266- def apply_constraint_points (self , constraints : list [AppliedConstraint ], verbose = False ):
266+ def apply_constraint_reservations (self , constraints : list [AppliedConstraint ], verbose = False ):
267+ """
268+ Add new constraints and reserve them in the constraint_reservations map
269+ """
267270 self .applied_constraints .extend (constraints )
268271 for constraint in constraints :
269272 if verbose :
270273 print (f"Applying { constraint = } " )
271- if constraint not in self .constraint_points [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]:
272- self .constraint_points [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ].add (constraint )
274+ if constraint not in self .constraint_reservations [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]:
275+ self .constraint_reservations [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ].add (constraint )
273276
274277 if verbose :
275- print (f"\t Existing constraints: { self .constraint_points [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]} " )
278+ print (f"\t Existing constraints: { self .constraint_reservations [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]} " )
276279
277- def clear_constraint_points (self ):
280+ def clear_constraint_reservations (self ):
281+ """
282+ Clear all applied constraints and their associated reservations
283+ """
278284 for constraint in self .applied_constraints :
279- if constraint in self .constraint_points [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]:
280- self .constraint_points [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ].remove (constraint )
285+ if constraint in self .constraint_reservations [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ]:
286+ self .constraint_reservations [constraint .constraint .position .x , constraint .constraint .position .y , constraint .constraint .time ].remove (constraint )
281287 self .applied_constraints .clear ()
282288
283289 """
@@ -295,7 +301,7 @@ def valid_position(self, position: Position, t: int, agent_idx: int) -> bool:
295301 if not self .inside_grid_bounds (position ):
296302 return False
297303
298- constraints = self .constraint_points [position .x , position .y , t ]
304+ constraints = self .constraint_reservations [position .x , position .y , t ]
299305 for constraint in constraints :
300306 if constraint .constrained_agent == agent_idx :
301307 return False
@@ -366,7 +372,7 @@ def get_safe_intervals_at_cell(self, cell: Position, agent_idx: int) -> list[Int
366372 # Find where the array is zero
367373 zero_mask = (vals == 0 )
368374
369- for constraint_set in self .constraint_points [cell .x , cell .y ]:
375+ for constraint_set in self .constraint_reservations [cell .x , cell .y ]:
370376 for constraint in constraint_set :
371377 if constraint .constrained_agent != agent_idx :
372378 continue
0 commit comments