主题
环境与依赖
双 venv 架构总览
| venv | 路径 | Python | 关键依赖 | 用途 |
|---|---|---|---|---|
| L2 | ./l2/.venv | 3.12 | isaacsim==6.0.0、isaaclab (editable from ../IsaacLab)、torch==2.10.0 cu128 | L2 三个采集 pipeline |
| L3 | ./l3/.venv | 3.12 | lerobot==0.3.3、CPU torch | HDF5 → LeRobot v2 转换 |
边界:HDF5 文件。L2 venv 写、L3 venv 读。
为什么两个独立 venv:LeRobot 的依赖(torchcodec、pyav 等)跟 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 syncuv 会按 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 syncl3/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 的硬约束。