What problem does it solve?
It solves the problem of adding new EmbodiChain environment logic—such as observations, rewards, events, actions, datasets, or randomizations—without breaking the Functor/FunctorCfg architecture.
Core Features & Use Cases
- Functor type selection: Choose the correct manager (observations, rewards, events, actions, datasets, or randomization) based on what you’re adding.
- Correct function vs class scaffolding: Use function-style for stateless functors and class-style for stateful functors following the required call signatures.
- Integration steps that match EmbodiChain conventions: Place the functor in the right module, update
__all__, and create a test using mocks for deterministic validation.
- Use cases: Adding a new observation term for sensor outputs, implementing a reward shaping component for RL training, introducing an event handler to react to environment state, or creating a randomization that perturbs physics/visual/spatial/geometry for Sim2Real.
Quick Start
Ask to add a new reward functor named "my_reward" to RewardManager, registered via RewardCfg using function-style, and include a test plan for validating the expected (num_envs,) output shape.