使用 NVIDIA SOMA Retargeter 将人体动作重定向至机器人
从人体动作到机器人关节轨迹
人体动作的来源多种多样:动作捕捉、视频、在线数据集或生成模型。这些来源输出的动作往往使用不同的骨架和文件格式。将人体动作统一表示到 SOMA 骨架上,能为重定向器提供一致的输入。 SOMA Retargeter 读取基于 SOMA 基础骨架的 Biovision Hierarchy(BVH)动画文件。如下图 1 所示,它会将动作目标缩放到机器人的比例,求解关节姿态,并应用预设的修正。输出是一个 CSV 文件,包含机器人每一帧的根节点位置、朝向和关节角度。这些轨迹描述了下游学习或控制系统所期望的运动。
人体动作来源
开发者可利用记录的表演、从视频重建动作,或生成新的动作:
- 动作捕捉数据。 BONES-SEED 提供了一组人体动作捕捉数据。
- 视频重建。 GEM-X 利用 SOMA 身体模型从单个视频中重建全身 3D 人体动作。其 演示流程 将视频重建与 G1 重定向相结合,展示了如何将录制的动作转化为机器人动作参考。
- 动作生成。 Kimodo 和 ARDY 允许开发者根据文本和姿态约束生成人体动作。Kimodo 支持从这些描述创建动作序列,而 ARDY 在动作展开过程中增加了交互式引导。两者均提供基于 SOMA 骨骼生成动作的模型。
适配不同人形机器人的动作
SOMA Retargeter v0.2 版本包含由 Bones 提供的来自 BONES-SEED 数据集的示例动作,以及针对五款人形机器人的参考重定向结果和配置文件:Unitree G1、Unitree H2、Booster T1、AgiBot X2 Ultra 和 AgiBot A3T3。这些示例展示了关节角度和落脚位置如何根据各机器人的身材比例和活动范围在人形机体之间产生差异。配套的人类动作与机器人结果数据,可以作为你上手使用该工具、对比自己输出结果的起点。
本例中,我们使用自带的 Unitree G1 配置来重定向示例动作中的一段前行走路。完成 SOMA Retargeter 的安装后,在仓库根目录打开终端,启动查看器:
uv run python app/bvh_to_csv_converter.py --config assets/default_bvh_to_csv_converter_config.json --viewer gl
BVH to CSV Converter 打开后默认选中 unitree_g1。在 Scene Options 中展开 Motion,在 BVH Motion 一行点击 Load,然后打开内置的文件。查看器中就会显示 SOMA 的人类动画。
在“场景选项”的“动作”部分中,点击 BVH 动作那一行的“重定向”按钮。重定向工具会将源动作的目标映射到 G1 机器人,对每一帧求解预设的逆运动学目标,并应用配置好的后处理。查看器随后会展示叠加了人类源动作的机器人动画。利用位置控制器,你可以将两者分离开以便仔细检查。
使用播放控件检查结果。首先,确认动作是否为可识别的前向行走,且运动连续流畅;由于机器人的比例和关节结构与人类不同,其姿态会与人类动作存在差异。在“CSV 动作”下,点击“保存”并给输出文件起一个新名称(例如 my_first_retarget.csv),以便将其与提供的参考文件区分开。保存的文件包含该段动画中机器人的根节点姿态和各关节数值。
要将您的输出结果与提供的 G1 参考结果 进行对比,请使用“CSV 动作”中的“加载”控件依次打开两个 CSV 文件,并检查动作同一时间点的状态。参考文件位于仓库的 此位置。结果应表现出相同的基本运动趋势,但具体数值可能因配置和依赖项版本的不同而有所差异。首次重定向指南 对此示例有更详细的说明。
配置机器人并优化其动作
随附的 G1 配置可作为 retargeting 的起点,同时附带的参考结果可以在你调整参数、优化动作时作为对照。借助 Robot Configurator,你可以完善现有的机器人配置,也可以通过加载机器人的描述文件并定义人体动作的映射方式,为新机器人创建配置。
你可以对齐人和机器人的参考姿势、调整缩放比例,并将源骨骼映射到机器人的各个身体部位。生成的配置可以保存下来,在不同动作片段之间复用。
retargeting 求解器使用基于 NVIDIA Warp 构建的 Newton 逆向运动学(IK)来求解关节姿势,使其跟随缩放后的人体目标。当机器人无法同时满足所有目标时,IK 权重决定了哪些身体部位优先。
实验性质的 IK 权重优化器 利用一组能代表机器人目标任务的动作数据来调整这些权重。它通过重新定位这些动作并检查机器人跟随目标动作的紧密程度与平滑度,来测试权重调整的效果。选定的权重会保存在一个新的重定位配置文件中。
脚部滑动可能为下游的运动跟踪策略带来冲突目标:参考脚部在移动,但预期的动作却要求脚掌保持静止接触。足部着地修正 功能通过调整检测到的接触区间内的脚部运动来解决这一伪影问题。你可以优化接触时序和修正设置,在参考动作进入训练流水线之前减少滑动。
一旦你在代表性动作上完成配置优化,无头批量重定位 功能便允许你在目标机器人的更大规模动作集合中复用该配置,而无需为每个片段操作查看器。
利用重定位后的动作训练机器人策略
在训练阶段,运动跟踪策略学习如何将重定位后的参考动作转化为控制指令,这一过程同时利用了期望动作和机器人的当前状态。
SONIC 训练工作流 包含一个针对 G1 的 SOMA CSV 转换器。它将重定位后的轨迹转换为 SONIC 的动作库格式以供训练使用。ProtoMotions 提供了另一种基于物理的运动跟踪框架。无论哪种情况,输入表示和策略都必须与目标机器人相匹配。
仿真提供了下一个评估阶段,在此阶段可以对已训练的策略在平衡、地面接触、执行器限制以及跟踪精度等方面进行评估。
在另一项针对 MicroDuck 的独立实验中,源自 Bones 的人类动作被适配给该机器人,并用于在物理仿真中为每个片段训练控制器。
下方图 4 的三格对比展示了人类动作表现、MicroDuck 参考动作,以及训练后的控制器在仿真中执行该动作的效果。参考动作代表目标运动,而仿真画面则反映训练后的控制器对它的还原程度。
有关 MicroDuck 仿真环境和策略训练的更多细节,请参阅 NVIDIA 技术博客文章 Using AI Agents to Teach Robots Like Microduck to Walk in Simulation,以及 NVIDIA 发布在 Hugging Face 上的文章 Train in Simulation, Deploy on a Real Robot: Microduck with Isaac Lab 3.0。
使用 MotionBricks 实时生成动作
你还可以用 MotionBricks 的 SOMA 人体模型生成动作,再通过 SOMA Retargeter 将其适配到你的机器人上,从而为下游训练提供更丰富的动作参考。
MotionBricks 的 G1 模型部分训练数据来自经 SOMA Retargeter 适配到 G1 的 BONES-SEED 动作。它能够针对 G1 实时生成连续的全身动作,并在不断变化的目标姿态之间平滑过渡。
MotionBricks 论文和项目视频展示了该方案在实体 Unitree G1 机器人上的应用。一个针对 G1 定制的 MotionBricks 模型提供动作目标,而SONIC 负责执行控制。
开始使用 SOMA Retargeter
SOMA Retargeter 仓库包含安装说明、参考配置,以及交互式重定向和批量重定向的示例。Robot Configurator 指南介绍了如何添加人形机器人本体,而批量重定向指南则涵盖了针对该机器人处理动作数据集的方法。
Louis Marcoux 对本博客的工作做出了贡献。