点击下方卡片,关注【Xbotics具身智能实验室】公众号
更多具身干货,欢迎加入(戳我)
👉具身智能学习资料汇总:https://github.com/Xbotics-Embodied-AI-club/Xbotics-Embodied-Guide
👉具身智能求职/实习信息汇总:https://github.com/Xbotics-Embodied-AI-club/Xbotics-Embodied-AI-Job
你想要的这里都有~~
为什么需要这样一个项目?
做机器人强化学习时,常见两种极端:一端是重型仿真平台,功能全但上手慢、改一处要摸清整座大厦;另一端是自己手搓脚本,灵活却难以复用、向量化与调试都得从零来。我们更希望有一个最小可用、又方便迭代的试验台:基于现代物理引擎、接口统一、代码量可控,能快速验证「观测—奖励—动作」管线,而不是在框架里迷路。
GenesisLab 就是在这样的诉求下诞生的:它建立在 Genesis 物理引擎 之上,提供一套轻量的 RL 任务框架,专注「建环境、跑向量化仿真、调观测/奖励/物理」这几件事,适合作为快速实验与教学的 playground。
GenesisLab 是什么?
❝GenesisLab 是构建在 Genesis 物理引擎之上的轻量级强化学习任务套件,为机器人 RL 提供最小化且可用的实验环境。
用人话拆开说就是:
-
底层:依赖 Genesis 物理引擎( genesis-world),用统一的 Python 绑定做场景构建与步进。 -
中间层:提供 Manager 式环境封装(观测、动作、奖励、终止、命令、课程等),和 IsaacLab 风格一致,便于扩展。 -
任务层:预置速度跟踪等 locomotion 任务,支持 Unitree Go2、G1、H1、B2 以及 Booster 等多款机器人,开箱可跑。 -
上手体验:代码库小、结构清晰,复制一个现有任务改观测/奖励即可出新任务;自带引擎检测、环境单测与随机 rollout 压测,方便做 sanity check。
核心特性
1. 即用的 RL 任务库
环境以「速度跟踪」等 locomotion 任务为主,接口统一:标准的 step / reset、与 Gym 兼容的向量化 API。每个任务对应不同机器人与地形(平路/粗糙地形),配置通过继承基类并重写 scene、observations、rewards 等即可定制。
好处:不用从零写环境,复制一份任务配置改几处就能做新实验。
2. 向量化仿真
支持多环境并行(batched environments),一次 step 更新所有 env,适合做高效 RL rollout。引擎支持 CPU/GPU 后端,方便在无显卡机器上先跑通再上 GPU 加速。
典型用法:引擎烟雾测试(4 个环境示例):
python scripts/test/test_engine.py --backend cpu --num-envs 4
3. 调试与自检工具
自带三类脚本,用于验证「引擎 → 环境 → 观测/奖励」整条链路:
-
引擎烟雾测试:检查 Genesis 绑定、多 env 步进与确定性 reset。 -
环境单测:单 env 与向量化 env 的 test_env.py/test_env_vectorized.py。 -
随机 rollout 压测: test_random_rollout.py,长时间随机动作,检查 reward/observation 管线是否稳定。
好处:加新任务或改 MDP 后,先跑一轮上述脚本,再上训练,能省不少排查时间。
4. 最小化且易改
代码库按「引擎绑定 → 场景/实体 → Manager(观测/动作/奖励/终止/命令/课程)→ 环境封装」组织,体量可控。新增任务的标准流程是:复制现有任务配置 → 实现或调整观测/奖励逻辑 → 在 scripts/test 下加一个小测试 → 跑 sanity check 再训练。文档中对 PD 增益、执行器模型等也有说明(如 PD_GAINS_USAGE.md),便于做更细的控制与扩展。
5. 多机器人、多地形
预置任务中已包含 Unitree Go2、Go2w、G1、H1、B2 以及 Booster K1/T1 等机器人的速度跟踪配置,并区分 flat/rough 地形。资产与任务解耦(如 genesis_assets 与 genesis_tasks),扩展新机器人或新地形时只需按现有模式加配置与资源。
架构一图看懂
整体是三层:
-
Genesis 引擎层:负责物理仿真、场景构建、状态查询;GenesisLab 通过 GenesisBinding与之交互,封装SceneCfg(机器人、地形、传感器等)。 -
Manager 层:在 ManagerBasedGenesisEnv/ManagerBasedRlEnv中,由各类 Manager 负责观测、动作、奖励、终止、命令、课程等;与 IsaacLab 的 Manager 设计对齐,便于从 IsaacLab 迁移或对照理解。 -
任务配置层:具体任务(如 LocomotionVelocityRoughEnvCfg)继承ManagerBasedRlEnvCfg,填充scene、observations、actions、rewards、terminations、commands、curriculum等,通过 entry point 或直接传入 cfg 创建环境。

