PAPER DEEP DIVE
LATENT:从不完美人类动作学习人形网球技能
LATENT 以碎片化、不完整的人类网球动作数据为先验,经修正与组合学出可稳定击球的人形策略,部署到 Unitree G1,能与人类进行多拍对拉。
论文信息
标题:Learning Athletic Humanoid Tennis Skills from Imperfect Human Motion Data(LATENT)
作者:Zhikai Zhang, Haofei Lu, Yunrui Lian 等 15 人(清华大学、北京大学、Galbot、上海期智研究院、上海人工智能实验室)
链接:arXiv 2603.12686 · 项目主页 · GitHub(部分开源)
机器人平台:Unitree G1(29 自由度)
代码状态:动作跟踪代码库与部分动作数据已发布;蒸馏、潜在模型与高层策略训练代码在 TODO 列表中
一句话总结
LATENT 不追求完美的人类网球动作数据,而是把碎片化、不精确的"不完美"动作数据当作技能先验,通过"可修正的潜在动作空间 + 高层策略的修正与组合",让 Unitree G1 在真实世界中稳定回击高速来球,并与人类连续多拍对拉。
研究背景与动机
运动技能一直是人形机器人的核心挑战之一。网球对机器人的要求极为苛刻:人类球员经常要以超过 6 m/s 的速度在场上冲刺,对 15-30 m/s 的来球做出反应,而球与球拍的接触时间只有短短几毫秒。这三个数字几乎封死了常规路线——靠人-机遥操作采集动作数据再做模仿学习是行不通的,因为任务本身的动态性已经超过了遥操作能够提供的数据质量。
退而求其次,用人体运动学动作数据作为参考同样困难。网球动作有三个特点让动作捕捉系统很难采集到精确且完整的真实比赛数据:动作范围大(覆盖半个球场)、需要持续的多拍对抗、击球瞬间的腕部动作极其精细。Vid2Player3D 尝试用转播视频绕开这个难题,但它需要一条很长的流水线(球员检测、相机估计、2D/3D 姿态估计),并且要靠外部残差力修正运动伪影,组装这些模块本身就需要相当的工程投入,也难以直接搬上真机。
LATENT 的出发点是换一个问题来问:真正难采集的是"完整的比赛动作序列",但构成网球的原子技能(正手、反手、横滑步、交叉步)并不难采。于是作者只采集这些动作碎片,不强求精确的腕部轨迹,也不要求完整的比赛语境。论文把这种数据称为"不完美数据",具体指两点:其一是"不精确"(Imprecise)——挥拍时的腕部动作本就不准,人到人形机器人的重定向还会进一步放大误差;其二是"不完整"(Incomplete)——数据只提供自然运动先验,完全不包含"如何用这些技能完成回球"的任务知识。
论文的关键洞察是:即便如此,这类准真实数据仍然充分提供了网球场景下人类原子技能的先验。只要学习框架能在关键部位(腕部)做"修正"、在任务层面做"组合",就能在保留自然动作风格的前提下学会网球技能。这个洞察直接决定了整个系统的结构:先预训练动作跟踪器,再蒸馏出可修正的潜在动作空间,最后由高层策略完成修正与组合。
数据侧的收益也很实在:因为只采原子技能,光学动捕系统只需覆盖 3m×5m 的有效区域,比标准网球场小 17 倍以上,相机数量和场地成本大幅下降。作者邀请了 5 位业余网球选手,共采集 5 小时动作数据,全程不做任何编辑与标注,再用 LocoMuJoCo 把人体动作重定向到人形机器人。
预备知识:层级控制与潜在动作空间
人形机器人自由度高,直接用强化学习从零学技能往往采样效率低、动作不自然。主流的解决思路是带潜在动作空间的层级控制:先从预录的人类动作数据中学习一个编码可复用原子技能的潜在空间,再训练一个高层策略在这个空间里采样来完成任务。这条路线上有两个分支。
一支学习"运动学动作"的潜在空间,解码出运动学轨迹后交给独立的动作跟踪器执行(如 Vid2Player3D 的 MotionVAE)。问题是生成的运动学动作常常物理不可行,跟踪器压力很大。另一支直接学习"关节动作"的潜在空间:PULSE 从通用动作跟踪器蒸馏出 VAE 式潜在空间;R2S2 把这一思想带到真实人形机器人上,用一组预训练的原子技能解决移动操作任务。LATENT 属于第二支,但它面对的是"不完美"的原子技能数据,因此需要两个额外的设计:让潜在空间兼容动作修正,以及用"潜在动作屏障"约束高层探索。
方法详解
系统总览如图 1 所示,共三个阶段加一组 sim-to-real 设计。训练框架为 PPO,仿真器为 MuJoCo JAX,8 块 GPU 并行训练;高层规划器与低层控制器都运行在 50 Hz,仿真频率则提高到 2000 Hz,以精确建模球-拍与球-地接触。

