开源不到一天1.9k星星!NVIDIA新突破,机器人ChatGPT时刻!


项目简介

把人类的复杂动作,切成一个个小小的“运动 token”。就像语言模型把句子拆成词一样。然后,用一个普通的 Transformer 模型,去预测“下一个动作 token”是什么。预测完之后,把它解码成肌肉指令,让物理引擎去真实模拟。

没有花里胡哨的新架构,就是经典的自回归预测 + 物理仿真。

让人意外的是,很多高级行为直接涌现出来了。

ProtoMotions3 是一个 GPU 加速的仿真与学习框架,用于训练物理模拟的数字人类和人形机器人。我们的使命是为各种模拟人形学习任务和环境提供快速原型平台,服务于动画、机器人学和强化学习领域的研究者和从业者,促进跨社区协作。

这对机器人圈的人冲击很大。目前很多人形机器人团队还在为每个具体技能(走、跑、跳、抓取)单独设计控制器和奖励函数,工作量巨大。而这条路,似乎打开了一种新可能:先用海量数据预训练一个“通用身体”,让基础本能先长出来,再针对具体任务微调。

可以做什么

大规模动作学习

在 4 张 A100 GPU 上,只需 12 小时,即可让你的完全物理模拟角色从整个公开的 AMASS 人类动画数据集(40+ 小时)中学习运动技能。

可扩展的多 GPU 训练

可扩展到更大规模的数据集,每个 GPU 处理部分动作子集。例如,我们使用 24 张 A100,在 BONES 数据集(SOMA 骨骼格式)上,每张 GPU 处理 13K 个动作。立即查看 快速开始 和 SEED BVH 数据准备 来体验数据集和预训练模型。

一键重定向

使用内置的基于 PyRoki 的优化器,一条命令即可将整个 AMASS 数据集转移到你喜欢的机器人上。

训练任意机器人

只需修改一个命令参数:—robot-name=smpl → —robot-name=h1_2,并准备好重定向后的动作,即可在 12 小时 内让你的机器人学会 AMASS 的运动技能(详见此处)。

Sim2Sim 测试

一键切换模拟器(—simulator=isaacgym → —simulator=newton → —simulator=mujoco),在不同物理引擎(NVIDIA Newton、MuJoCo CPU)中测试 H1_2 或 G1 的机器人控制策略。下方展示的策略仅使用真实硬件可获取

从仿真到真实

在仿真中训练,然后部署到真实硬件。ProtoMotions 在整个 BONES-SEED 数据集(约 142K 个动作)上训练了一个通用跟踪策略,可零样本直接转移到 Unitree G1 人形机器人。

我们的部署流水线导出一个单一的 ONNX 模型(已内置观测计算),因此部署框架只需提供原始传感器信号——无需重写观测函数或匹配训练内部细节。我们通过优秀的 RoboJuDo 框架在 Unitree G1 上进行了测试,只需添加一个策略文件,无需修改 RoboJuDo 核心。

高保真渲染

在 IsaacSim 5.0+ 中测试你的策略,支持加载美观的 Gaussian Splatting 背景(使用 Omniverse NuRec 生成——目前渲染场景尚不可物理交互)。

使用 Kimodo 进行动作创作

配合 Kimodo(NVIDIA 的文本到动作生成模型),通过文本提示生成任意动作,然后使用 ProtoMotions 训练物理-based 策略——支持 SOMA 动画角色和 Unitree G1 机器人。训练后的策略可直接部署到真实硬件。

详见 Kimodo 数据准备。

程序化场景生成

程序化生成大量场景,用于可扩展的合成数据生成 (SDG):从种子动作集开始,使用 RL 让动作适应增强后的场景。

生成式策略

训练生成式策略(例如 MaskedMimic),让角色自主选择“动作”来完成任务。关于可复用的离散潜在先验和 PEFT 任务适配器,请参阅 GPC 和 PEFT 指南。

复杂地形导航

训练你的机器人攀登具有挑战性的地形!

自定义环境

有新的任务?使用模块化组件构建——无需庞大的单一环境类。以下是 steering(转向)任务的组成示例:

Layer

File

功能

Controlsteering_control.py管理任务状态(目标方向、速度、朝向)。定期采样新的朝向目标。

Observationobs/steering.py纯 Tensor 内核——将目标转换到机器人局部坐标系 → 5D 特征向量。

Rewardrewards/task.pycompute_heading_velocity_rew —— 混合方向匹配 (0.7) 和朝向匹配 (0.3) 奖励。

Experimentsteering/mlp.py通过上下文路径将组件连接为 MdpComponent 实例。

每个部分都是独立的函数或类——实验配置使用 MdpComponent 和 FieldPath 描述符将它们绑定成完整任务。

新 RL 算法

想尝试新的 RL 算法?利用我们的模块化设计,只需约 50 行代码 即可在 ProtoMotions 中实现如 ADD 等算法:

📄 protomotions/agents/mimic/agent_add.py

自定义模拟器

想使用自己的模拟器?实现以下不同模拟器之间的接口 API:

📄 protomotions/simulator/base_simulator/

参考社区贡献的示例:

📄 protomotions/simulator/genesis/

🤖 添加你自己的机器人

想添加自己的机器人?按以下步骤操作:

将你的 .xml MuJoCo 规格文件添加到 protomotions/data/assets/mjcf/

填写配置字段(参考 protomotions/robot_configs/g1.py 等示例)

在 protomotions/robot_configs/factory.py 中注册

即可完成!

写在最后

过去,机器人控制很多时候像“手工艺”——工程师凭经验和大量试错,一点点调参数。现在,这项工作在尝试把“身体智能”变成一种可规模化的“语言建模”问题。

用数据驱动 + 自回归预测,让物理约束下的智能自然涌现。这条路如果走通,未来人形机器人的开发门槛可能会大幅降低。基础运动能力先靠大规模预训练搞定,开发者就能把精力放在更高层的任务规划和具体场景适配上。

当然,现在还只是研究阶段。真实世界比仿真复杂太多,传感器噪声、延迟、硬件磨损等问题都需要继续攻克。但至少,它提供了一个清晰、可实践的新思路。

项目地址

https://github.com/NVlabs/ProtoMotions

如果你觉得这篇文章不错,别忘了点赞、在看、转发给更多需要的小伙伴哦!

            预览时标签不可点