Spaces:
Sleeping
Sleeping
Download baselines/random_agent.py from chicelli/atrium-sim-webviz: direct link, hf CLI and curl.
- Browser
- Download file 1.94 kB
-
https://huggingface.co/spaces/chicelli/atrium-sim-webviz/resolve/main/baselines/random_agent.py
- Command line
-
hf download hf://spaces/chicelli/atrium-sim-webviz/baselines/random_agent.py
-
curl -L -o random_agent.py https://huggingface.co/spaces/chicelli/atrium-sim-webviz/resolve/main/baselines/random_agent.py
1.94 kB
| """Watch a random agent drop bricks - the M1 demo. | |
| uv run python -m baselines.random_agent --render human --episodes 3 | |
| Headless? Use --gif out.gif instead (or SDL_VIDEODRIVER=dummy). | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import gymnasium as gym | |
| import atrium_sim # noqa: F401 (registers the env) | |
| from baselines.policy import RandomPolicy | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument("--render", choices=["human", "rgb_array", "none"], default="human") | |
| parser.add_argument("--episodes", type=int, default=3) | |
| parser.add_argument("--seed", type=int, default=1) | |
| parser.add_argument("--suite", default="train") | |
| parser.add_argument("--gif", default=None, help="record the first episode to this GIF path") | |
| args = parser.parse_args() | |
| render_mode = None if args.render == "none" else args.render | |
| env = gym.make("atrium_sim/BrickLayer-v0", render_mode=render_mode) | |
| env.unwrapped.env_cfg = type(env.unwrapped.env_cfg)(suite=args.suite) | |
| policy = RandomPolicy(env.action_space, args.seed) | |
| for ep in range(args.episodes): | |
| if args.gif and ep == 0: | |
| from atrium_sim.render.recorder import record_episode | |
| metrics = record_episode(env, policy, args.gif, seed=args.seed) | |
| else: | |
| obs, info = env.reset(seed=args.seed + ep) | |
| done = False | |
| while not done: | |
| obs, reward, terminated, truncated, info = env.step(policy.act(obs)) | |
| done = terminated or truncated | |
| metrics = info["metrics"] | |
| print( | |
| f"episode {ep}: return={metrics['episode_return']:+.2f} " | |
| f"in-tol={metrics['frac_in_tol']:.0%} filled={metrics['frac_filled']:.0%} " | |
| f"waste={metrics['waste_count']:.0f} placements={metrics['placements']:.0f}" | |
| ) | |
| env.close() | |
| if __name__ == "__main__": | |
| main() | |