图 1:LATENT 系统总览。(a) 在不完美人类动作数据上预训练动作跟踪器;(b) 在线蒸馏构建可修正的潜在动作空间;(c) 高层策略对潜在动作做修正与组合完成回球任务;(d) 动力学随机化与观测噪声实现真机迁移。
阶段一:动作跟踪器预训练——为腕部修正"打疫苗"
第一步是把带噪声的重定向动作数据变成可执行的原子技能。作者使用 Any2Track 框架训练动作跟踪器,可写作策略 $\pi_{\text{tracker}}(\hat{a}^{\text{body}}_{t}\mid s_{t},\tilde{s}_{t+1})$:输入当前本体状态 $s_{t}$(角速度、投影重力、关节位置、关节速度、上一帧动作)与当前动作目标 $\tilde{s}_{t+1}$,输出关节动作 $\hat{a}^{\text{body}}_{t}$,再由 PD 控制器算力矩。跟踪目标是让 $t{+}1$ 时刻的机器人状态尽量贴近目标动作,同时保持平衡与安全。
这里有一个贯穿全文的关键设计:采集的数据本来就不含精确的击球腕部动作,重定向还会放大误差,所以后续必须由高层策略对腕部做在线修正。为了让低层控制器能稳健地"接受"这种修正,跟踪器训练时直接从动作中去掉右腕(持拍侧)的控制信号,并对右腕关节额外施加随机扰动——跟踪器必须在未知的腕部干扰下模仿其余关节。这相当于给低层控制器提前打了疫苗,也是后面"可修正潜在空间"能够成立的物理基础。
阶段二:在线蒸馏出可修正的潜在动作空间
跟踪器学会模仿动作碎片后,身上已经装满了打网球所需的原子技能。接下来用在线蒸馏把它压缩成紧凑、结构化的表示:学生网络采用编码器-解码器结构加条件变分信息瓶颈。后验编码器 $\mathcal{E}(z^{q}_{t}\mid s_{t},\tilde{s}_{t+1})=\mathcal{N}(z^{q}_{t};\mu^{e},\sigma^{e})$ 建模给定当前状态与动作目标时的潜在码分布;解码器 $\mathcal{D}(\hat{a}^{\text{body}}_{t}\mid s_{t},z^{q}_{t})$ 把采样的潜在码映射回关节动作。训练总损失为两项之和:
$$\mathcal{L}=\lambda_{1}\mathcal{L}_{\text{action}}+\lambda_{2}\mathcal{L}_{\text{KL}}$$
其中动作监督项采用 DAgger 在线蒸馏:
$$\mathcal{L}_{\text{action}}=\mathbb{E}_{(s_{t},\hat{a}^{\text{body}}_{t})\sim\mathcal{D}_{\text{agg}}}\left[\left\|\hat{a}^{\text{body}}_{t}-a^{\text{body}}_{t}\right\|^{2}\right]$$
$\mathcal{D}_{\text{agg}}$ 是由学生当前状态与教师动作组成的数据缓冲区。KL 项则把后验拉向一个"可学习的条件先验":
$$\mathcal{L}_{\text{KL}}=D_{\text{KL}}\left(\mathcal{E}(z^{q}_{t}\mid s_{t},\tilde{s}_{t+1})\,\|\,\mathcal{P}(z^{p}_{t}\mid s_{t})\right)$$
与标准 VAE 不同,这里的先验 $\mathcal{P}(z^{p}_{t}\mid s_{t})=\mathcal{N}(z^{p}_{t};\mu^{p}(s_{t}),\sigma^{p}(s_{t}))$ 不是固定的单峰高斯,而是随状态变化的可学习分布。理由很直接:不同状态下的动作分布差异巨大——横滑步与挥拍击球完全是两个世界,固定先验要么把潜在空间压扁,要么引入与状态无关的噪声。状态条件先验让每个状态在潜在空间中都有自己的"正常范围",而这个先验稍后还会在潜在动作屏障里扮演关键角色。蒸馏过程中继续维持右腕扰动,从而保证潜在空间本身对腕部修正鲁棒。
阶段三:高层策略——修正与组合
高层策略 $\pi_{\text{planner}}$ 的输入包括当前机器人状态 $s_{t}$、机器人根部全局位姿 $g_{t}$ 和球状态 $b_{t}$。任务设定为:每个回合机器人在球场随机位置以预备姿势初始化,需要连续把 8 个来球回击到目标位置;来球每 2 秒发出一记,位置与速度随机。奖励设计见表 1:任务项中击球成功权重 200、过网 100、落点 30、迎球 10;正则项覆盖高层动作、力矩、动作变化率、球拍加速度、修正动作、腕部力矩与关节平滑度;终止项包括摔倒与漏球各 −200、触网与出界各 −50、击球风格违规 −50。权重的优先级很清晰:先打到球,再打准,最后打得自然。
动作修正(hybrid control):高层策略的输出不是单纯的潜在码,而是 $a^{\text{planner}}_{t}=[a^{\text{latent}}_{t},a^{\text{correct}}_{t}]$——潜在动作加上对右腕的直接控制指令。由于潜在空间从跟踪器阶段起就被训练成对右腕修正鲁棒,高层策略可以输出任意腕部调整而不牺牲下肢的稳定性与敏捷性。这一步把"不精确"问题正面解决了。
潜在动作屏障(LAB):解决的是"不完整"带来的风险。动作数据只教了"怎么动得自然",没教"怎么用这些动作回球",任务知识必须靠高层策略在 RL 中自己发现。但潜在空间里藏着大量高质量原子技能,若不加约束,策略很容易"钻空子":比如迎球奔跑时在几个移动原子技能之间来回切换,组合出抖动却恰好能完成任务的低质量动作。图 2 展示了这个动机。

