Timsty's picture
Add files using upload-large-folder tool
700dd75 verified
Raw
History Blame Contribute Delete
1.5 kB
from abc import ABC, abstractmethod
from typing import Optional
class Policy(ABC):
"""Base class for implementing control policies in the Gr00t framework.
A Policy defines how an agent should behave in an environment by mapping observations
to actions. This abstract base class provides the interface that all concrete policy
implementations must follow.
"""
def set_goal(self, goal: dict[str, any]):
"""Set the command from the planner that the policy should follow.
Args:
goal: Dictionary containing high-level commands or goals from the planner
"""
pass
def set_observation(self, observation: dict[str, any]):
"""Update the policy's current observation of the environment.
Args:
observation: Dictionary containing the current state/observation of the environment
"""
self.observation = observation
@abstractmethod
def get_action(self, time: Optional[float] = None) -> dict[str, any]:
"""Compute and return the next action at the specified time, based on current observation
and planner command.
Args:
time: Optional "monotonic time" for time-dependent policies
Returns:
Dictionary containing the action to be executed
"""
def close(self):
"""Clean up any resources used by the policy."""
pass
def reset(self):
"""Reset the policy to its initial state."""
pass