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
Problem
RoboCasaEnvexposes anfpsconfig field, but it never reaches the simulator.RoboCasaEnv._ensure_envbuildsRoboCasaGymEnv(env_name=..., camera_widths=..., camera_heights=..., split=..., obj_registries=...)with nocontrol_freq, andRoboCasaEnv.gym_kwargsdoesn't carry one. So changingenv.fpssilently has no effect on the sim step rate (it only feeds the hardcodedrender_fpsmetadata used for video encoding).By contrast, LIBERO threads it through:
LiberoEnv.gym_kwargsreturns"control_freq": self.fps, which reachesOffScreenRenderEnv(control_freq=...), and there's a dedicated test pinning the wiring (tests/envs/test_libero_control_freq.py).The default
fps=20happens to match RoboCasa's defaultcontrol_freq, so nothing is broken today — but the field is misleading and inconsistent with LIBERO.Suggested approach
control_freq=self.fpsfromRoboCasaEnv.gym_kwargsintoRoboCasaGymEnv/create_env(extra kwargs are forwarded to the underlying kitchen env viarobosuite.make).tests/envs/test_libero_control_freq.py(configfps->gym_kwargs["control_freq"]-> sim).References
src/opentau/envs/robocasa.py:305(_ensure_env),gym_kwargsinsrc/opentau/envs/configs.pysrc/opentau/envs/libero.pycontrol_freq+tests/envs/test_libero_control_freq.py