图 2:潜在动作屏障(LAB)的动机——围绕先验均值、按状态相关标准差自适应缩放的探索区域,防止高层策略钻潜在空间的空子。
LAB 的做法是用可学习条件先验界定探索区域。潜在动作以残差形式定义在先验均值 $\mu^{p}_{t}$ 之上;但原子技能流形的形状不只由均值决定,还由方差决定,而先验标准差 $\sigma^{p}_{t}$ 在不同状态、不同潜在维度上变化显著。因此屏障不取欧氏球,而取按状态相关标准差自适应缩放的 Mahalanobis 距离球。最终送入低层的 PD 目标动作为:
$$a^{\text{full}}_{t}=\left[\mathcal{D}\left(s_{t},\,\mu^{p}_{t}+\lambda\,\sigma^{p}_{t}\cdot\tanh\left(a^{\text{latent}}_{t}\right)\right),\;a^{\text{correct}}_{t}\right]$$
其中超参数 $\lambda$ 控制探索范围,$\tanh$ 把残差幅值限制在屏障之内。效果是:高层策略仍可以在"人类技能流形"附近自由组合动作,但无法跳出去采样离谱的潜码。
Sim-to-Real:动力学随机化与观测噪声
人形动作动态性强、球速高、击球精度要求高,sim-to-real 并不轻松。作者的选择是"以随机化代替精确认知"。机器人侧随机化脚底摩擦 $\mathcal{U}(1.0,2.5)$、关节摩擦 $\times\mathcal{U}(0.75,1.25)$、armature $\times\mathcal{U}(1.0,1.05)$、身体质量 $\times\mathcal{U}(0.75,1.25)$、身体质心 $\mathcal{U}(-0.05,0.05)$、球拍质心 $\mathcal{U}(-0.1,0.1)$、球拍质量 $\times\mathcal{U}(0.8,1.2)$;球侧随机化质量 $\times\mathcal{U}(0.95,1.05)$、球-地恢复系数 $\mathcal{U}(0.71,0.79)$、切向阻尼 $\mathcal{U}(0.4,0.7)$ 与空气阻力系数 $k\sim\mathcal{U}(0.01,0.04)$。空气阻力建模为二次阻力:
$$\bm{f}_{\text{air}}=-k\,m\,\bm{v}\,\|\bm{v}\|$$
论文明确对比了另一条路线:以往工作(如乒乓球、Vid2Player3D)往往依赖精确系统辨识与显式空气动力学建模,而 LATENT 发现充分的动力学随机化就能完成迁移,还显著更鲁棒——真机消融实验支持了这一判断。
观测侧,策略输入加入均匀噪声、帧级 dropout 与延迟。球状态估计是难点:位置由外部系统给出,速度靠有限差分计算,而位置上的微小噪声会被差分放大成速度误差。作者的做法是在仿真与真机中都维护一个 4 帧滑动窗口,用窗口内的平均速度作为球的观测。真机部署方面:用 3D 打印连接件把网球拍装在 G1 右腕上并替换右手;光学动捕系统负责全局状态——机器人基座贴多个反光标记点构成刚体估计全局 6D 位姿,球身包裹反光胶带作为被动标记点。
flowchart TD
A["不完美人类动作碎片
正手 反手 滑步 交叉步 共 5 小时"] --> B["动作跟踪器预训练
Any2Track 框架"]
B --> C["在线蒸馏
条件变分信息瓶颈"]
C --> D["可修正潜在动作空间
可学习状态条件先验"]
D --> E["高层策略
输入 机器人状态 全局位姿 球状态"]
E --> F["潜在动作 + 腕部修正
LAB 屏障约束探索"]
F --> G["Sim-to-Real
动力学随机化 + 观测噪声"]
G --> H["Unitree G1 真机
与人类连续多拍对拉"]
B -. "移除右腕控制并注入随机扰动" .-> C
图 3:LATENT 全流程——从动作碎片到真机对拉的三阶段流水线。
实验结果
仿真对比:与主流方法全面领先
实验平台为 29 自由度 Unitree G1,共 10,000 次试验,沿"正手/反手"与"前场/后场"两个维度评估。指标有四个:成功率 SR(回球落点距目标 2.5 米内)、落点误差 DE、平滑度 Smth(关节平均加速度,越低越自然)、平均力矩 Torque(越低越安全)。基线包括从零学的 vanilla PPO、Vid2Player3D 的 MotionVAE、对抗式动作先验的 AMP 与 ASE,以及同样走在线蒸馏路线的 PULSE。结果见表 A:PPO 与 MotionVAE 均无法收敛(N/A),LATENT 在全部 16 个指标组合上领先。
| 方法 | 正手 SR↑ | 反手 SR↑ | 前场 SR↑ | 后场 SR↑ |
|---|---|---|---|---|
| PPO | N/A | N/A | N/A | N/A |
| MotionVAE | N/A | N/A | N/A | N/A |
| AMP | 41.32 | 36.81 | 49.48 | 41.73 |
| ASE | 63.47 | 55.22 | 71.36 | 68.59 |
| PULSE | 71.85 | 63.38 | 74.52 | 72.94 |
| LATENT | 96.52 | 82.10 | 86.35 | 89.80 |
表 A:与基线方法的成功率对比(%,摘自论文表 3,10,000 次试验)。
结果背后的故事值得细读。vanilla PPO 失败说明没有任何动作先验时,网球回球这种高维稀疏奖励任务几乎学不动。MotionVAE 的失败暴露了"生成-跟踪解耦"的结构性缺陷:生成器产出的低质量运动难以跟踪,跟踪误差又反过来恶化自回归生成的运动,误差滚雪球直到机器人失衡——Vid2Player3D 当年靠残差力和不真实物理假设掩盖了这个问题,而 LATENT 要上真机,这条路被明确放弃。AMP 与 ASE 这类对抗式方法则在任务完成与动作先验遵循之间反复摇摆。最接近的 PULSE 输在两点:潜在空间的构造与采样方式导致动作质量偏低,且没有腕部修正通道,任务完成率因此受限。
消融实验:两个设计各管一摊
消融聚焦两个核心设计(表 B)。去掉腕部修正(w/o Corr.)后,正手成功率从 96.52 掉到 82.36,反手从 82.10 掉到 68.94——说明不完美数据中的腕部误差若不修正,会直接吃掉任务性能。去掉潜在动作屏障(w/o LAB)后,成功率只是小幅下降(正手 93.12),但平滑度从 25.61 恶化到 37.64,平均力矩从 7.40 涨到 12.53——LAB 的主要价值在动作质量:它阻止高层策略用抖动、费力的方式"钻"出任务成功。
| 变体 | 正手 SR↑ | 正手 DE↓ | 平滑度↓ | 力矩↓ | 反手 SR↑ |
|---|---|---|---|---|---|
| w/o Corr.(无腕部修正) | 82.36 | 3.41 | 26.72 | 8.85 | 68.94 |
| w/o LAB(无潜在动作屏障) | 93.12 | 2.17 | 37.64 | 12.53 | 76.96 |
| LATENT(完整) | 96.52 | 1.32 | 25.61 | 7.40 | 82.10 |
表 B:关键组件消融(摘自论文表 4)。
真机实验:与人类连续对拉
真机评测进行 20 场连续的人机对拉,来球位置与速度随机,成功标准放宽为"把球回到对方场地内"(真机落点精度低于仿真)。结果见表 C:完整方法的正手成功率 90.90%、反手 77.78%、前场 88.89%、后场 81.82%。两个 sim-to-real 消融的对比非常刺眼:去掉球的动力学随机化(w/o DR),各项成功率跌到 14.29%-28.57%;去掉球的观测噪声建模(w/o ON),反手直接归零。这组数字直接支撑了论文的核心工程判断——对球这种高速接触物体,充分的随机化与观测扰动建模比精确系统辨识更有效。
| 变体 | 正手 SR↑ | 反手 SR↑ | 前场 SR↑ | 后场 SR↑ |
|---|---|---|---|---|
| w/o DR(无球动力学随机化) | 16.67% | 25.00% | 28.57% | 14.29% |
| w/o ON(无球观测噪声) | 50.00% | 0.00% | 28.57% | 37.50% |
| LATENT(完整) | 90.90% | 77.78% | 88.89% | 81.82% |
表 C:真机成功率对比(摘自论文表 5,20 场连续人机对拉)。

图 4:真机对拉近景——正反手击球、动态步法与全身协调动作。
附加分析:场地覆盖与机器人自对弈
附录里还有两个有意思的实验。其一是场地覆盖:统计连续回球 8、16、80、400 拍时机器人骨盆位置的空间分布(图 5),可以看到策略在反复对拉中始终保持大范围场地覆盖与稳定的移动结构,会动态回位而不是被来球牵着走。其二是仿真中的机器人-机器人自对弈:两个策略实例隔网对抗,最多能打出 25 拍连续回合(图 6),说明策略的鲁棒性足以支撑闭环对抗,也为未来的自博弈训练打下基础。图 7 则展示了仿真中多样的击球事件。

图 5:连续回球 8/16/80/400 拍时的机器人位置覆盖热力图。

图 6:仿真中机器人-机器人自对弈及连续回合数分布。
代码开源情况与论文对应
代码仓库为 GalaxyGeneralRobotics/LATENT,基于 jax、brax、loco-mujoco、mujoco_playground 与 OpenTrack 构建。截至 2026 年 3 月 13 日,已发布的是动作跟踪代码库与一小部分人类网球动作数据;TODO 列表中还剩下:完整动作数据、预训练跟踪器、DAgger 在线蒸馏代码库、预训练潜在动作模型、高层策略训练代码、sim2real 设计以及更多 checkpoint。也就是说,论文三阶段中目前只有第一阶段可以开箱复现。
在已发布的代码里可以找到多处与论文的一一对应。第一处:论文第 3.2.1 节"移除右腕控制信号并施加随机扰动",对应 latent_mj/envs/g1_tracking/train/g1_env_tracking_tennis.py 中的 excluded_joints_config——enable_random_targets=True、reset_interval_range=[0.5, 2.0],即对被排除的关节(右腕)每 0.5-2 秒注入一次随机 PD 目标。第二处:论文表 2 的动力学随机化,对应 latent_mj/dr/domain_randomize_tracking.py,脚-地摩擦、关节摩擦损耗 ×U(0.75,1.25)、armature ×U(1.0,1.05)、连杆质量 ×U(0.75,1.25)、躯干质心抖动等项逐一对应。第三处:论文表 1 的正则与终止权重,对应任务配置里的奖励尺度:penalty_torque=-2e-5、dof_pos_limit=-10、dof_vel_limit=-5、collision=-10、termination=-200,且 ctrl_dt=0.02 与论文所述 50 Hz 控制频率一致。
README 还罕见地披露了真机实验的成本:50 余台动捕相机(2048×2048 分辨率、120 Hz)、19×15 米的捕捉区域,由第三方动捕服务商支持约 3 周,场地与系统租金约 35 万元人民币(约 5 万美元)。这个数字提醒我们,"与人类多拍对拉"的背后是真金白银的实验基础设施。
局限性
作者自述了两点。第一,真机部署强依赖光学动捕系统获取机器人与球的全局状态,未来可以引入主动视觉来摆脱这一依赖。第二,当前任务设定是"把随机初始化的来球回到目标位置",与真实的双人对拉仍有距离;要达到职业选手水平,可能需要引入多智能体训练框架。
从我们的角度看还有两点值得注意。其一,球的状态完全来自外部动捕(反光胶带加刚体估计),没有任何机载感知,4 帧滑动窗口的速度估计隐含了"窗口内球近似匀速"的假设,面对强旋转或轨迹突变可能失准。其二,整套修正机制围绕"右手持拍"这一单臂场景设计,被排除关节、修正通道与奖励都是为此定制的,迁移到双手或持物任务需要重新设计这些组件。
总结与展望
LATENT 的贡献可以概括为一句话:它证明了"不完美的数据 + 修正与组合机制"可以替代"完美的数据"。方法上,可修正潜在动作空间与潜在动作屏障分别正面处理了数据的不精确与不完整;工程上,它把高速、高精度的球类运动真实地落在了人形机器人上,并给出一套以随机化为核心的 sim-to-real 配方。论文认为该框架有望推广到足球、跑酷等同样缺乏完整高质量人类动作数据的场景。
展望方面,论文自己给出的方向是用主动视觉替代动捕、用多智能体框架逼近真实比赛;附录中 25 拍的机器人自对弈则暗示,自博弈式的迭代提升已经在射程之内。如果这三条线能接上,"人形机器人打网球"将从演示走向真正的对抗。
金句
"Imperfect as they are, quasi-realistic motion fragments still provide priors about human primitive skills."——不完美的数据也能撑起运动型技能,关键在于学习框架知道在哪里修正、在哪里组合。