Skip to content

环境与依赖

双 venv 架构总览

venv路径Python关键依赖用途
L2./l2/.venv3.12isaacsim==6.0.0isaaclab (editable from ../IsaacLab)、torch==2.10.0 cu128L2 三个采集 pipeline
L3./l3/.venv3.12lerobot==0.3.3、CPU torchHDF5 → LeRobot v2 转换

边界:HDF5 文件。L2 venv 写、L3 venv 读。

为什么两个独立 venv:LeRobot 的依赖(torchcodecpyav 等)跟 IsaacSim 锁的 torch==2.10.0 cu128 冲突,详见 LeRobot 版本研究

L2 venv

锁定不能动的

  • torch==2.10.0(cu128)—— IsaacSim 6.0.0 官方要求
  • torchvision==0.25.0(cu128)—— IsaacSim 6.0.0 官方要求
  • isaacsim==6.0.0
  • IsaacLab 的 6 个 editable 包(l2/pyproject.toml 里的 path 是 ../IsaacLab/source/*,因为 venv 在 l2/ 下)

安装

bash
cd l2
uv sync

uv 会按 l2/pyproject.toml 创建 l2/.venv,从 pytorch-cu128 index 拉 GPU wheel,从 USTC mirror 拉其他依赖。

跑 L2 脚本

CLI 风格统一从仓库根用 --project l2 指 venv,这样 data/demos/ 这种相对路径自然解析:

bash
# 在仓库根目录
uv run --project l2 python l2/scripted/collect.py --num_demos 10
uv run --project l2 python l2/rl/train.py
uv run --project l2 python l2/teleop/record.py
uv run --project l2 python l2/verify_isaac.py

验证

bash
uv run --project l2 python l2/verify_isaac.py

应当看到 reset OK + step OK

L3 venv

安装

bash
cd l3
uv sync

l3/pyproject.toml 里 pin 了 lerobot==0.3.3(最后一个写 dataset 格式 v2.1 的 PyPI 版本,详见 LeRobot 版本研究)。

跑 L3 脚本

L3 子项目根 cwd 在 l3/ 下跑(因为 convert.py 是单文件 entry point):

bash
cd l3
uv run python convert.py ../data/demos/scripted_lift_cube.hdf5 ../data/lerobot/lift_cube_v0/

验证

bash
cd l3
uv run python -c "import lerobot, h5py; print(lerobot.__version__, h5py.__version__)"

已知坑

  • Python 版本必须 3.12——L2 venv 因为 IsaacSim,L3 venv 因为对齐(实际 lerobot 0.3.3 也支持 3.10+)。
  • 不要在 L2 venv 里 pip install lerobot:会拖一堆与 IsaacSim 冲突的包,破坏 venv。
  • 不要试图升降 torch 版本来"统一两个 venv":torch 2.10 是 IsaacSim 6.0.0 的硬约束。