mae_envs/modules/world.py (25 lines of code) (raw):
import logging
from mujoco_worldgen.transforms import set_geom_attr_transform
from mae_envs.modules import EnvModule
class FloorAttributes(EnvModule):
'''
For each (key, value) in kwargs, sets the floor geom attribute key to value.
'''
def __init__(self, **kwargs):
self.kwargs = kwargs
def build_world_step(self, env, floor, floor_size):
for k, v in self.kwargs.items():
floor.add_transform(set_geom_attr_transform(k, v))
return True
class WorldConstants(EnvModule):
'''
For each (key, value) in kwargs, sets sim.model.opt[key] = value
'''
def __init__(self, **kwargs):
self.kwargs = kwargs
def modify_sim_step(self, env, sim):
for k, v in self.kwargs.items():
if not hasattr(sim.model.opt, k):
logging.warning(f"sim.model.opt does not have attribute {k}")
else:
getattr(sim.model.opt, k)[:] = v