跳转至

架构

本页是 GeneLab 的概念地图,重点说明与 Genesis 仿真器的边界:哪些功能是 对 Genesis 的薄封装,哪些在 GeneLab 中实现,哪些是对外部 RL 库的封装。关于 保持各层边界的导入期规则,见契约

一句话心智模型:

GeneLab ≈ Genesis(物理后端)+「Isaac Lab API 的轻量重实现」+ 三个 RL 库 的适配器。

分层概览

flowchart TD
    CLI[genelab CLI] --> Registry[注册表 + 扩展]
    CLI --> Runner[RL 运行器]
    Registry --> Tasks[任务 / 环境 / 机器人]
    Runner --> Backends[rsl_rl / skrl / sb3]
    Runner --> VecEnv[VecEnv 适配器]
    VecEnv --> Env[ManagerBasedRlEnv]
    Tasks --> Env
    Env --> Managers[MDP 管理器]
    Env --> Scene[InteractiveScene]
    Managers --> MDP[mdp 术语库]
    Scene --> Entities[articulation / 刚体 / 传感器]
    Scene --> Genesis[(Genesis 仿真)]
    Entities --> Genesis
    MDP --> Entities

哪些包装 Genesis,哪些在 GeneLab 中实现

抽象接缝落在 InteractiveScene / Articulation / Sensor.build()——其下由 Genesis 负责物理、渲染、地形高程图与内置 PD;其上是在 GeneLab 中实现、与仿真器 无关的代码(它们本身仍是 Isaac Lab API 的重实现与对各类库的封装)。

flowchart TB
    subgraph NAT["在 GeneLab 中实现"]
        direction LR
        Managers[managers]
        MDPlib[mdp 术语库]
        EnvLoop[envs step 循环]
        Derived[派生传感器]
        ActLaws[作动器控制律]
        Infra[registry · cli · asset_zoo]
    end
    subgraph WRAP["包装 Genesis"]
        direction LR
        Scene2[scene + entity]
        ImplAct[内置 PD]
        Terr[terrains]
        Rec[recording]
        HwSens[硬件传感器]
        Kb[键盘桥接]
    end
    subgraph EXT["包装外部 RL 库"]
        direction LR
        RL[rl runner + backends]
        Libs[(rsl_rl · skrl · sb3)]
    end
    GenesisSim[(Genesis 仿真)]

    NAT --> WRAP --> GenesisSim
    EXT --> EnvLoop
    RL --> Libs

    classDef nat fill:#e8f5e9,stroke:#2e7d32;
    classDef wrap fill:#e3f2fd,stroke:#1565c0;
    classDef ext fill:#fff3e0,stroke:#e65100;
    classDef sim fill:#eceff1,stroke:#37474f;
    class Managers,MDPlib,EnvLoop,Derived,ActLaws,Infra nat;
    class Scene2,ImplAct,Terr,Rec,HwSens,Kb wrap;
    class RL,Libs ext;
    class GenesisSim sim;

下表列出每一类中的具体模块。

三类划分

类别 模块 含义
包装 Genesis sceneentityactuator.implicit_pd / mujoco_styleterrainsrecording、硬件类传感器(cameramesh_ray_casttactile_*proximitytemperaturekinematic_contact)、bridges.keyboard gs.* 调用的薄封装
在 GeneLab 中实现 managersmdp(含 DR / commands / curricula / metrics)、envs step 循环、registry / extensionsasset_zoocliutils.math、作动器控制律(ideal_pddc_motormlp_residual)、派生传感器(contactself_contactray_castterrain_heightbody_velocityangular_momentumframe_transformer) 逻辑在 GeneLab 中,不调用 gs.*
包装外部 RL 库 rl(runnerbackendsvecenvseval_taskbenchmarkexporter) 面向 rsl_rl / skrl / sb3 / gymnasium——不依赖 Genesis

派生传感器具有双重性:它们读取 Genesis 原始数据(接触力、连杆状态),但 在 GeneLab 里计算输出(气时状态机、轨道角动量、机体系速度)。

地形

复杂地形由 Genesis 生成,而非 GeneLab。 gs.morphs.Terrain 合成程序化高程图 (楼梯、斜坡、起伏、障碍、踏石、分形——Genesis 沿用 IsaacGym 的地形算法)。 GeneLab 只在其外围做编排:

  • terrains/generator.py——决定哪种子地形放哪个网格单元,以及难度课程 (按行从易到难);生成 gs.morphs.Terrain 的 kwargs。
  • terrains/importer.py——把布局交给 Genesis,并回读高程图供传感器采样。
  • terrains/sub_terrain.py——各子地形的参数配置。

也就是说:GeneLab 拥有布局 + 课程;Genesis 拥有高程图合成

延伸阅读