One repo unify IsaacLab & whole-body control, fully built on managers!
TrackerLab 是一个模块化框架,集成了人体动作的 Retargeting、轨迹跟踪(Tracking) 与 技能控制(Skill-based Control),构建于 IsaacLab 之上。它打通了从 人类动作数据(如 SMPL / FBX) 到 机器人控制器(如 Unitree H1) 的路径,提供了统一的轨迹管理器接口,支持多种动作组织方式。
请先确保你已经完成 IsaacLab 的配置,包括 Isaac Sim 安装与 Python 环境配置。
git clone https://github.com/interval-package/trackerlab.git
cd trackerlab
conda activate <env_isaaclab> # 替换为你配置 IsaacLab 的 conda 环境名
# 安装主项目与 poselib(用于姿态处理)
pip install -e .
pip install -e ./poselib- 前往 AMASS 官网 下载数据集。
- 将解压后的内容放入:
./data/amass/
- 结构参考:
data/
├── amass/
├── retarget_cfg/
│ └── retar_smpl_2_h1.json
├── tpose/
│ ├── h1_tpose.npy
│ └── smpl_tpose.npy
更多信息见 data/README.md
- 安装 FBX SDK,参见 issue#61。
- 参考 Expressive Humanoid 将
.fbx文件转化为.npy动作数据。
这里用了宇树开源的数据模型,直接的下载脚本见: docs/dataset_download.md
TrackerLab 支持将标准人体动作数据(如 AMASS)转化为多种机器人骨架格式的轨迹数据。
- 确保 AMASS 数据已放入
./data/amass/ - 检查是否有对应的
retarget_cfg配置:- 示例:
./data/retarget_cfg/retar_smpl_2_h1.json - 包含关节映射与旋转调整信息
- 示例:
- 确保存在 T-pose 信息:
./data/tpose/smpl_tpose.npy./data/tpose/h1_tpose.npy
python poselib/scripts/amass/retarget_all.py --folders AMASS_SUBFOLDER1 AMASS_SUBFOLDER2 --robot h1 --max_frames 1000 --workers 8处理完成后,结果保存在:
./data/retargeted/amass_results/
TrackerLab 与 IsaacLab 完全兼容,在训练策略时无需特殊配置。
使用自带的脚本:
python scripts/rsl_rl/base/train.py --task R2TrackWalk --headless 对于使用官方或者是其他框架给的脚本,在训练脚本开始时,加上:
import trackerTask.trackerLabpython IsaacLab/scripts/reinforcement_learning/rsl_rl/train.py --task H1TrackAll --headless其中 H1TrackAll 是在 trackerLab 中定义的新任务环境名。
TrackerLab 的训练环境基于 IsaacLab 的模块化管理器设计,并添加了专用于运动追踪的 MotionManager 模块。
与原始 IsaacLab 环境不同,TrackerLab 的环境使用新的注册入口 "trackerLab.tracker_env:ManagerBasedTrackerEnv":
gym.register(
id="H1TrackAll",
entry_point="trackerLab.tracker_env:ManagerBasedTrackerEnv",
disable_env_checker=True,
kwargs={
"env_cfg_entry_point": f"{__name__}.h1_track_cfg:H1TrackAll",
"rsl_rl_cfg_entry_point": f"{agent.__name__}.rsl_rl_cfg:H1TrackAll",
},
)此注册方式是集成 TrackerLab 的运动管理器所必需的。
在 ./data/configs 目录下,使用 YAML 文件格式定义训练所需的运动数据集。例如:
motions:
'02/02_02_poses':
description: "walk episode"
difficulty: 4
trim_beg: -1
trim_end: -1
weight: 1.0
'127/127_28_poses':
description: Run Jump Over
difficulty: 4
trim_beg: -1
trim_end: -1
weight: 1.0
root: "amass_results/r2y/CMU"motions中的每一项是.npy运动文件的相对路径(基于./data/retargeted)。root是这些运动数据的根目录。
在你的环境配置文件中添加 motion 字段,类型为 MotionManagerCfg:
@configclass
class TrackEnvCfg(TrackEnvBaseCfg):
rewards: ...
...
motion: MotionManagerCfg = MotionManagerCfg(
motion_buffer_cfg=MotionBufferCfg(
motion=MotionBufferCfg.MotionCfg(
motion_name=<Your *.yaml, left * here>
),
regen_pkl=False, # 仅第一次加载缓存
),
static_motion=False,
robot_type="h1",
obs_from_buffer=False,
reset_to_pose=False
)该配置负责连接训练用数据集,并控制缓存使用与初始化方式。
| 文档 | 内容 |
|---|---|
| README | 项目主页说明 |
| dataset_download.md | 数据集准备细节 |
| retarget_tutorial.md | Retarget 使用说明 |
| project_structure.md | 项目结构与模块功能 |
| data_flow.md | TrackerLab 数据流与关键流程图 |
| new_env_setup.md | TrackerLab Create new env. |