# What is GenesisLab? GenesisLab is a comprehensive framework for robot reinforcement learning (RL) built on top of [Genesis](https://github.com/Genesis-Embodied-AI/Genesis), the world's fastest physics simulation platform. ## Motivation Robot learning requires: - **Fast simulation** for efficient training - **Modular design** for easy experimentation - **Rich observations** for complex behaviors - **Flexible rewards** for diverse tasks - **Domain randomization** for sim-to-real transfer GenesisLab addresses these needs by providing a unified framework that: - Leverages Genesis's ultra-fast parallel simulation - Implements a clean manager-based architecture - Supports diverse sensor modalities - Enables easy task and robot configuration - Integrates seamlessly with popular RL libraries ## What Can You Do with GenesisLab? ### 1. Train Legged Robots Train quadrupeds and humanoids to walk, run, and navigate complex terrains: ```python import gymnasium as gym import genesislab.envs # Train a quadruped on rough terrain env = gym.make("GenesisLab-Go2-Rough-v0", num_envs=4096) ``` **Supported Robots**: - Unitree Go2, A1, B2 - Unitree H1, G1 (humanoids) - ANYmal-D - Custom URDF/MJCF robots ### 2. Develop Custom Tasks Create your own tasks with minimal code: ```python from genesislab.tasks import LocomotionTask from genesislab.managers import ObservationManager, RewardManager class MyCustomTask(LocomotionTask): def setup_scene(self): # Define your scene pass def setup_managers(self): self.observation_manager = ObservationManager(...) self.reward_manager = RewardManager(...) ``` ### 3. Experiment with Sensors Use various sensor modalities: - **Proprioception**: Joint positions, velocities, torques - **IMU**: Angular velocity, linear acceleration, orientation - **Vision**: RGB, depth, segmentation cameras - **LiDAR**: Point cloud sensing - **Contact sensors**: Force and contact detection ### 4. Test Sim-to-Real Transfer Apply domain randomization for robust policies: - Dynamics randomization (mass, friction, motor strength) - Observation noise injection - Action delays and noise - Terrain randomization ## How is GenesisLab Different? ### vs Isaac Lab **Similarities**: - Both provide RL frameworks for robotics - Manager-based architecture - Gymnasium integration **Differences**: - GenesisLab uses Genesis (faster simulation) - Simpler configuration system - Focus on locomotion and manipulation tasks - Lightweight and easy to extend ### vs Legged Gym / RSL RL **Similarities**: - Focus on legged robot locomotion - Support for terrain randomization **Differences**: - GenesisLab supports multiple robot types (not just legged) - More modular manager system - Built-in Gymnasium compatibility - Native support for vision and LiDAR ### vs MuJoCo / IsaacGym GenesisLab is a **framework** built on top of Genesis physics engine, not a physics engine itself: - Provides task definitions and RL utilities - Manager-based abstractions - Pre-configured robot models and tasks - Easier to get started with robot learning ## Architecture at a Glance ``` ┌─────────────────────────────────────────────────────────┐ │ Gymnasium Env │ │ ┌───────────────────────────────────────────────────┐ │ │ │ LabScene │ │ │ │ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │ │ │ │ │ Observer │ │ Action │ │ Reward │ │ │ │ │ │ Manager │ │ Manager │ │ Manager │ │ │ │ │ └──────────┘ └──────────┘ └───────────────┘ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │ │ │ │ │ Command │ │ Event │ │ Termination │ │ │ │ │ │ Manager │ │ Manager │ │ Manager │ │ │ │ │ └──────────┘ └──────────┘ └───────────────┘ │ │ │ └───────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ Genesis Scene │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────────┐ │ │ │ Robot │ │ Sensor │ │Terrain │ │ Objects │ │ │ └────────┘ └────────┘ └────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ## Next Steps - Learn about [GenesisLab's architecture](architecture.md) - Understand [core concepts](concepts.md) - Read the [design philosophy](design_philosophy.md) - Check out the [getting started guide](../getting_started/index.md)