前言
让人形机器人学会跳舞,听起来像是科幻电影中的场景,但在强化学习和运动模仿技术的推动下,这件事正在变得越来越现实。本文将完整介绍一条从'人类 RGB 视频'到'真实机器人跳舞'的技术链路:首先通过视觉算法从视频中提取人体运动轨迹,然后将人体模型重定向到机器人关节空间,接着在仿真环境中进行强化学习训练,最后在 MuJoCo 中验证并部署到真实的 Unitree G1 人形机器人上。
整条流程涉及四个核心开源项目:GVHMR(视频到人体模型)、GMR(人体到机器人重定向)、BeyondMimic(强化学习训练框架)、以及 rl_sar(仿真验证与真机部署框架)。本文不仅会逐一拆解每个环节的原理和操作步骤,还会深入分析 BeyondMimic 的算法设计,并详细记录将训练产物迁移到 rl_sar 项目中进行 sim2sim 和 sim2real 部署时遇到的关键问题与解决方案。
[图片:BeyondMimic 整体框架]
1. 端到端流程总览:从 RGB 视频到机器人跳舞
在正式进入每个模块的细节之前,有必要先建立对整条流程的全局认知。整个系统可以被拆分为五个串联的阶段,每个阶段的输入和输出都有明确的数据格式约定,任何一个环节的数据不匹配都会导致下游失败。
[图片:端到端流程示意图]
第一阶段是视频到人体模型的转换。GVHMR 接收一段普通的 RGB 视频作为输入,通过深度学习算法估计视频中人物的 SMPLX 人体模型参数,输出一个包含完整人体运动轨迹的 .pt 文件。这个文件记录了每一帧中人体的全局位置、朝向以及各关节的旋转角度。
第二阶段是人体模型到机器人模型的重定向。由于人体和机器人在骨骼结构、关节自由度、肢体比例上存在显著差异,不能直接将 SMPLX 的关节角度套用到机器人上。GMR 通过优化算法解决这个'体现差距'(embodiment gap)问题,将人体运动映射到 G1 机器人的关节空间,输出 .pkl 文件,再转换为 BeyondMimic 所需的 .csv 格式。
第三阶段是强化学习训练。BeyondMimic 基于 Isaac Lab 仿真平台,使用 PPO 算法训练机器人在物理仿真中跟踪参考动作。训练完成后导出 .onnx 模型文件和对应的 .npz 参考动作文件。
第四阶段是仿真验证。在 MuJoCo 物理引擎中加载训练好的策略和参考动作,验证机器人能否在独立的仿真环境中正确复现目标动作。这一步是真机部署前的必要安全检查。
第五阶段是真机部署。将验证通过的策略部署到 Unitree G1 实体机器人上,通过 rl_sar 框架的 C++ 实时控制循环驱动机器人执行动作。
2. GVHMR:从 RGB 视频提取人体运动轨迹
2.1 GVHMR 的作用与原理
GVHMR(Global-View Human Motion Recovery)是浙江大学开源的一个从单目 RGB 视频中恢复全局人体运动的算法。传统的人体姿态估计方法通常只能得到相对于相机坐标系的局部姿态,而 GVHMR 的核心贡献在于能够恢复人体在世界坐标系下的全局运动轨迹,包括全局平移和旋转。这对于后续的机器人运动重定向至关重要,因为机器人需要知道'人在空间中走了多远、转了多少',而不仅仅是'手臂抬了多高'。
GVHMR 的输出是一个 PyTorch 的 .pt 文件,其中包含了 SMPLX 人体模型的完整参数序列:全局位移(global translation)、全局朝向(global orientation)、身体姿态参数(body pose)以及手部姿态参数。这些参数足以在任意时刻重建出完整的人体三维网格。
2.2 环境配置
GVHMR 的安装按照其 官方文档 操作即可。需要注意的是,该项目依赖较多的预训练模型和第三方库,建议在独立的 conda 环境中安装。
2.3 数据转换操作
环境配置完成后,执行以下命令即可将视频转换为 SMPLX 运动轨迹:
python tools/demo/demo.py --video=docs/example_video/tennis.mp4 -s
其中 --video 参数指定输入视频的路径,-s 参数表示保存结果。程序运行完成后会输出一个 .pt 文件,务必记录该文件的完整路径,因为下一步 GMR 需要用到它。
[图片:GVHMR 输出结果]
上图展示了 GVHMR 处理视频后的输出信息,可以看到程序会打印出 .pt 文件的保存路径。在实际操作中,建议将视频文件放在项目目录下的统一位置,并为每个视频建立独立的输出目录,方便后续管理多个动作数据。


