Defines the primary data structures by which agents interact with their environment.
An abstract class defining a, goal directed, 'task.' Agents interact
with their environment through a task by taking a
step after which they
receive new observations, rewards, and (potentially) other useful
A Task is a helpful generalization of the OpenAI gym's
and allows for multiple tasks (e.g. point and object navigation) to
be defined on a single environment (e.g. AI2-THOR).
env: The environment.
sensor_suite: Collection of sensors formed from the
sensorsargument in the initializer.
task_info: Dictionary of (k, v) pairs defining task goals and other task information.
max_steps: The maximum number of steps an agent can take an in the task before it is considered failed.
observation_space: The observation space returned on each step from the sensors.
| @property | @abstractmethod | action_space() -> gym.Space
Task's action space.
The action space for the task.
| @abstractmethod | render(mode: str = "rgb", *args, **kwargs) -> np.ndarray
Render the current task state.
Rendered task state can come in any supported modes.
- mode : The mode in which to render. For example, you might have a 'rgb' mode that renders the agent's egocentric viewpoint or a 'dev' mode returning additional information.
- args : Extra args.
- kwargs : Extra kwargs.
An numpy array corresponding to the requested render.
| step(action: Union[int, Sequence[int]]) -> RLStepResult
Take an action in the environment (one per agent).
Takes the action in the environment corresponding to
self.class_action_names()[action] for each action if it's a Sequence and returns
observations (& rewards and any additional information)
corresponding to the agent's new state. Note that this function
should not be overwritten without care (instead
- action : The action to take.
RLStepResult object encoding the new observations, reward, and
(possibly) additional information.
| reached_max_steps() -> bool
Has the agent reached the maximum number of steps.
| @abstractmethod | reached_terminal_state() -> bool
Has the agent reached a terminal state (excluding reaching the maximum number of steps).
| is_done() -> bool
Did the agent reach a terminal state or performed the maximum number of steps.
| num_steps_taken() -> int
Number of steps taken by the agent in the task so far.
| @classmethod | @abstractmethod | class_action_names(cls, **kwargs) -> Tuple[str, ...]
A tuple of action names.
- kwargs : Keyword arguments.
Tuple of (ordered) action names so that taking action
task.step(i) corresponds to taking action task.class_action_names()[i].
| action_names() -> Tuple[str, ...]
Action names of the Task instance.
This method should be overwritten if
requires key word arguments to determine the number of actions.
| @property | total_actions() -> int
Total number of actions available to an agent in this Task.
| index_to_action(index: int) -> str
Returns the action name correspond to
| @abstractmethod | close() -> None
Closes the environment and any other files opened by the Task (if applicable).
| metrics() -> Dict[str, Any]
Computes metrics related to the task after the task's completion.
By default this function is automatically called during training and the reported metrics logged to tensorboard.
A dictionary where every key is a string (the metric's name) and the value is the value of the metric.
| query_expert(**kwargs) -> Tuple[Any, bool]
Query the expert policy for this task.
A tuple (x, y) where x is the expert action (or policy) and y is False \ if the expert could not determine the optimal action (otherwise True). Here y \ is used for masking. Even when y is False, x should still lie in the space of \ possible values (e.g. if x is the expert policy then x should be the correct length, \ sum to 1, and have non-negative entries).
| @property | cumulative_reward() -> float
Mean per-agent total cumulative in the task so far.
Mean per-agent cumulative reward as a float.
Abstract class defining a how new tasks are sampled.
| @property | @abstractmethod | length() -> Union[int, float]
Number of total tasks remaining that can be sampled. Can be float('inf').
| @property | @abstractmethod | total_unique() -> Optional[Union[int, float]]
Total unique tasks.
Total number of unique tasks that can be sampled. Can be float('inf') or, if the total unique is not known, None.
| @property | @abstractmethod | last_sampled_task() -> Optional[Task]
Get the most recently sampled Task.
The most recently sampled Task.
| @abstractmethod | next_task(force_advance_scene: bool = False) -> Optional[Task]
Get the next task in the sampler's stream.
- force_advance_scene : Used to (if applicable) force the task sampler to use a new scene for the next task. This is useful if, during training, you would like to train with one scene for some number of steps and then explicitly control when you begin training with the next scene.
The next Task in the sampler's stream if a next task exists. Otherwise None.
| @abstractmethod | close() -> None
Closes any open environments or streams.
Should be run when done sampling.
| @property | @abstractmethod | all_observation_spaces_equal() -> bool
Checks if all observation spaces of tasks that can be sampled are equal.
This will almost always simply return
True. A case in which it should
False includes, for example, a setting where you design
TaskSampler that can generate different types of tasks, i.e.
point navigation tasks and object navigation tasks. In this case, these
different tasks may output different types of observations.
True if all Tasks that can be sampled by this sampler have the same observation space. Otherwise False.
| @abstractmethod | reset() -> None
Resets task sampler to its original state (except for any seed).
| @abstractmethod | set_seed(seed: int) -> None
Sets new RNG seed.
- seed : New seed.