没有真机怎么做具身智能实验:仿真平台、仓库与操作流程
Benchmark map PushT lab Evaluation system Research portfolio
仿真解决什么问题
没有真机时,仿真仍然能提供三件事:可重复的 environment、可定义的 action space、可自动计算的 reward / success / return。但它不能自动证明真机成功。正确说法是:simulation closed-loop evidence,不是 real-robot success。
先用最小 CPU 环境跑通学习闭环,再进入 GPU 并行和更复杂机器人。不要一开始就安装最重的平台。
平台选择表
| 平台 / 仓库 | 最适合 | 硬件 | 课程角色 |
|---|---|---|---|
| gym-pusht | 2D manipulation、closed-loop metrics | CPU 友好 | 第一环境 |
| LeRobot | dataset schema、policy、SmolVLA、PushT 生态 | 低门槛 | 主生态 |
| MuJoCo Playground | locomotion / manipulation / sim-to-real | GPU | 进阶物理 |
| ManiSkill | GPU-parallel manipulation | Linux + NVIDIA 最完整 | 进阶 benchmark |
| Isaac Lab | 高性能 robot learning、domain randomization | NVIDIA 生态 | 高级平台 |
| Habitat / CALVIN / LIBERO / BEHAVIOR | navigation、language、long-horizon、household | 视任务而定 | 扩展路线 |
P0:CPU 最小闭环——PushT
gym-pusht 的 action 是连续 2 维 [x,y],范围 [0,512];state observation 是 agent_x, agent_y, block_x, block_y, block_angle;reward 是 block 覆盖 goal zone 的比例,成功阈值是至少 95% coverage。
conda create -y -n pusht python=3.10
conda activate pusht
pip install gym-pusht
cat > smoke_pusht.py <<'PY'
import gymnasium as gym
import gym_pusht
env = gym.make("gym_pusht/PushT-v0", obs_type="state", render_mode="rgb_array")
obs, info = env.reset(seed=0)
returns = 0.0
for step in range(300):
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
returns += float(reward)
frame = env.render()
if terminated or truncated:
break
print({"steps": step + 1, "return": returns, "coverage": info.get("coverage"), "success": info.get("success")})
PY
python smoke_pusht.py
random policy 只能证明环境、action space 和渲染跑通;它是 interface smoke test,不是有效控制。
P1:接入 LeRobot 生态
当你需要统一的数据格式、imitation policy、SmolVLA 或复现实验时,再进入 LeRobot。官方安装文档推荐 Python 3.12,并按 workflow 安装可选 extras。
conda create -y -n lerobot python=3.12
conda activate lerobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[core_scripts]"
pip install -e ".[training]"
pip install -e ".[pusht]"
python -c "import gym_pusht; print('PushT extra ready')"
在这一层要补齐:episode-safe split、dataset schema audit、action normalization、baseline、训练日志和复现命令。
P2:GPU 与更复杂机器人
如果目标从 2D PushT 升级到 locomotion、manipulation、视觉渲染和大规模并行,再考虑以下路线。
# MuJoCo Playground,官方源码路线
git clone git@github.com:google-deepmind/mujoco_playground.git
cd mujoco_playground
uv venv --python 3.12
source .venv/bin/activate
uv pip install -U "jax[cuda12]" --index-url https://pypi.org/simple
uv --no-config sync --all-extras
python -c "import mujoco_playground; print('Success')"
python -c "from mujoco_playground import locomotion; locomotion.load('G1JoystickFlatTerrain')"
# ManiSkill,Linux + NVIDIA 支持最完整
pip install --upgrade mani_skill
pip install torch
# 渲染还需按官方文档配置 Vulkan
Isaac Lab 适合 NVIDIA Isaac Sim 生态中的高性能仿真、向量化渲染、domain randomization 和 cloud workflow。先确认 GPU、驱动、安装路线和任务需求,再迁移。
没有本地 GPU 时怎么办
- 优先:使用你已有的远端 H200 容器,环境锁定最稳。
- 次优:官方 Colab 只用于快速理解 GPU-parallel simulation,不适合当作长期可复现实验环境。
- 浏览器 demo:适合建立直觉,不能作为研究指标。
- 纯 CPU:PushT + state observation 足够完成第一轮 schema、baseline、offline metric 和闭环实验。
P0–P10 标准操作流程
| 阶段 | 动作 | 必须留下的证据 |
|---|---|---|
| P0 Choose | 选择 PushT,而不是先选最重平台 | 一页理由:任务、指标、硬件、时间预算 |
| P1 Install | 独立环境 + lock/requirements | Python、CUDA、库版本 |
| P2 Smoke | random policy 跑通 | 视频、日志、info 字段 |
| P3 Schema | 审计 observation/action/reward/done | schema 文档和分布图 |
| P4 Split | episode-safe 划分 | split JSON 与泄漏检查 |
| P5 Baselines | random / previous action / tiny policy | 统一结果表 |
| P6 Offline | action MSE、rollout MSE、视觉指标 | mean ± std,多 seed |
| P7 Closed-loop | 策略动作影响后续观测 | return / coverage / success JSON |
| P8 Model | 接入 RSSM / VLA / WAM 实验 | 同一协议下的对比 |
| P9 Cost | 记录失败案例和资源 | GPU time、latency、memory、failure cases |
| P10 Report | 写 reproduction report | 命令、配置、图表、limitations |
不是“我安装成功”,而是:环境锁定 + smoke 视频 + schema + episode-safe split + 至少三个 baseline + offline 与 closed-loop 分列 + 3 seeds + 成本与失败案例。
证据边界
- 仿真成功不能写成真机成功;如要主张 sim-to-real,必须报告真机协议和失败条件。
- domain randomization 可以提高鲁棒性,但不能保证迁移成功。
- GPU 并行提高采样效率,不等于结果更正确。
- 官方 Colab 适合理解接口,长期实验要固定环境版本。
- 不同平台的 action space、控制频率和物理参数不可直接比较。
检索练习
没有真机时,哪一组证据最能支撑一个仿真实验结论?
本课一手来源
gym-pusht 官方仓库;LeRobot installation;MuJoCo Playground;ManiSkill;Isaac Lab。
把不理解的地方直接发给老师/agent,最好附上你观察到的现象和报错。