-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Description
What feature or enhancement are you proposing?
Enable the ability to scale the size of an entity dynamically after a scene has been built.
Motivation
In robot learning, scale randomization is a commonly used technique for domain randomization. During sim2real experiments, I found that the ability to randomly scale entities would significantly enhance robustness of learned policies. Currently, I have to pre-spawn all scaled versions of objects and swap them between episodes, which is inefficient, especially for parallel environments. I believe that scale randomization would be high ROI for Genesis.
Potential Benefit
- Greatly increase the scope of domain randomization possible in Genesis.
- Enable training of more robust policies without compromising training speed.
- Reduce overhead and complexity associated with pre-spawning multiple scaled objects
What is the expected outcome of the implementation work?
- Ability to scale an entity using a floating point factor.
- Be able to set this scale after the scene has been built through some method (i.e.,
entity.set_scale(0.7))
Additional information
Without dynamic scaling, training either becomes slower (due to pre-spawning + having to reduce number of parallel environments to support memory constraints) or suffers from reduced domain randomization. If this feature is not planned for Genesis, I could attempt to implement it if given a roadmap outlining the required steps for implementation.