joint-space-empowerment 常见问题终极清单:seed 选择、环境搭建与渲染调试一次讲清
joint-space-empowerment是 ICML 2026 Spotlight 论文Joint-Space Empowerment for Dexterous Coordination in Tendon-Driven Hands(JoSE)的官方预训练策略仓库,收录了 Adroit 与 MyoHand 两种灵巧手在 6 个操作任务上的全部强化学习策略模型。日常使用中,问题基本集中在三件事:seed 怎么选、环境怎么搭、渲染怎么调。本文把这些高频问题整理成一份清单,一次讲清。
一、先看目录结构:模型文件与命名规则
仓库按手部 → 任务 → seed三层组织,理解命名规则是后续一切操作的基础:
- 顶层
Adroit/与MyoHand/分别对应两种灵巧手 - 每个任务目录下有一个环境配置
.yaml文件和若干seed_X子目录 - 每个
seed_X目录包含两个配套文件:rl_model_<步数>_steps.zip:训练好的 PPO 策略,约 22~33 MB,如 rl_model_10000000_steps.ziprl_model_vecnormalize_<步数>_steps.pkl:观测归一化统计量,加载模型时必须一并使用
各任务的训练规模速览:
| 任务 | 训练总步数 | 单回合上限(max_episode_steps) |
|---|---|---|
| BaodingBalls(抖球) | 10M | 200 |
| DieReorient(骰子重定向) | 10M | 150 |
| KeyTurn(转钥匙) | 7.5M | 200 |
| PenTwirl(转笔) | 5M | 50 |
| Reorient8-sparse(稀疏奖励) | 5M | 50 |
| Reorient100/Training | 2M | 50 |
💡 文件名中的步数与任务绑定,例如 rl_model_5000000_steps.zip 对应 PenTwirl 的 5M 步训练,看到文件名就能反推任务。
二、seed 选择指南:各手各任务可用 seed 对照表
这是新手最容易踩的坑——不同手部、不同任务提供的 seed 并不完全一致。完整对照表如下:
| 任务 | Adroit 可用 seed | MyoHand 可用 seed |
|---|---|---|
| BaodingBalls | 0, 1, 2, 3, 4 | 0, 1, 2, 4, 5 ⚠️ |
| DieReorient | 0, 1, 2, 3, 4 | 0, 1, 2, 4, 5 ⚠️ |
| KeyTurn | 0, 1, 2, 3, 4 | 0, 1, 2, 3, 4 |
| PenTwirl | 0, 1, 2, 3, 4 | 0, 1, 2, 3, 4 |
| Reorient8-sparse | — | 0, 1, 2, 4, 5 ⚠️ |
| Reorient100 | — | Training:0~4;另有 Pretraining_Play:0~4 |
三个要点:
- ⚠️ MyoHand 的BaodingBalls、DieReorient、Reorient8-sparse 没有
seed_3,传--seed 3会直接报找不到模型。 - Reorient100 分两段:
Training/是可用的策略模型;Pretraining_Play/存的是预训练阶段的回放缓冲区(replay buffer),仅用于复现研究,不是可播放策略。 - 复现论文结果时,建议直接使用
seed_0对照,再用其他 seed 做方差检验。
三、环境搭建一步到位:clone、Git LFS 与运行命令
第 1 步:获取代码与依赖。模型加载依赖论文官方代码仓库 JoSE,其play.py脚本会下载预训练模型并在环境中执行、可视化动作。依赖体系基于uv(Python 包管理器),涉及 myosuite、gymnasium、stable-baselines3 等库。
第 2 步(离线可选):clone 本仓库。
git clone https://gitcode.com/hf_mirrors/jamesheald/joint-space-empowerment.git第 3 步:运行策略。在 JoSE 仓库根目录执行:
uv run python play.py --hand <hand> --task <task> --seed <seed>| 参数 | 可选值 |
|---|---|
--hand | Adroit、MyoHand |
--task | BaodingBalls、DieReorient、KeyTurn、PenTwirl、Reorient8-sparse、Reorient100/Training |
--seed | 按第二节对照表选择 |
⚠️ 必知陷阱:模型文件可能是 Git LFS 指针
本仓库的大文件用Git LFS存储。如果 clone 后.zip只有 100 多字节,用文本编辑器打开内容类似version https://git-lfs...,说明 LFS 未生效、下载的是指针而非真模型——此时加载必然失败。解决方法:
git lfs install git lfs pull或者安装 git-lfs 后重新 clone。
💾 磁盘容量提醒
Reorient100/Pretraining_Play 下每个 replay buffer 约1.9 GB(5 个 seed 合计约 9.3 GB),如 rl_model_replay_buffer_1000000_steps.pkl。只跑推理演示的话,完全可以跳过这一部分。
四、渲染调试:相机角度、目标球显示问题
每个任务的 YAML 末尾都有camera:和render:两段渲染配置,调画面就改这里。以 CustomAdroitBaodingP1-v1.yaml 为例:
camera: fps: 25 type: free # 'free' 固定机位 或 'tracking' 跟随身体 tracked_body: forearm # tracking 模式下跟随的身体(MyoHand 用 r_humerus) lookat: [0.01, 0.05, 1.47] # free 模式的注视点 distance: 0.8 azimuth: 270 # 方位角 elevation: -45 # 俯仰角常见症状与对应调法:
| 症状 | 调整项 |
|---|---|
| 画面太近/太远 | 改distance |
| 视角方向不对 | 改azimuth/elevation |
| 手移出画面 | 将type改为tracking,并确认tracked_body |
| 目标球与物理位置对不上 | 见下方说明 |
🎯 关于
render:段:DieReorient 等任务用target_x_offset/target_y_offset平移目标球的视觉位置(只影响渲染、不影响物理,见 CustomAdroitDieReorientP2-v0.yaml);PenTwirl 等任务还可用target_ball_alpha调整目标球透明度。如果看到目标球半透明或错位,优先检查这两组参数。
MyoHand 各任务机位各不相同,可对照 myoHandKeyTurnRandom-v0.yaml 与 myoHandReorient100-v0.yaml 查看差异(如 Reorient100 的elevation: -10视角更平)。
五、高频报错速查表
| 现象 | 原因 | 解决 |
|---|---|---|
.zip只有 100 多字节 | Git LFS 未启用 | git lfs install && git lfs pull |
| 指定 seed 报找不到模型 | 该组合未提供此 seed(见第二节 ⚠️) | 换用可用 seed |
| 模型加载失败/行为异常 | 缺少配套的vecnormalize文件 | .zip与.pkl必须成对加载 |
| 磁盘写满 | 误下载 Pretraining_Play 回放缓冲 | 跳过MyoHand/Reorient100/Pretraining_Play/ |
play.py参数报错 | --hand/--task/--seed组合不匹配 | 对照第二、三节的表格核对 |
六、附:YAML 训练配置速查
如果你需要复现训练,几个通用约定值得记住:
- 所有任务均为
norm_obs: True(观测归一化)、clip_obs: 10.0 - Reorient8-sparse 使用稀疏奖励(
reward_type: sparse),其余任务均为 dense - Adroit 各任务开启
add_wrist_pronation_supination: true(腕部旋前/旋后自由度) eval_freq/save_freq决定评估与存盘频率,可用于判断训练进度
参考配置:CustomAdroitKeyTurnRandom-v0.yaml、myoHandReorient8-v0.yaml、CustomMyoChallengeDieReorientP2-v0.yaml。
📌总结:认准「手部 × 任务 × seed」三层结构,牢记 MyoHand 部分任务缺seed_3,clone 后先检查 Git LFS 是否生效,渲染问题就去 YAML 的camera:段找答案——做到这三点,基本能覆盖 joint-space-empowerment 的全部常见坑。完整目录说明见 README.md。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考