图示:自上而下为 Genesis 引擎、GenesisLab Manager、任务配置与资产。
关键配置示例(仅示意):场景里指定机器人与地形,环境里指定 decimation、episode 长度等;观测/奖励在对应 Manager 的配置类中定义。
典型任务与场景
|
|
|
|---|---|
| 引擎烟雾测试 |
python scripts/test/test_engine.py --backend cpu --num-envs 4 |
| 单环境测试 |
python scripts/test/test_env.py |
| 向量化环境测试 |
python scripts/test/test_env_vectorized.py |
| 随机 rollout |
python scripts/test/test_random_rollout.py |
训练与评估脚本位于 scripts/reinforcement_learning/rsl_rl/(如 train.py、play.py),可与现有 velocity 等任务配置结合使用。可选配图:训练时的 reward 曲线或仿真截图。
如何接入与上手
三步概括「把自己的东西搬进来」:
-
资产层:在 genesis_assets(或项目约定的资产目录)中准备机器人的 URDF 等资源;若用现有 Unitree/Booster 等,可直接复用已有资产。 -
场景/任务层:在 genesis_tasks中复制一份现有 velocity 任务配置,在__post_init__中替换scene中的机器人、地形等,按需改观测/奖励/命令的配置类。 -
配置与测试:用 env_cfg_entry_point或直接传入ManagerBasedRlEnvCfg子类创建环境;跑test_env.py/test_env_vectorized.py/test_random_rollout.py做 sanity check,再接入训练脚本。
安装依赖:
conda create -n genesislab python=3.10
conda activate genesislab
pip install genesis-world
bash ./scripts/setup/setup_ext.sh # 在仓库根目录执行,以可编辑方式安装 genesislab 等

图示:从资产到任务配置再到运行测试的接入路径。
适用人群与对比
谁最适合用?
-
想快速在 Genesis 上跑机器人 RL、又不希望被重型框架绑架的开发者。 -
需要多机器人、多地形速度跟踪等 locomotion 任务、并希望代码短小易改的团队。 -
做教学或原型验证:强调「最小可用 + 清晰结构 + 自带自检脚本」的场景。
与同类方案的一句话对比(仅从定位上概括):
-
vs 自研脚本:GenesisLab 提供统一的环境接口、Manager 化 MDP 与现成任务/资产,省去从零实现向量化与观测/奖励管线的成本。 -
vs 重型仿真框架:GenesisLab 只做「任务套件 + 引擎封装」,不追求大而全,更适合作为围绕 Genesis 的轻量试验台和二次开发起点。

图示:GenesisLab 在「轻量灵活」与「功能全面」之间的平衡点。
总结
GenesisLab 用「轻量 + 好改 + 跑得快」的思路,在 Genesis 物理引擎上搭了一个强化学习任务套件:即用的速度跟踪任务、向量化仿真、清晰的 Manager 架构与自检脚本,让你能把时间花在观测设计、奖励 shaping 和策略迭代上,而不是在框架里找入口。如果你正在或打算用 Genesis 做机器人 RL,不妨把它当作一个快速实验与扩展的起点,按「复制任务 → 改配置 → 跑测试 → 训练」的节奏接入自己的机器人与场景。
-END-