论文信息
- 题目:SOLO: Stable Omni-terrain Long-Horizon Perceptive Humanoid Locomotion
- 作者:Pihai Sun、Gang Han、Jingkai Sun 等
- 版本:arXiv v2,2026 年 8 月 31 日
- 论文:arXiv:2608.26583
- 项目页:SOLO Project Page
- 机器人:Omni humanoid,25 个策略控制关节
- 关键词:Query Reconstructor、TA-MSE、Teacher–Student、Perceptive Humanoid Locomotion、Long Horizon
本文的三个动态图均在浏览器本地运行,不加载第三方绘图库。动画用于解释机制;带有论文数字的图会明确标注数据口径。系统开启“减少动态效果”时,页面自动保留静态状态。
0. 一张图先看清 SOLO 在修什么
传统感知运动链条里有两个容易被忽略的“慢性误差源”:
深度历史 |
SOLO 在两个位置分别动刀:
本体 × 10
检索证据
25-D 动作
humanoid
| 问题 | 常见做法 | SOLO 的修改 | 直接服务的场景 |
|---|---|---|---|
| 地形边缘被抹平 | 共享 latent 一次解码整张图 | 每个网格单元用自己的 Fourier query 检索传感器 token | 台阶边缘、窄踏石、坑边、平台边缘 |
| 当前动作看似相近,未来却越走越偏 | 只做同一时刻的 action MSE | 把下一状态的师生分歧加到当前 transition reward | 连续地形切换、长距离无重置行走 |
| 训练与部署输入不一致 | Teacher 永远吃特权高度图 | 最后阶段接入 QR,并在 Student 自己的 on-policy 数据上更新 | 深度噪声、延迟、遮挡下的 Sim-to-Real |
关键是二者互补:QR 减少“看错地形”,TA-MSE 减少“这一步暂时没错、但把未来带坏”。
1. 长时程不是把单个障碍重复很多次
如果一个 5 m 测试段成功率为 ,不能简单认为 1.5 km 的成功率就是 :真实路线的地形、速度、恢复机会并不独立同分布。这个算式不适合预测论文结果,却揭示了一个工程事实:
只要失败风险会沿闭环积累,短测试中看不明显的小差距,在长距离中就会变得重要。
人形机器人每一步都同时改变三件事:
- 下一次相机的视角;
- 下一时刻的身体状态与落脚可达域;
- Student 接下来将访问的状态分布。
所以“感知误差”和“控制误差”不是两条互不相干的链。脚踩偏一点会让机身姿态改变,姿态改变又会让下一帧深度更难解释。这正是论文用 long-horizon fragility 描述的问题。
2. 输入、输出与部署边界
Teacher 观察为
其中 是特权高度图, 是真值基座速度, 是 84 维本体与命令信息:
Student 看不到 与真值 ,只使用深度历史与本体历史。部署时的数据形状是:
| 信号 | 设置 | 作用 |
|---|---|---|
| 胸前深度相机 | RealSense D455;原始 ,网络输入 | 提供自我中心局部几何 |
| 深度历史 | 4 帧,stride 4 | 用时间差辅助几何和运动估计 |
| 本体历史 | 84 维 × 10 帧 | 在视觉退化时保留身体动态线索 |
| QR 输出 | 高度图 + 3-DoF 基座速度 | 给 Student 一个显式、紧凑的运动相关表示 |
| Policy 输出 | 25 维默认关节位置偏移 | 控制双腿、腰部与双臂 |
| 控制频率 | 50 Hz | 每 20 ms 产生一次策略动作 |
这里的“无外部定位”容易被误读。它表示真机部署不使用 motion capture、外部里程计或外部地图;并不表示系统没有 IMU、本体状态估计和相机输入。
3. Query Reconstructor:为什么“每个格子自己提问”会更清楚
3.1 Dense decoder 的共享瓶颈
传统重建器常把整段深度历史压成一个共享 latent,再把 latent 上采样成整张高度图。大坡面很容易重建,因为它主要是低频结构;台阶竖直边缘、踏石边界和窄坑则属于高频细节,很容易在压缩和上采样中被平均掉。
对于 locomotion,这不是普通的视觉模糊。高度差若刚好落在脚掌边缘,几厘米误差就可能把“完整支撑”改成“跨边支撑”。
3.2 QR 的数据流
SOLO 先把每帧深度变成视觉 token,再把同一时刻的本体特征与时间编码加入 memory:
4 帧 depth ─→ ResNet ─→ visual tokens ┐ |
网格共有
个单元。第 个 query 带着自己的空间坐标去 memory 中寻找相关证据,而不是让一个共享向量同时记住 512 个位置的所有细节。
同一段地形:共享平滑与逐格查询的差别
这张动画是机制示意,不是论文数据复刻。它强调的是:QR 不是凭空获得更多传感器信息,而是改变“哪里用哪些证据”的读取方式,让不同网格不必竞争同一个过度压缩的全局表示。
3.3 重建目标和训练位置
QR 同时监督高度与基座速度:
第三阶段里,QR 在“已经接入 QR 的 Student”产生的 on-policy buffer 上继续训练。策略读取的是停止梯度后的 QR 预测,因此策略 loss 不会借道修改 QR。这个细节非常实用:
- QR 学的是 Student 真正会访问的相机视角;
- 策略不能通过扭曲地图来投机降低控制 loss;
- 感知与控制的数据分布联合变化,但优化目标保持解耦。
4. TA-MSE:为什么同一时刻动作接近还不够
普通蒸馏在 Student 自己访问的状态上,最小化
它只回答:“在当前状态,两者动作有多像?”
它没有回答:“Student 刚才那个动作,把系统带到的下一状态是否仍容易被 Teacher 接管?”
SOLO 先在下一状态计算师生分歧,并停止梯度:
再把它接到前一个 transition:
这就是论文所谓“trajectory-aware”的最小改动。奖励本身只向前看一步,但 PPO 的 GAE 会把后续分歧继续向更早动作传播。对应的模仿回报可以写成:
未来第几步的分歧,会怎样回到当前动作
4.1 为什么要停止梯度
如果不做 ,同一个分歧既作为监督 loss 又沿 reward 路径参与策略梯度,优化含义会变得混乱。停止梯度后:
- 当前状态的 action MSE 仍负责直接模仿;
- 分歧数值只被当成环境返回的代价;
- PPO/GAE 负责把这项代价分配给此前动作。
完整目标为
因此三个 baseline 的区别非常清楚:
| 方法 | 当前动作 MSE | 下一状态分歧 reward | PPO task reward |
|---|---|---|---|
| PPO | — | — | ✓ |
| MSE + PPO | ✓ | — | ✓ |
| TA-MSE | ✓ | ✓ | ✓ |
TA-MSE 没有增加新 critic、显式动力学模型或额外 Teacher rollout。Teacher 只在 Student rollout 已访问的状态上提供标签。
5. 三阶段训练:每一步在消除什么分布差
| 阶段 | Terrain 输入 | Policy 初始化 | 优化目标 | 解决的问题 |
|---|---|---|---|---|
| I. Teacher | 特权真值高度图 + 真值速度 | 从零 | AMP 正则化 PPO | 先获得稳定、自然的全地形技能 |
| II. Privileged distillation | 仍用特权地形 | 迁移形状兼容的 AME 权重;LSTM 与 action head 随机 | TA-MSE + PPO | 让 Student 在自己的轨迹上接近 Teacher |
| III. QR fine-tuning | QR 预测高度图 + 速度 | 继承阶段 II | Policy 继续 TA-MSE;QR 用 on-policy 重建 loss | 对齐仿真部署输入与实际访问视角 |
部署时只保留
Depth + proprioception → QR → Student policy → joint targets |
Teacher、privileged critic、AMP discriminator 和真值标签全部删除。
5.1 网络与训练预算
- Teacher action MLP:;
- Student action MLP:;
- Student 本体旁路:单层 LSTM,input 84、hidden 128;
- QR:、8 heads、4 层 memory self-attention、2 层 cross-attention;
- QR 参数量:0.54 M;
- 训练使用 4 张 H800;
- Teacher:4096 env/GPU,50k iterations,约 90 h;
- 特权蒸馏:4096 env/GPU,20k iterations,约 64 h;
- QR fine-tuning:2048 env/GPU,5k iterations,约 20 h。
这说明方法虽然部署端很轻,但完整训练并不轻量。复现时最合理的顺序不是直接申请四卡跑满,而是先在小规模地形上验证:
- cell query 是否真的比 dense decoder 保住边缘;
- TA reward 的索引有没有错一位;
- Student rollout 上的 Teacher label 与 done mask 是否对齐;
- QR 输入延迟与相机历史是否和部署一致。
6. 公式究竟服务到哪段代码
把它映射到 rsl_rl/legged_gym 风格的训练循环,最关键的是 transition 对齐:
for t in range(num_steps_per_env): |
上面是概念伪代码,不是作者公开实现。它暴露出最容易写错的三处:
- 必须挂到 ,不能挂到 ;
- terminal transition 需要正确 mask,避免把 reset 后新 episode 的分歧算回旧 episode;
- 计算 disagreement 时不应让梯度穿过 reward 数据通路。
如果想继续追 storage → GAE → PPO update 的真实张量形状,可以接着看 从公式走进 rsl_rl 与 legged_gym 的 PPO 训练闭环。
7. Reward 为什么也在强调“别踩边缘”
SOLO 的 task reward 并不只追踪速度。一个很能说明设计意图的项是 foothold gradient penalty:
权重为 。若脚下某方向的局部高度差跨过 5 cm 阈值,对应 。前后边缘比左右边缘权重更高。
这把 QR 和控制目标真正接了起来:
QR 保住高度不连续 |
其他关键项还包括:腰/头触地终止 、foot stumble 、非足部接触、腾空、脚滑、接触力、动作变化率和能耗。这里的重点不是背权重,而是理解:更清楚的地图只有在 reward 或策略目标真正关心落脚几何时才有价值。
8. 地形课程和 Sim-to-Real
训练地形是 的程序化 curriculum 网格,每块 m,水平分辨率 5 cm、竖直分辨率 5 mm。10 行增加难度,17 列覆盖不同地形族:
- 上下楼梯共 35.3%,最高台阶 25 cm;
- 上下坡共 11.8%;
- 方台与坑共 11.8%;
- 随机网格 5.9%;
- 随机粗糙地面 11.8%;
- gap 5.9%,宽度最大 50 cm;
- stepping stones 11.8%,石块最窄 20 cm、间隙最大 30 cm。
随机化同时覆盖两类误差:
| 类别 | 例子 |
|---|---|
| 动力学 | 摩擦、腰部质量与 CoM、PD 增益、初始位姿、10–15 s 随机推扰 |
| 感知 | 本体噪声、相机外参、0–3 帧深度延迟、值/边缘噪声、缺失像素、盲区与模糊 |
值得注意的是,最高难度仿真 stress test 关闭了噪声和推扰,用来更干净地比较重建器;真实部署的鲁棒性则来自完整训练随机化与系统闭环。两类证据不能混为一张表。
9. 实验数字:哪些结果最能支持方法
9.1 高度重建
在难度 0.99 的 8 类地形上,平均高度 L1 为:
| 重建器 | 平均 L1(cm) | Gap | Random Grid | Stones |
|---|---|---|---|---|
| START | 7.59 | 10.11 | 5.18 | 14.76 |
| DPL | 9.26 | 10.62 | 8.09 | 12.75 |
| QR | 2.29 | 2.27 | 2.43 | 5.92 |
因此论文摘要中的“3.3–4.0 倍”来自 与 。这不是“提升 330%–400%”,而是误差缩小到基线的大约 与 。
在参数量受控的离线比较里,QR 为 0.54 M 参数,平均 L1 cm、Edge F1@1 ;DPL 为 0.78 M 参数,对应 cm 与 。QR 的优势不仅是平均高度,更明显地落在边缘质量上。
9.2 最高难度运动 stress test
每种地形 100 次 rollout、最长 30 s、通过 5 m 算成功;命令前进速度为 0.4–1.0 m/s,侧向和转向为零,并关闭噪声和推扰。
别只看均值:窄踏石才是重建器的压力点
| 指标 | START | DPL | SOLO / QR |
|---|---|---|---|
| 八类地形平均成功率 | 75.0% | 75.6% | 97.5% |
| Stepping stones | 3% | 0% | 96% |
| 各方法最差地形 | 3% | 0% | 92% |
楼梯上的 foot stumble 和 foothold-gradient 代价也全面降低;dense baselines 为 QR 的 1.78–10.83 倍。这比只看总 reward 更接近方法想解决的因果点:地图边缘更清楚,脚跨边支撑更少。
9.3 TA-MSE 的证据强度
主 curriculum 曲线中,TA-MSE 最终约到 5.5,MSE+PPO 约 5.1,纯 PPO 低于 5.0 且更震荡。附录的三随机种子、缩减算力对比中,level-9 stepping stones 为:
| 方法 | 成功率 |
|---|---|
| MSE + PPO | % |
| TA-MSE | % |
增量为 个百分点。简单/中等地形接近饱和,个别项目并非 TA-MSE 更高,例如 Down-25 中 TA-MSE 为 97.92%,MSE+PPO 为 100%。因此更稳妥的判断是:
TA-MSE 对“未来动作分歧会放大的难地形”最有帮助,但现有消融还不足以证明它在每种地形上都严格占优。
10. 真机结果:1.5 km 到底证明了什么
SOLO 使用胸前单目深度输入(D455 depth stream)和本体状态,zero-shot 部署完成:
- 一次无重置、无人工扶持的连续 1.5 km 户外路线;
- 自然楼梯、斜坡、草地过渡与不平地面;
- 室内连续混合路线:上楼、踏石、45 cm gap、下楼、可移动障碍;
- 七类隔离地形各 10 次:除踏石 9/10 外,其余均为 10/10,总计 69/70。
这组证据可以支持:
- 单深度相机 + 本体输入的完整系统具备很强的连续闭环稳定性;
- QR 与 Student 可以在 50 Hz 的板载预算里工作;
- 训练中的噪声、延迟与动力学随机化足以支撑有代表性的 zero-shot 真机迁移。
但它不能单独支持:
- “任意 1.5 km 路线都能完成”:论文展示的是一条连续路线,不是多路线重复统计;
- “已经自主导航”:平面速度命令由人给出,策略负责按命令稳定穿越;
- “完全不依赖状态估计”:本体与重力方向仍是输入;
- “仿真 97.5% 等于户外长程成功率”:前者是 5 m、30 s、关闭噪声的 stress test。
把展示、受控仿真和重复真机试验分开读,反而更能看到论文证据链的完整性。
11. 板载延迟为什么不是瓶颈
在 Jetson AGX Thor MAXN 上,TensorRT batch-1 推理为:
- network inference: ms;
- p95:1.59 ms;
- 完整 pipeline: ms;
- TensorRT engine:7.56 MB。
相对 50 Hz 的 20 ms 控制周期,网络本身余量很大。工程上的剩余风险更可能来自相机采集、帧同步、缓冲延迟、状态估计和控制通信,而不是一次 forward。
12. 我认为最值得复现的四个小实验
实验 A:只验证“边缘”,不要先训机器人
生成楼梯、窄平台和踏石高度图,构造同一批深度历史,比较 dense decoder 与 cell-query decoder:
- overall height L1;
- 靠近高度不连续处的 edge L1;
- Edge F1;
- 参数量与推理延迟。
如果 overall L1 接近而 Edge F1 明显不同,才能说明表示真的服务于落脚而非只提高平均像素分数。
实验 B:检查 TA reward 是否错位
做一个长度 8 的玩具 rollout,只在 注入一次分歧,打印每个 transition 的 imitation return。它应该按 向前衰减,并在 episode boundary 截断。本文动态图 2 就是这个单元测试的可视化版本。
实验 C:分开记录当前 MSE 与未来分歧
若 action MSE 持续下降但 next-state disagreement 不降,说明 Student 会在眼前模仿,却仍把系统带向 Teacher 难以纠正的状态。只记录合并后的 PPO reward 会掩盖这个问题。
实验 D:让重建误差与脚下事件对齐
按时间同步记录:
edge reconstruction error |
然后检查“边缘误差升高 → 跨边支撑 → stumble/跌倒”是否真的存在。只有这条链成立,QR 的视觉指标才与运动收益形成闭环。
13. 与已有笔记的连接
SOLO 可以放进这条演进线:
鲁棒感知运动:视觉坏了时靠本体记忆与可信度 |
- Learning Robust Perceptive Locomotion 更关心“视觉失真时相信谁”;
- AME-1 更关心“策略该看地图的哪里”;
- AME-2 增加全局上下文和显式不确定性;
- Parkour in the Wild 说明多专家蒸馏之后为何还要用 RL 修正学生;
- PPO 代码闭环 对应 TA-MSE 真正进入 rollout、GAE 与 update 的位置。
SOLO 与 AME 系列都使用 attention,但 query 的语义不同:
| 方法 | 谁发出 query | 想回答的问题 |
|---|---|---|
| AME-1 | 本体状态 | 当前身体状态下,地图哪些位置与动作最相关? |
| AME-2 | 本体 + 全局地形上下文 | 当前整体地形中,哪些局部区域最值得关注? |
| SOLO QR | 每个高度图单元的空间坐标 | 传感器历史中,哪些证据能重建我这个格子的高度? |
一个是为 policy 选信息,一个是为 reconstructor 恢复空间位置,不能因为都有 cross-attention 就视为同一模块。
14. 局限与我仍然想追问的地方
论文明确列出的边界包括:
- 仍是 2.5D 高度图,每个 只能表达一个地面高度;
- 胸前前视相机存在后方盲区;
- 透明、反光表面会破坏深度;
- 目前依赖人工速度命令,没有自主路径规划;
- 更长记忆、体素表示或互补传感器仍是后续方向。
此外,我会保留四个判断:
- 1.5 km 很有说服力,但仍是一条路线的一次连续系统展示;
- 跨论文 long-horizon 对比涉及不同机器人、路线与协议,只适合提供背景;
- 4 张 H800、约 174 h 的三阶段训练成本不低;
- 截至本文整理时,论文和项目页没有给出公开代码入口,因此本文伪代码只表达算法索引,不能替代作者实现。
15. 最后的理解
SOLO 最让我受用的地方,是它把“长期稳定”拆成两个非常具体的局部问题:
空间上,不要让一张共享表示抹掉脚真正关心的边缘;时间上,不要只问当前动作像不像 Teacher,还要问它把未来带到了哪里。
QR 并没有解决所有深度感知问题,TA-MSE 也没有变成完整的轨迹模型。两者都选择了相对小、容易接入现有 teacher–student PPO 系统的改动:
per-cell query → 少丢一点动作关键几何 |
当单步误差不能完全消灭时,长时程系统更现实的目标就是:让误差更少发生、发生后更难积累,并尽快回到 Teacher 熟悉的状态分布。SOLO 的 1.5 km 展示,正是这套思路在完整真机闭环中的一次强证据。
参考资料
- Sun, P., Han, G., Sun, J., et al. SOLO: Stable Omni-terrain Long-Horizon Perceptive Humanoid Locomotion. arXiv:2608.26583v2, 2026.
- SOLO authors. SOLO Project Page. 2026.
- Peng, X. B., et al. AMP: Adversarial Motion Priors for Stylized Physics-Based Character Control. ACM TOG, 2021.