课程总目录Lesson 0016 · Module K · Simulation Without Hardware
学习进度 0%
Module K · Simulation Without Hardware

没有真机怎么做具身智能实验:仿真平台、仓库与操作流程

35–45 分钟 · 目标:能在没有真机时选择合适仿真平台,并按 P0–P10 流程产出可复现证据。

Benchmark map PushT lab Evaluation system Research portfolio

仿真解决什么问题

没有真机时,仿真仍然能提供三件事:可重复的 environment、可定义的 action space、可自动计算的 reward / success / return。但它不能自动证明真机成功。正确说法是:simulation closed-loop evidence,不是 real-robot success。

路线原则

先用最小 CPU 环境跑通学习闭环,再进入 GPU 并行和更复杂机器人。不要一开始就安装最重的平台。

平台选择表

平台 / 仓库最适合硬件课程角色
gym-pusht2D manipulation、closed-loop metricsCPU 友好第一环境
LeRobotdataset schema、policy、SmolVLA、PushT 生态低门槛主生态
MuJoCo Playgroundlocomotion / manipulation / sim-to-realGPU进阶物理
ManiSkillGPU-parallel manipulationLinux + NVIDIA 最完整进阶 benchmark
Isaac Lab高性能 robot learning、domain randomizationNVIDIA 生态高级平台
Habitat / CALVIN / LIBERO / BEHAVIORnavigation、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 时怎么办

P0–P10 标准操作流程

阶段动作必须留下的证据
P0 Choose选择 PushT,而不是先选最重平台一页理由:任务、指标、硬件、时间预算
P1 Install独立环境 + lock/requirementsPython、CUDA、库版本
P2 Smokerandom policy 跑通视频、日志、info 字段
P3 Schema审计 observation/action/reward/doneschema 文档和分布图
P4 Splitepisode-safe 划分split JSON 与泄漏检查
P5 Baselinesrandom / previous action / tiny policy统一结果表
P6 Offlineaction 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 + 成本与失败案例。

证据边界

检索练习

没有真机时,哪一组证据最能支撑一个仿真实验结论?

仿真实验的证据来自协议、划分、对照、闭环指标、重复性和失败分析;接口跑通只是第一步。

本课一手来源

gym-pusht 官方仓库;LeRobot installation;MuJoCo Playground;ManiSkill;Isaac Lab。

有疑问就问

把不理解的地方直接发给老师/agent,最好附上你观察到的现象和报错。

Course file: lessons/0016-simulation-without-hardware.html