Learning Agile Perceptive Traversal of Sparse 3D Structures for Humanoids
Efe Ongan, Chong Zhang, Boyang Sun, Andrei Cramariuc, Cesar Cadena, Marco Hutter
cs.RO
2026-08-30
ETH 给 PM-01 换被动挂钩和头戴固态雷达,注意力策略直接吃原始扫描,三种杠距 15 次成功 14 次,臂荡最快 0.5 米每秒。
腿式机器人过复杂地形,主流是先建中间地图再控。2.5D 高程图便宜,头顶细杆和悬空薄结构会被抹掉;体素网格能保住三维,分辨率一升,内存和算力跟着涨。直接喂深度图或点云的策略已经能处理稠密地面和大体量障碍,厘米级稀疏结构上的精确接触还几乎没人做。
这篇拿猴架臂荡当极限场景:杆细、接触少、全身还得又快又准。更早的臂荡系统要么是两连杆、三连杆专用样机,要么假定杆的位置已知。LadderMan 用深度视觉做了人形爬梯,但没有把跳上、臂荡、跳下接到机载感知上。苏黎世联邦理工 Robotic Systems Lab 在通用人形 EngineAI PM-01 上把这条链路跑通了。
手上的手被一块水刀切割的不锈钢被动挂钩换掉。开口能容 60 mm 圆,训练里杆半径只有 1 到 3 cm,摆荡平面上的落点误差有余量。脱杆只转手腕偏航,把挂钩转出杆平面,不必把身体抬起来,力矩更小,也更不容易顶到热极限。对称外形还能反向走。
头上是 RoboSense E1R 固态激光雷达,原生扫描 192×144,视场 120°×90°,带着 IMU。固态是电子扫描,全身猛加速时比机械旋转雷达少一层运动畸变。策略吃降采样网格:臂荡 36×35×4,低头钻障 36×48×4,10 Hz,每个格子是相对传感器的命中位置加距离。臂荡只裁上半视场,钻障留全视场。
训练分两层。先在 IsaacLab 里用 PPO 训三个有特权的 MLP 老师:跳上、臂荡、跳下。老师能看见杆端点真值,还有接触、基座速度、电池和热状态。臂荡老师跟平面目标走;跳上跳下用接触奖励,不灌人体动作先验。地形是程序生成的梯子,几何随机,旁边再撒杂物。跳上跳下用升高课程,臂荡用加间距、减杆宽课程。
学生只看机载量,按任务阶段切换当前老师,分三步蒸馏。第一步是纯 DAgger 行为克隆。第二步给 critic 热身,回归未裁剪 GAE,actor 继续克隆。第三步上正则 PPO,代理目标加上逐渐衰减的克隆锚,让学生按自己的感知缺陷改动作。不同阶段奖励量级差很大,优势按阶段标准化,value 损失按回报方差加权。
感知骨干把 AME-2 的注意力编码器从高程图改接到点云上,点云保持雷达原生二维网格,不当无序集合。特征跟本体感觉、命令一起进 GRU,隐状态再由 MLP 解成 23 维关节位置目标,50 Hz。本体感觉带 4 帧历史。蒸馏时再加一个辅助头,从 GRU 隐状态预测最近一根杆的相对位置和朝向。
同一套 AME-2 加 GRU 另训一个低头钻障策略。老师用带向上射线的高程图,学生仍然只吃原始 E1R。
仿真到真机卡在三件事:电池电压跌落、执行器热、雷达噪声。跳上时机械关节功率峰值 2.11 kW,端电压最低掉到 34.7 V;18 个低力矩关节(含 10 个臂关节)在电压跌落时顶到限位的 93%。不加电压模型,跳上会把机器人拉到掉电;加了电压惩罚之后,实机试验里没有一次掉电。热模型是低力矩关节上的漏积分器,持续负载比超过 0.2 就会饱和。雷达主噪声是 0.625° 光束锥在深度跳变处的边缘渗色:训练用 IsaacLab 里 Warp 写的轻量射线,距离高斯噪声 σ=2 cm;验证换 MuJoCo,每像素锥内打 16 条射线。
编码器消融看蒸馏第一阶段的行为克隆损失,表中数字均乘了 10²,越小越好。注意力网格编码器 1.38 万参数,比 CNN 的 10.67 万少一个数量级,比 MLP 的 131 万少两个数量级,三个阶段都最低;加上杆中心线辅助损失再降一截。盲学生最差,光靠本体感觉过不去。
| 编码器 | 参数量 | 总损失 | 跳上 | 臂荡 | 跳下 | 中心线 |
| AME-2 + 辅助 | 13.8k | 2.35 | 2.48 | 1.95 | 3.20 | 0.71 |
| AME-2 | 13.8k | 2.43 | 2.56 | 2.00 | 3.26 | 1.62 |
| CNN | 106.7k | 2.62 | 2.73 | 2.16 | 3.57 | 1.79 |
| MLP | 1.31M | 2.76 | 2.92 | 2.28 | 3.62 | 1.85 |
| 盲 | – | 2.90 | 3.18 | 2.30 | 3.51 | 2.07 |
实机在三种梯子上跑完整跳上、臂荡、跳下。操作员只在里程计坐标系里给一个平面目标,位姿用 SE(3) 激光惯性里程计。15 次里成功 14 次,全流程成功率 93%,臂荡最快 0.5 米每秒。唯一失败发生在跳上成功之后,挂钩没有荡到下一根杆。
| 配置 | 高度 (m) | 间距 (m) | 跳上 | 臂荡 | 跳下 | 全流程 | 次数 |
| Ladder A | 1.69 | 0.26 | 100% | 100% | 100% | 100% | 9 |
| Ladder B | 1.72 | 0.31 | 100% | 100% | 100% | 100% | 2 |
| Ladder C | 1.75 | 0.33 | 100% | 75% | 100% | 75% | 4 |
MuJoCo 仿真到仿真把间距固定在 0.35 m,高度从 1.65 m 扫到 1.90 m,每档 10 次。全流程成功率在 70% 到 90% 之间,掉点几乎都在跳上;臂荡和跳下各档都是 100%。高度越高,第一根杆越接近弹跳极限,跳上从 90% 掉到 70%。
低头钻障在仿真里对直径 1 到 5 cm、净空 1.1 到 1.5 m 的圆柱杆,只要机器人物理上钻得过,成功率 100%。实机用训练时没见过朝向的 2 cm×2 cm 木条,10 次全部无接触通过,示例净空 1.2 m。
做人形控制的人能拿走三件事。厘米级稀疏结构不必先建成体素地图,头戴固态雷达加注意力选点、GRU 攒时间,撑得住跳上这种爆发动作。仿真到真机的关键是把掉电和热写进模型和奖励:没电压模型会直接掉电。挂钩是工程选择,不是通用抓取;同一套感知骨干能另训低头钻 2 cm 截面的悬空障碍,编码器对细杆这类几何是通的。
这是一篇系统论文。钩子换掉了手,目标位置还是人给的,几何分布也窄。该跟进的是原始雷达加接触控制这条路。
论文自己写了:任务策略是分开训的一小撮,几何多样性还没铺开;部分可观测、要靠长程空间记忆的结构是下一步。
实机 15 次里 Ladder B 只有 2 次,Ladder C 的 4 次里臂荡掉了 1 次,93% 的分母不大。失败模式是钩子没荡到下一根,接触容差靠 60 mm 开口,不是靠手去抓。训练杆半径 1 到 3 cm、间距 0.25 到 0.5 m,换更乱的脚手架还没有数。训练时雷达距离门卡在 0.3 到 1.5 m,更远的杆这篇没测。
「据我们所知的首次」只覆盖「通用人形、机载感知、跳上臂荡跳下」这个组合。专用臂荡机器人和已知杆位置的系统不在这句话里。