Overview#
This section provides an overview of GenesisLab’s design, philosophy, and architecture.
- What is GenesisLab?
- Architecture
- Core Concepts
- Design Philosophy
- 1. Modularity Through Managers
- 2. Composition Over Inheritance
- 3. Configuration-Driven Design
- 4. Performance First
- 5. Sensible Defaults
- 6. Extensibility
- 7. Compatibility
- 8. Clarity Over Cleverness
- 9. Fail Fast and Loud
- 10. Documentation as Code
- Design Trade-offs
- Inspirations
- Anti-Patterns to Avoid
- Contributing
- Next Steps
- Frequently Asked Questions
Quick Summary#
GenesisLab is a unified framework for robot learning built on Genesis physics simulation. It provides:
Manager-based architecture for modular, extensible task definitions
Multi-robot support with pre-configured robot platforms
Gymnasium API integration for seamless RL library compatibility
Advanced sensor systems with fake and native Genesis sensors
Terrain generation with procedural generation and curriculum support
Domain randomization through the event system
Key Concepts#
Understanding these core concepts will help you work effectively with GenesisLab:
LabScene: The central simulation manager that coordinates all other managers
Managers: Specialized components handling observations, actions, rewards, etc.
Terms: Individual computation units within managers (e.g., observation terms, reward terms)
ConfigClass: Configuration system using
@configclassdecoratorsScene Builder/Controller/Querier: Patterns for interacting with the Genesis scene
Philosophy#
GenesisLab is designed with several key principles:
Modularity: Clean separation between different aspects of the learning problem
Extensibility: Easy to add custom observations, rewards, and behaviors
Performance: Leveraging Genesis’s speed for fast parallel training
Simplicity: Configuration-driven design with sensible defaults
Compatibility: Works with standard RL libraries and follows Gymnasium conventions