PAPER DEEP DIVE
LAC:人形机器人全身线性与角度柔顺控制
LAC 提出通用人形全身柔顺控制器:在人体交互数据接触帧上施加采样的力/力偶扰动合成大规模柔顺响应数据,经教师-学生强化学习训练单一策略,实现对上半身外力的线性与角度柔顺、刚度全程单调调制,并在仿真、真机与遥操作移动操作中验证。
作者:Yang Liu, Zhongkai Gu, Wei Zhu, Mitsuhiro Hayashibe
机构:日本东北大学 神经机器人实验室(Neuro-Robotics Laboratory, Tohoku University)
论文:arXiv:2608.25405(2026-08-26,cs.RO) · 项目主页:lac-humanoid.github.io(含浏览器内交互演示) · 代码:尚未开源(GitHub 仅有项目页仓库) · 平台:Unitree G1(23 自由度)
一句话总结
LAC 用"被动让性运动链"把角度柔顺锚定到物理上可行的参考,再以约 1050 小时的柔顺运动增广数据训练单一师生强化学习策略,首次在 23 自由度人形机器人上同时实现可指令的线性与角度柔顺:五个刚度指令在全量程内单调生效,上身 11 个连杆均可响应外力,并落地到 VR 遥操作的移动操作任务。
研究背景与动机
人形机器人正从"模仿人类动作"走向"执行真实任务"。当前的动作跟踪控制器已经能在硬件上忠实复现人类运动数据,全身遥操作系统又把它们扩展为可交互的操作平台。但真实的移动操作任务不止于跟踪——它要求机器人与物体、工具、人持续地用力交互。而主流控制器的默认态度是把外力当扰动拒之门外:例如 FALCON 用考虑力矩的力课程训练机器人顶住强拉。当任务目标就是"抵抗"时这很合理,可一旦任务要求顺从——与人协作搬东西、递易碎物品——同样的控制器就表现得僵硬,产生不受控的接触力。
另一条研究线让机器人顺从外力:从经典阻抗控制,到四足平台与人形上的学习型控制器。但真实交互不只是"被推",还经常需要控制接触连杆的姿态。抓握类交互尤其典型:人拧机器人的手、机器人转门把手时,手应当位置不动而姿态顺从,这要求"高线性刚度 + 低角度刚度";反过来,用小臂抱箱子则需要高角度刚度把手臂端平。两种情形同时存在,意味着线性与角度刚度必须能被独立指令。
要在一个学习策略里同时实现两个通道,必须先生成大规模、物理可行、且能从本体感知中观测到的训练数据。线性通道的做法已有先例:SoftMimic 让接触连杆的位移与所受外力成正比,仿佛连杆是一个自由刚体,效果已被验证。但角度通道没有这么简单:连杆在外力下的旋转,本质上是它身后关节链的累积偏转,而这个偏转恰恰也是策略感知外力的主要信号。假如把目标旋转设成"外力对质心或某个固定点的力矩成正比",那么作用在该点两侧的同样大小的力会产生方向相反的目标旋转,而关节的实际偏转却几乎相同——这样的目标既不保证物理可行,也不保证可观测。正因如此,此前没有任何策略能在整个上身范围内实现可指令的线性与角度柔顺。
LAC 正是为了填上这个缺口:把采样的力事件与力偶事件施加在从人-物、人-人交互数据中提取的接触帧上;对每个事件,用一个处于指令刚度下的虚拟导纳加全身逆运动学,把它变成整个身体的可行柔顺动作;其中角度通道经由被动让性运动链驱动,把角度刚度指令锚定到物理参考上;最后用师生强化学习在增广数据上训练出单一策略。作者在仿真与真实的 23 自由度 Unitree G1 上做了大量验证。
预备知识:阻抗、导纳与"柔顺增广"范式
经典柔顺控制有两条路线。混合位/力控制直接调节接触力;阻抗控制则规定偏差与力之间的关系——位置偏差 $\mathbf{e}^x$ 对应恢复力 $K\mathbf{e}^x$,姿态偏差对应恢复力矩,刚度 $K$ 即"软硬的旋钮"。导纳控制是其对偶:给定外力,积分一个虚拟二阶系统得到目标位姿再让机器人去跟踪。LAC 的数据合成用的正是后者:外力进来,虚拟导纳算出"该让到哪",全身逆运动学把"让到哪"翻译成全身关节轨迹。
学习一侧,SoftMimic 确立了"柔顺运动增广"范式:离线用全身逆运动学合成参考运动在外力与指令刚度下应当如何变形,策略以复现合成响应为奖励来训练。这条路线的代价是数据:每一个动作片段、每一个接触位置都要单独训练一个策略,且角度柔顺缺乏实验证据。GentleHumanoid 把阻抗控制以统一弹簧模型融进通用动作跟踪策略,把交互力压在可调安全阈值内,但柔顺只发生在手臂、下身只负责平衡。CHIP 在跟踪训练中对末端施力、用事后重算的跟踪目标做观测,柔顺也局限于末端的线性响应。论文表 I 总结了这条能力边界:此前没有任何方法同时做到全身响应、线性柔顺、角度柔顺、单一策略四点齐备。
方法详解
图 1:柔顺运动增广总览。OMOMO(人-物)与 Inter-X(人-人)交互被重定向得到接触帧;在激活接触点施加采样的力或力偶事件;在指令刚度下由虚拟导纳生成目标位姿;全身逆运动学将其变为偏离原始动作(蓝色)的增广动作(灰色)。
flowchart TD
A["OMOMO human-object data
Inter-X human-human data"] --> B["OmniRetarget motion retargeting
to Unitree G1"]
B --> C["Contact frame library L:
q_ref, contact mask, point, inward normal"]
C --> D["Sample force or couple events
trapezoidal profile Pi(t)"]
D --> E1["Linear channel:
env spring displacement -> F_ext"]
D --> E2["Angular channel:
passive yielding chain
tau_u = J_p^T f + J_r^T tau
dq = Lambda_q^-1 tau_u
tau_vir = kappa Log(R_dR R_ref^T)"]
E1 --> F["Virtual admittance per contact link
stiffness K_rob, K_rob_theta
critical damping"]
E2 --> F
F --> G["Whole-body differential IK QP
mink + MuJoCo, velocity level"]
G --> H{"Feasibility gate:
force residual 5 N
torque residual 1.5 N m"}
H -- pass --> I["Accepted episode:
q_aug(t), v_aug(t), h_aug(t)
wrench profiles, stiffness commands"]
H -- fail --> J["Decay wrench by rho
resynthesize"]
J --> G
I --> K["RMA teacher-student RL:
PPO in Isaac Lab, 32768 envs
curriculum bins + symmetry augmentation"]
K --> L["Single 50 Hz policy
a in R^23 on Unitree G1"]
图:LAC 全流程。接触帧来自人类交互数据的重定向;力/力偶事件经虚拟导纳与全身 IK 合成柔顺动作,经可行性闸门筛选后进入师生强化学习训练。
第一步:从人类交互数据蒸馏接触帧。增广的起点是接触帧库 $\mathcal{L}$。作者用 OmniRetarget 把 OMOMO(人-物交互)与 Inter-X(人-人交互)重定向到人形机器人。Inter-X 的双人情形超出了 OmniRetarget 的原生能力,他们就把两个演员分别重定向,把其中一个重定向后的机器人冻结为带预设轨迹的环境物体,再针对它重新优化另一个机器人的动作——既抑制了相互穿透,又保住了接触。从重定向片段中只保留上身 11 个连杆中至少有一个正接触物体或伙伴的帧,每帧存为接触帧 $e=(\mathbf{q}^{\mathrm{ref}},m_j,\mathbf{p}_j,\hat{\mathbf{n}}_j)$:上身关节角 $\mathbf{q}^{\mathrm{ref}}\in\mathbb{R}^{11}$(增广时作为参考指令)、接触激活掩码 $m_j\in\{0,1\}$、以及每个接触连杆在其自身坐标系下的接触点 $\mathbf{p}_j$ 与朝内表面法向 $\hat{\mathbf{n}}_j$。
第二步:搭建参考轨迹。对采样到的接触帧,先构造一条 $T=500$ 帧(步长 0.02 s,共 10 s)的参考轨迹,表示没有外力时机器人要做的动作:底盘停在 $\mathbf{p}_b^{\mathrm{ref}}=(0,0,h^{\mathrm{cmd}})^\top$、姿态为单位阵,高度指令 $h^{\mathrm{cmd}}\sim\mathcal{U}(h_{\min},h_{\max})$ 在 0.56–0.78 m 间采样;双腿保持默认站姿,上身冻结在 $\mathbf{q}^{\mathrm{ref}}$。接触连杆 $j$ 的参考位姿由正运动学给出:
$$\big(\mathbf{x}_{j}^{\mathrm{ref}},R_{j}^{\mathrm{ref}}\big)=\mathrm{FK}_{j}\big(\mathbf{p}_{b}^{\mathrm{ref}},R_{b}^{\mathrm{ref}},\mathbf{q}^{\mathrm{ref}}\big), \tag{1}$$
其中 $\mathbf{x}_j^{\mathrm{ref}}$ 是连杆质心位置、$R_j^{\mathrm{ref}}$ 是其世界系姿态。合成阶段行走指令为零,行走能力在策略训练阶段才重新引入。
第三步:采样力/力偶事件。每个回合在每个激活接触点上放一个外力事件,同回合内事件类型一致(全是力事件或全是力偶事件),共用一个梯形时间轮廓 $\Pi(t)\in[0,1]$:从事件起始帧爬升、保持为 1、再释放,三段时长每回合适配重采样。力事件($\boldsymbol{\tau}_j^{\mathrm{ext}}\equiv\mathbf{0}$)沿固定方向 $\hat{\mathbf{d}}_j=R_j^{\mathrm{ref}}\hat{\mathbf{n}}_j$ 推。力的大小不直接采样,而是沿用 SoftMimic 的环境弹簧思路:给一个采样刚度 $K_j^{\mathrm{env}}$ 的虚拟环境弹簧,把设定点位移 $\Delta x_j$ 按 $\mathrm{Beta}(3,1)$ 分布采样在 $[x_j^{\min},x_j^{\max}]$ 上,其中 $x_j^{\max}=\min\big(F_{\lim}/K_j^{\mathrm{env}},\,d_{\lim}K_j^{\mathrm{rob}}/K_j^{\mathrm{env}}\big)$:
$$\mathbf{F}_{j}^{\mathrm{peak}}=K_{j}^{\mathrm{env}}\,\Delta x_{j}\,\hat{\mathbf{d}}_{j},\qquad \mathbf{f}_{j}^{\mathrm{ext}}(t)=m_{j}\,\Pi(t)\,\mathbf{F}_{j}^{\mathrm{peak}}. \tag{2}$$
这个上界在构造上就把峰值力压在 $F_{\lim}=70$ N 之内,并把指令下的准静态偏差 $\|\mathbf{F}_j^{\mathrm{peak}}\|/K_j^{\mathrm{rob}}$ 压在 $d_{\lim}$ 之内。力偶事件($\mathbf{f}_j^{\mathrm{ext}}\equiv\mathbf{0}$)则覆盖抓握类接触——力偶不依赖作用点:
$$\boldsymbol{\tau}_{j}^{\mathrm{ext}}(t)=m_{j}\,\Pi(t)\,\tau_{j}^{\mathrm{peak}}\,\hat{\mathbf{c}}_{j},\qquad \tau_j^{\mathrm{peak}}=\tau_s\,\beta_j,\;\beta_j\sim\mathrm{Beta}(3,1), \tag{3}$$
方向 $\hat{\mathbf{c}}_j$ 要么在单位球面上均匀采样,要么在事件起始时接触连杆自身关节轴附近的窄锥内采样(轴符号随机),峰值基准 $\tau_s=5$ N·m。
第四步:被动让性链——角度通道的核心创新。外力并不直接驱动角度响应。接触连杆不是自由刚体,而是机器人运动链的一部分,它在给定外力下能转多少,由它身后的关节决定。作者因此计算外力经被动让性链产生的旋转:力通过作用点的平移雅可比 $J_{p,j}$ 映射为上体关节力矩,力偶通过接触连杆的旋转雅可比 $J_{r,j}$ 映射;关节按真实机器人的关节级 PD 刚度 $\Lambda_q$ 偏转:
$$\boldsymbol{\tau}_{u}=\sum_{j}\Big(J_{p,j}^{\top}\,\mathbf{f}_{j}^{\mathrm{ext}}+J_{r,j}^{\top}\,\boldsymbol{\tau}_{j}^{\mathrm{ext}}\Big),\qquad \Delta\mathbf{q}_{u}=\Lambda_{q}^{-1}\,\boldsymbol{\tau}_{u}. \tag{4}$$
在偏转后的姿态上做正运动学,得到各接触连杆在外力下的姿态:
$$\big(\,\cdot\,,R_{j}^{\Delta}\big)=\mathrm{FK}_{j}\big(\mathbf{p}_{b}^{\mathrm{ref}},\,R_{b}^{\mathrm{ref}},\,\mathbf{q}^{\mathrm{ref}}+\Delta\mathbf{q}_{u}\big). \tag{5}$$
它相对参考姿态的偏差 $\Delta\boldsymbol{\theta}_j=\mathrm{Log}\big(R_j^{\Delta}(R_j^{\mathrm{ref}})^\top\big)$ 就是连杆在外力下的被动旋转,被用作角度响应的参考,再换算成驱动角度导纳的虚拟力矩:
$$\boldsymbol{\tau}_{j}^{\mathrm{vir}}=\kappa\,\Delta\boldsymbol{\theta}_{j},\qquad \kappa=30\ \mathrm{N{\cdot}m/rad}. \tag{6}$$
雅可比与作用点取上一帧解出的构型,偏转 $\Delta\mathbf{q}_u$ 则从参考姿态施加。这个设计直接回答了引言里提出的难题:若把目标旋转设成与"对某固定点的力矩"成正比,作用在该点两侧的同样大小的力会给出相反的目标、却引起相似的关节偏转,目标既不可行也不可观测;而被动让性链给出的旋转是关节真实偏转的产物,天然可行、天然可观测。一个顺带的工程结论:躯干身后只有单个腰偏转关节,几乎转不动,所以躯干不设角度刚度指令,只走线性通道。这正是五维刚度指令的由来——左臂 $(K_\mathrm{L}^{\mathrm{rob}},K_\mathrm{L}^{\mathrm{rob},\theta})$、右臂 $(K_\mathrm{R}^{\mathrm{rob}},K_\mathrm{R}^{\mathrm{rob},\theta})$、躯干仅 $K_\mathrm{T}^{\mathrm{rob}}$;线性量程 $[10,500]$ N/m,角度量程 $[10,100]$ N·m/rad。
第五步:虚拟导纳。每个激活接触连杆的质心处挂一个虚拟二阶系统,把驱动信号积分成目标位姿。设连杆当前解出的质心位姿为 $(\mathbf{x}_j,R_j)$、线速度与角速度为 $(\dot{\mathbf{x}}_j,\boldsymbol{\omega}_j)$,相对参考的偏差为 $\mathbf{e}_j^x=\mathbf{x}_j^{\mathrm{ref}}-\mathbf{x}_j$ 与 $\mathbf{e}_j^R=\mathrm{Log}(R_j^{\mathrm{ref}}R_j^\top)$,阻抗项以恰好等于指令值的刚度把连杆拉回参考位姿:
$$\mathbf{f}_{j}^{\mathrm{imp}}=K_{j}^{\mathrm{rob}}\mathbf{e}_{j}^{x}-K_{d}\,\dot{\mathbf{x}}_{j},\qquad \boldsymbol{\tau}_{j}^{\mathrm{imp}}=K_{j}^{\mathrm{rob},\theta}\mathbf{e}_{j}^{R}-K_{d}^{\theta}\,\boldsymbol{\omega}_{j}, \tag{7}$$
阻尼取临界阻尼:$K_d=2\zeta\sqrt{MK_j^{\mathrm{rob}}}$,$K_d^\theta=2\zeta\sqrt{IK_j^{\mathrm{rob},\theta}}$,$\zeta=1$,虚拟质量与惯量均为 1。虚拟动力学让恢复力与外部驱动平衡——线性通道受外力 $\mathbf{f}_j^{\mathrm{ext}}$,角度通道受虚拟力矩 $\boldsymbol{\tau}_j^{\mathrm{vir}}$——并用 $D$、$D_\omega$(均取 2.0)做数值稳定:
$$M\ddot{\mathbf{x}}_{j}^{\mathrm{vir}}=\mathbf{f}_{j}^{\mathrm{imp}}+\mathbf{f}_{j}^{\mathrm{ext}}-D\dot{\mathbf{x}}_{j}^{\mathrm{vir}},\qquad I\dot{\boldsymbol{\omega}}_{j}^{\mathrm{vir}}=\boldsymbol{\tau}_{j}^{\mathrm{imp}}+\boldsymbol{\tau}_{j}^{\mathrm{vir}}-D_{\omega}\boldsymbol{\omega}_{j}^{\mathrm{vir}}. \tag{8}$$
积分出的 $(\mathbf{x}_j^{\mathrm{vir}},R_j^{\mathrm{vir}})$ 就是该连杆这一帧的导纳目标。注意两个通道的不对称是刻意的:线性通道由外力直接驱动,角度通道由被动链换算出的虚拟力矩驱动——后者把"角度刚度指令"与"关节真实偏转"钉在了一起。
第六步:全身微分逆运动学。导纳目标由一个速度级 QP 追出(实现用 mink + MuJoCo):
$$\min_{\dot{\mathbf{q}}}\ \sum_{j}m_j\Pi(t)\Big[w_1^p\big\|\mathbf{x}_j^{\mathrm{vir}}-\mathbf{x}_j(\bar{\mathbf{q}})\big\|^2+w_1^o\big\|\mathrm{Log}\big(R_j^{\mathrm{vir}}R_j(\bar{\mathbf{q}})^\top\big)\big\|^2\Big]+w_b^p\|\mathbf{p}_b^{\mathrm{ref}}-\mathbf{p}_b\|^2+w_b^o\big\|\mathrm{Log}\big(R_b^{\mathrm{ref}}R_b^\top\big)\big\|^2+w_{\mathrm{post}}\|\mathbf{q}^{\mathrm{ref}}-\mathbf{q}_u\|^2 \tag{9}$$
约束包括:关节角限在 $[\mathbf{q}^-,\mathbf{q}^+]$(模型量程的 0.95 倍)、底盘高度限在 $[h_{\min},h_{\max}]$、横滚与俯仰固定为零、腿关节固定在站姿值、底盘平面/竖直/偏航速率分别限在 0.6、0.5、0.6。权重排序 $w_1^p,w_1^o=6\ \gg\ w_b^p,w_b^o=1.5,0.75\ \gt\ w_{\mathrm{post}}=0.2$:外力之下,优化器先让上身关节偏离参考、再动底盘,而接触目标始终被紧紧咬住。QP 的解即增广回合:上身关节角 $\mathbf{q}^{\mathrm{aug}}(t)$、底盘速度 $\mathbf{v}^{\mathrm{aug}}(t)$、底盘高度 $h^{\mathrm{aug}}(t)$;外力与底盘速度都换算到底盘系存储。
第七步:可行性闸门与衰减重试。合成的动作必须与指令柔顺自洽才会被保留。外力事件期间,阻抗驱动力必须与外力平衡:力侧要求 $\mathrm{mean}_t\big|\|\mathbf{f}_j^{\mathrm{imp}}\|-\|\mathbf{f}_j^{\mathrm{ext}}\|\big|\leq 5$ N,力矩侧要求 $\mathrm{mean}_t\big|\|\boldsymbol{\tau}_j^{\mathrm{imp}}\|-\|\boldsymbol{\tau}_j^{\mathrm{vir}}\|\big|\leq 1.5$ N·m;残差更大说明优化器没能实现指令响应,存下来就会歪曲这次交互。动作还须无自碰撞、总外力不超预算(合力 70 N、合力偶 10 N·m)。检查失败不丢弃回合,而是把所有激活外力乘以衰减因子($\rho_1,\rho_2,\rho_3=0.8,0.5,0.8$)重新合成——太强的外力会被一路衰减到机器人能实现的最强响应;衰减到弱下限(15 N / 0.5 N·m)以下才放弃本次重启。每个接触帧最多 $N_{\mathrm{iter}}=10$ 次重启,每次最多 $N_{\mathrm{decay}}=50$ 次衰减重试。
第八步:数据集。最终数据集(论文图 2)包含 378,051 个被接受的回合——278,258 个力事件回合、99,793 个力偶事件回合,每回合 10 s,合计约 1,050 小时。手与躯干拿到全部事件的 88%,这是源数据接触分布的自然继承;力偶事件只作用于手臂连杆(对应抓握交互),力事件覆盖全部 11 个连杆。训练前按峰值总量分课程箱:力事件 11 个 5 N 宽度的箱覆盖 $[15,70]$ N,力偶事件 8 个箱覆盖 $[0.5,10]$ N·m。
图 2:数据集构成。左:各上身连杆承受的力(红)与力偶(绿)事件数;中、右:力与力偶课程箱的占用,横轴为每回合峰值外力总量。
第九步:师生强化学习。训练时每个环境回放增广回合:存储的外力轮廓施加到仿真机器人的接触连杆上,回合同时提供指令与应实现的动作。增广动作以"指令-残差"形式使用:上身关节角拆成 $\mathbf{q}^{\mathrm{ref}}$ 与残差 $\mathbf{q}^{\mathrm{res}}=\mathbf{q}^{\mathrm{aug}}-\mathbf{q}^{\mathrm{ref}}$,高度拆成 $h^{\mathrm{cmd}}$ 与 $h^{\mathrm{res}}$,底盘速度拆成 $\mathbf{v}^{\mathrm{cmd}}$ 与 $\mathbf{v}^{\mathrm{res}}$(合成时 $\mathbf{v}^{\mathrm{cmd}}=\mathbf{0}$,训练时重新采样指令)。可部署观测为 95 维本体感知加指令:$\mathbf{o}_t=[\boldsymbol{\omega}_b,\mathbf{g},\mathbf{q}_t,\dot{\mathbf{q}}_t,\mathbf{a}_{t-1},\mathbf{v}^{\mathrm{cmd}},h^{\mathrm{cmd}},\mathbf{q}^{\mathrm{ref}},\log K_\mathrm{L}^{\mathrm{rob}},\log K_\mathrm{L}^{\mathrm{rob},\theta},\log K_\mathrm{R}^{\mathrm{rob}},\log K_\mathrm{R}^{\mathrm{rob},\theta},\log K_\mathrm{T}^{\mathrm{rob}}]\in\mathbb{R}^{95}$,五个刚度取对数后直接作为观测;actor 消费 10 帧历史。特权观测 $\mathbf{o}_t^{\mathrm{priv}}\in\mathbb{R}^{88}$ 含真实底盘姿态与线速度、各上身连杆的外力/力偶、以及三个残差,供编码器消费 5 帧历史。训练采用 RMA 式两阶段师生方案:第一阶段特权编码器把 $\mathbf{o}_{t-4:t}^{\mathrm{priv}}$ 压成潜变量 $Z_t\in\mathbb{R}^{64}$,actor 以 $\mathbf{o}_{t-9:t}$ 与 $Z_t$ 为条件与编码器、非对称 critic 一起用 PPO 训练,同时一个估计器被回归去从 64 帧(1.28 s)本体历史复现 $Z_t$;第二阶段冻结编码器与 actor,用估计值 $\hat{Z}_t$ 收集 rollout 继续回归。部署的就是"估计器 + actor",纯本体感知驱动,50 Hz 输出 $\mathbf{a}_t\in\mathbb{R}^{23}$,缩放后叠加到默认姿态,由关节级 PD 跟踪。
第十步:奖励与训练细节。奖励分三组:跟踪项用高斯核对准底盘速度对 $\mathbf{v}^{\mathrm{tar}}$、高度对 $h^{\mathrm{aug}}$、11 个上身关节对 $\mathbf{q}^{\mathrm{aug}}$;步态项是标准双足整形(跨步周期、摆动高度、接触时序、落脚位置),按站/走标签路由——目标速度三分量都在 0.1 内记为站姿,此时行走项关闭、速度目标清零、奖励双脚落地;辅助项包括底盘姿态、能耗、动作平滑、逼近关节极限的惩罚与存活奖励。训练在 Isaac Lab 上进行:4 块 GPU 各仿真 8192 个环境(共 32,768),每卡约 32 GB 显存,两阶段分别 20,000 与 10,000 次迭代。外力强度按课程箱调度,从最弱箱起步、跟踪奖励达标后逐箱解锁,第二阶段全开。两个数据不平衡问题各有对策:接触库左右不对称(右手事件更多),PPO 更新时做对称增广,否则会训出不对称步态;手与躯干主导事件分布,均匀采样会饿死肘与肩,于是按"最稀有接触连杆事件数递减"的权重混入均匀底来重采样回合。
实验结果
线性刚度通道。固定五维指令的其余四维,把左臂线性刚度在全量程 $[10,500]$ N/m 内扫描,用三种 20 N 峰值的力(前向、侧向、竖直向下)分别测试。结果(图 3):接触连杆质心位移随刚度单调下降,而姿态变化在全量程几乎不动——两个通道解耦了。竖直方向的位移调制范围比水平方向窄:软端要站稳,质心下降被限制在约 60 cm;硬端电机除了外力还得对抗手臂自重,位置更难守住。
图 3:线性刚度指令的效果。力峰值时刻手连杆的质心位移(虚线空心)与姿态变化(实线实心)随臂线性刚度(对数轴)的变化。
角度刚度通道。把臂角度刚度在 $[10,100]$ N·m/rad 内扫描,测三种载荷:左手 20 N 竖直向下力、左手绕腕关节末轴 4 N·m 力偶、右掌 20 N 水平右向拉力。结果(图 4):姿态变化随角度刚度单调下降,位置响应保持良好。以力偶测试为例,姿态变化从刚度 10 时的 $60^\circ$ 降到 100 时的 $17^\circ$。侧拉测试中质心位移从硬端到软端多让出约 15 cm——手臂只有 5 个自由度,IK 优化里实现大姿态变化难免让渡一点位置。作者还在真机上复刻了侧拉测试:人通过测力计拉机器人右掌,实测曲线(橙色)与仿真曲线(蓝色)在趋势与量程上吻合,说明策略完成了 sim-to-real 迁移。
图 4:角度刚度指令的效果。姿态变化(左)与质心位移(右)随臂角度刚度(对数轴)的变化;橙色为真机实测。
与基线的定性对比。在 MuJoCo 里对比三个开源基线:SoftMimic、GentleHumanoid、FALCON。协议:机器人原地站立,对掌施加基线系下 $[40,0,-15]$ N 峰值的力——1 s 爬升、1 s 保持、2 s 释放。SoftMimic 有柔顺响应:弯腰前探,但双腿想留在原地,力越来越大最终把双脚拖离地面、向前跳了出去;GentleHumanoid 下身持续跟踪原参考动作,表现类似;FALCON 毫无柔顺,被推着向前滑。LAC 则随力增大主动迈步向前、伸臂、降重心,力减小后又走回初始状态——全程柔顺、自然、保持平衡。
图 5:基线对比。同一外力(黄色箭头)作用于各机器人左掌;每块面板叠加一次试验的三个时刻(蓝=初始,实心=力峰值,橙=结束)。
与基线的定量对比。把各方法自己的刚度指令从低到高取三档(LAC 调接触连杆所在组的线性刚度,SoftMimic 调全局刚度,GentleHumanoid 调力阈值且高值对应更硬,FALCON 无指令可作固定参照),在三个场景测力峰值时刻接触连杆质心位移(三试平均):左手 30 N 前拉、右肘 30 N 右拉、躯干 20 N 后推。结论(图 6):LAC 是唯一在三个场景里位移都随指令单调下降的方法,且覆盖范围最宽——躯干位移从软端 49 cm 压到硬端 8 cm。SoftMimic 与 GentleHumanoid 只能在更窄的范围内调制,且两者的指令在躯干后推场景完全失效;FALCON 每个场景只给出一个固定响应。总体上,LAC 在软端给出最大位移,在硬端与 FALCON 相当甚至更硬。
图 6:定量对比。各方法三档刚度指令下的接触连杆质心位移(三试平均)。
| 能力维度 | SoftMimic | GentleHumanoid | CHIP | LAC(本文) |
|---|---|---|---|---|
| 外力作用部位 | 仅双手 | 双臂 | 双手 | 整个上身(11 连杆) |
| 全身响应 | ✓ | ✗ | ✓ | ✓ |
| 线性柔顺 | ✓ | ✓ | ✓ | ✓ |
| 角度柔顺 | –(无实验证据) | ✗ | ✗ | ✓ |
| 单一策略 | ✗(每片段/每手一个) | ✓ | ✓ | ✓ |
表 1:与既有工作的能力对比(论文表 I)。
| 符号 | 含义 | 取值 | 单位 |
|---|---|---|---|
| $T,\Delta t$ | 帧数 / 步长 | 500,0.02 | –,s |
| $h_{\min},h_{\max}$ | 底盘高度范围 | 0.56,0.78 | m |
| $K_j^{\mathrm{env}}$ | 环境弹簧刚度 | 对数均匀 $[10,500]$ | N/m |
| $F_{\lim}$ / 合力上限 | 单点峰值力 / 合力预算 | 70 / 70 | N |
| $\tau_s$ / 合力偶上限 | 力偶峰值基准 / 合力偶预算 | 5 / 10 | N·m |
| $\Lambda_q$(腰/臂) | 关节 PD 刚度 | 40.2,14.3 | N·m/rad |
| $\kappa$ | 虚拟力矩增益 | 30 | N·m/rad |
| $K_j^{\mathrm{rob}}$ | 机器人线性刚度指令 | 对数均匀 $[10,500]$ | N/m |
| $K_j^{\mathrm{rob},\theta}$ | 机器人角度刚度指令 | 对数均匀 $[10,100]$ | N·m/rad |
| $M,I$ / $\zeta$ / $D,D_\omega$ | 虚拟质量惯量 / 阻尼比 / 虚拟阻尼 | 1.0,1.0 / 1.0 / 2.0,2.0 | kg,kg·m² / – / N·s/m,N·m·s/rad |
| $w_1^p,w_1^o$ / $w_b^p,w_b^o$ / $w_{\mathrm{post}}$ | 接触任务 / 底盘锚定 / 姿态权重 | 6,6 / 1.5,0.75 / 0.2 | – |
| $\bar v_{xy},\bar v_z,\bar\omega_z$ | 底盘速率上限 | 0.6,0.5,0.6 | m/s,rad/s |
| $\rho_1,\rho_2,\rho_3$ | 衰减因子 | 0.8,0.5,0.8 | – |
| 弱下限(力/力偶) | 衰减放弃阈值 | 15,0.5 | N,N·m |
| $N_{\mathrm{iter}},N_{\mathrm{decay}}$ | 重启 / 衰减重试次数 | 10,50 | – |
| 数据集 | 接受回合(力/力偶) | 378,051(278,258 / 99,793),约 1,050 h | – |
| 训练 | Isaac Lab 环境数 / 两阶段迭代 | 4×8192 / 20,000 + 10,000 | – |
表 2:柔顺运动增广与训练的关键参数(论文表 II 摘要加训练配置)。
真机表现。在真实 G1 上的试验(图 7)覆盖三类情形。其一,全身柔顺响应:低刚度指令下,前拉左手使机器人伸臂并迈步向前;侧拉右肘使它抬肘并产生向右的底盘速度;肩部后推撤力后它向前回到原位;下压躯干使它屈膝降低重心。其二,角度刚度的价值在"拧手"试验里最直观:人全力拧机器人左手,角度刚度 10 时掌心被翻到朝上($84^\circ$),100 时只转了 $15^\circ$;同一线性刚度下,仅角度指令就能重塑响应。抱物试验进一步说明其任务意义:4 kg 物体放在臂上,低角度刚度(10)端不平、物体滑落,高角度刚度(100)稳稳抱住。其三,VR 遥操作移动操作:双臂低刚度便于搬运瑜伽球这类软物——从矮椅上抱起递给另一个人,接触不压变形无需精调指令;高刚度则用于搬重箱上桌、推开弹簧门这类力气活。
图 7:真机表现。(a) 手、肘、肩、躯干受外力时的全身柔顺响应;(b) 同一线性刚度下角度刚度单独重塑响应——低指令掌心被拧转 84°、4 kg 物体滑落,高指令只转 15°、物体稳抱;(c) VR 遥操作:软瑜伽球用低刚度,重箱与弹簧门用高刚度。
局限性
作者自述了三点不足。其一,刚度指令目前由操作员设定,下一步自然是让机器人根据任务语境自主、动态地调整刚度——遥操作场景下这相当于把"软硬旋钮"也交给策略去学。其二,当前观测里没有触觉信息,外力只能靠本体感知间接估计,加入触觉应能改善外力估计。其三,方法面向人形下身(底盘速度与高度指令),但正因如此也可能推广到四足或轮式底盘的移动操作平台——这是展望,尚无实验支持。在作者自述之外,两点值得补充:一是全部柔顺响应都在离线合成的准静态框架内生成,梯形外力事件的时间尺度(爬升 0.5–1 s 量级)远慢于真实碰撞冲击,策略对高频突加载荷的表现未经检验;二是角度通道经由关节级 PD 刚度的被动链换算,其参考质量依赖 $\Lambda_q$、$\kappa$ 等人工设定参数与接触帧库的覆盖度,肘、肩这类稀有接触连杆虽然做了重采样补偿,其角度柔顺精度仍可能弱于手部。
总结与展望
LAC 的贡献可以浓缩为两件事:一个通用学习型控制器,能以全身自由度对作用于上身不同位置的一个或多个外力做出柔顺响应;以及据作者所知,第一个在人形机器人上同时实现可指令线性与角度柔顺、并在仿真与真机上双重验证的方法。技术路线上,"被动让性链"是解开角度通道死结的关键一步——它把角度刚度指令锚定到关节真实偏转上,使目标既可行又可观测;数据侧 378,051 回合、约 1,050 小时的增广库与可行性闸门保证了监督信号的质量;训练侧的指令-残差分解、对数刚度观测、课程箱、对称增广与稀有接触重采样则把这些数据转化成了一个 50 Hz、23 维输出的单一策略。展望方向已经清楚:自主刚度决策、触觉外力估计、以及向四足/轮式底盘的迁移。如果这些缺口被逐一填上,"可指令的柔顺"有机会像"可指令的速度"一样,成为人形控制器的标准接口。
金句
"接触连杆不是自由刚体,而是运动链的一部分——它在外力下能转多少,由它身后的关节决定。LAC 没有假装连杆自由,而是让被动链替它回答这个问题:角度柔顺的参考,必须长在机器人的身体里。"



