Skip to content

RoboCasa: env.fps is inert — control_freq not wired to the sim #380

@shuheng-liu

Description

@shuheng-liu

Problem

RoboCasaEnv exposes an fps config field, but it never reaches the simulator. RoboCasaEnv._ensure_env builds RoboCasaGymEnv(env_name=..., camera_widths=..., camera_heights=..., split=..., obj_registries=...) with no control_freq, and RoboCasaEnv.gym_kwargs doesn't carry one. So changing env.fps silently has no effect on the sim step rate (it only feeds the hardcoded render_fps metadata used for video encoding).

By contrast, LIBERO threads it through: LiberoEnv.gym_kwargs returns "control_freq": self.fps, which reaches OffScreenRenderEnv(control_freq=...), and there's a dedicated test pinning the wiring (tests/envs/test_libero_control_freq.py).

The default fps=20 happens to match RoboCasa's default control_freq, so nothing is broken today — but the field is misleading and inconsistent with LIBERO.

Suggested approach

  • Forward control_freq=self.fps from RoboCasaEnv.gym_kwargs into RoboCasaGymEnv / create_env (extra kwargs are forwarded to the underlying kitchen env via robosuite.make).
  • Add a wiring unit test mirroring tests/envs/test_libero_control_freq.py (config fps -> gym_kwargs["control_freq"] -> sim).

References

  • src/opentau/envs/robocasa.py:305 (_ensure_env), gym_kwargs in src/opentau/envs/configs.py
  • cf. src/opentau/envs/libero.py control_freq + tests/envs/test_libero_control_freq.py

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions