)
如何为Psi0添加新机器人本体EmbodimentTagFieldTransform四步扩展法开发者指南【免费下载链接】Psi0[RSS26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0Psi0Ψ₀是一个面向通用人形机器人运动-操作Loco-Manipulation的开源视觉-语言-动作VLA基础模型它先从大规模人类第一视角视频学习任务语义再在少量真实遥操作数据上后训练从而掌握通用具身动力学。当你要把 Ψ₀ 迁移到自己的新机器人或新数据格式时官方给出了清晰的扩展机制——用EmbodimentTag注册本体标签用FieldTransform定义字段转换仅需四步即可把新 Embodiment 接入训练管线。为什么需要注册新的 Embodiment在 Psi0 的数据管线中EmbodimentTag本体标签是连接数据集与字段转换逻辑的核心钥匙。只要满足以下任一情况就需要新增一个标签 换了一台新机器人例如从 G1 换到 H1 换了一种新的动作/状态格式36D 解耦格式、64D 潜动作 SONIC 格式等 任务动力学发生变化即使本体不变官方文档明确格式或动力学变化也视为新 Embodiment。现有的本体标签集中定义在 embodiment_tags.py 中每个标签都带有清晰的 docstring 说明其动作/状态维度约定class EmbodimentTag(Enum): PSI0_AMO_G1 psi0_amo_g1 # 36D 动作 / 32D 状态 / 第一视角 PSI0_SONIC_G1 psi0_sonic_g1 # 64D 潜动作 7×2 DoF 双手 SIMPLE_G1 simple_g1 # 仿真 SIMPLE 中的 G1 ... 标签的 docstring 就是数据契约写清楚动作维度、状态维度、相机和帧率后续维护者才知道这个数据集怎么对齐。四步扩展法总览官方指南位于 examples/Add_a_new_embodiment.md流程可以浓缩为一张表步骤做什么核心位置1️⃣ 注册标签在EmbodimentTag枚举中新增成员embodiment_tags.py2️⃣ 声明路径训练命令中用tag:路径传入--data.dataset_paths训练启动脚本3️⃣ 挂载转换在MixedFieldTransform中注册该标签的转换transform.py4️⃣ 实现转换编写专用FieldTransform子类 modality.jsontransform.py第一步在 EmbodimentTag 中注册新本体打开 embodiment_tags.py仿照现有成员追加一个枚举值即可class EmbodimentTag(Enum): ... PSIX_HE_G1 psix_he_g1 # 你的新本体标签字符串值即命令行中的 tag命名建议遵循现有惯例数据系列_本体_控制器如psix_he_g1_sonic、decoupled_wbc_h1。第二步用 tag:path 声明数据集路径训练启动时通过命令行参数把标签和数据集目录绑定格式为标签:绝对路径--data.dataset_paths ... \ psix_he_g1:/hfm/data/psix_he_anno_0512/manual_label_v1_0512_lerobot/g1数据管线加载 LeRobot 数据集时会用 lerobot.py 中的EmbodimentTag(embodiment_tag)把字符串解析成枚举再据此选择对应的字段转换——标签写错数据会以错误的维度进入模型这是最常见的第一步坑。第三步把新标签挂载到 MixedFieldTransformPsi0 支持多 Embodiment 混合训练所有标签的字段转换统一注册在MixedFieldTransform中定义于 transform.pyclass MixedFieldTransform(FieldTransform): psix_he_g1: PsixHEFieldTransform # ① 声明字段 def get_all_transforms(self): # ② 返回 tag - transform 的映射 return { psix_he_g1: self.pisx_he_g1.get_transform(), ... }只做这两处修改混合数据集采样器就能按标签分发样本。第四步实现专用的 FieldTransform最后一步是编写如PsixHEFieldTransform的具体转换类。官方强烈建议直接复制现有类并修改而不是搞继承——转换逻辑冗余一点没关系继承链会让混合训练变得难以调试。一个完整转换类需要覆盖四块内容Key 映射video_apply_to/state_apply_to/action_apply_to把 LeRobotmodality.json中的原始列映射到统一字段如state.left_arm、action.body_token视频变换video_to_tensor、video_crop、video_resize、video_color_jitter、video_to_numpy状态/动作变换state_to_tensor、action_to_tensor以及归一化的核心 ActionStateTransform——它会从stat_path指向的 stats 文件加载 min/max或 q01/q99统计量把动作归一化到[-1, 1]拼接用concat: ConcatTransform把多模态键拼成模型输入的单字段。⚠️ 别忘了配套文件手动在数据集的meta/目录下创建modality.json声明state/action/video/annotation四组键。转换类的 key 映射正是对照这份文件写的。踩坑清单让新 Embodiment 真正跑起来统计量必须齐全数据转换后用 calc_modality_stats.py 计算统计量并复制为meta/stats_psi0.jsonREADME 中的标准流程否则ActionStateTransform加载失败、归一化直接报错维度对齐不同 Embodiment 的动作维度不同36D / 80D 等混合训练时需通过pad_action_dim/pad_state_dim补齐标签 docstring 里应写清目标维度不要跨类继承 Transform官方文档原话code redundancy is encouraged here损失日志依赖细粒度键state_apply_to中官方建议prefer detailed annotations如state.left_hand而非笼统的state.joint_state因为 L1 损失日志会按模态拆解。关键文件速查文件用途embodiment_tags.pyEmbodimentTag 枚举定义transform.pyFieldTransform / MixedFieldTransform 及归一化Add_a_new_embodiment.md官方新 Embodiment 接入指南calc_modality_stats.py计算数据集统计量data_config.ipynb数据配置示例 notebookvisualize.md接入后的数据可视化验证小结为 Psi0 添加新机器人本体的完整路径就是注册 EmbodimentTag → 用tag:路径声明数据 → 在 MixedFieldTransform 挂载 → 实现专用 FieldTransform 并补齐 modality.json 与 stats。四步全部围绕标签 转换展开理解了 EmbodimentTag 与 FieldTransform 的分工你就能把 Ψ₀ 灵活地扩展到任意新的人形机器人本体上。【免费下载链接】Psi0[RSS26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考