DreamWaQ - 基于隐式地形想象的鲁棒四足机器人运动学习
论文:DreamWaQ: Learning Robust Quadrupedal Locomotion With Implicit Terrain Imagination via Deep Reinforcement Learning
目标:不依赖视觉/LiDAR,仅用本体感知实现四足机器人在复杂非结构化地形上的鲁棒行走,并完成真实户外长距离验证。
0. 核心
DreamWaQ用Asymmetric Actor–Critic把“地形高度图/外力扰动”等特权信息只喂给Critic,让只看本体感知序列的Actor在训练中被迫学会隐式推断地形/扰动;再用一个共享编码器的CENet(速度估计 + β-VAE 下一观测重建)提供(v~t,zt)(\tilde v_t, z_t)(v~t,zt),并用AdaBoot在训练早期抑制估计器噪声对策略学习的破坏。
1. 背景
1.1 外部感知路线(相机/LiDAR)
- 优点:能“看路”提前规划
- 问题:受光照/天气影响;LiDAR可分割地面但难估计地形物理属性(雪/草等“看起来能走≠物理可走”)
1.2 仅本体感知路线
- 优点:鲁棒、轻量
- 难点:存在representation learning bottleneck:
策略要鲁棒必须理解地形;但要学地形表征又需要策略能探索大量地形与失败状态 → 学习互相掣肘
1.3 论文明确批评的两类训练范式
- Teacher–Student + BC:学生性能被教师“上界”束缚;顺序训练数据低效;BC阶段学生只看“好动作”难覆盖失败状态
- 并行训练策略+估计器:bootstrap估计器能提升sim2real,但早期估计器噪声大,可能反过来伤害策略学习(因此提出AdaBoot)
2. DreamWaQ 方法
2.1 POMDP设定
- 环境:M=(S,O,A,d0,p,r,γ)M=(S,O,A,d_0,p,r,\gamma)M=(S,O,A,d0,p,r,γ),无限时域POMDP
- 时间序列观测:otH=[ot,ot−1,...,ot−H]To_t^H=[o_t,o_{t-1},...,o_{t-H}]^TotH=[ot,ot−1,...,ot−H]T,文中取 H=5H=5H=5
2.2 三块核心模块
- Actor(Policy):输入本体感知当前量 + CENet输出,输出动作
- Critic(Value):训练时额外输入特权信息(高度图、外力扰动等)
- CENet:输入本体感知历史,输出速度估计v~t\tilde v_tv~t与上下文ztz_tzt,并重建下一步观测o~t+1\tilde o_{t+1}o~t+1
训练时:Policy、Value、CENet在仿真中同步学习(单阶段),PPO更新Policy,CENet用监督/自编码损失更新,AdaBoot调节bootstrap强度。
部署时:只运行Policy + CENet(无特权信息,无外部感知)。
3. 关键定义
3.1 本体观测 oto_tot(Policy可见)
论文定义:
- ot=[ωt,gt,ct,θt,θ˙t,at−1]To_t=[\omega_t, g_t, c_t, \theta_t, \dot\theta_t, a_{t-1}]^Tot=[ωt,gt,ct,θt,θ˙t,at−1]T
含义:
- ωt\omega_tωt:机体角速度(IMU)
- gtg_tgt:机体系重力方向(IMU融合量)
- ctc_tct:速度指令(命令)
- θt,θ˙t\theta_t,\dot\theta_tθt,θ˙t:关节角/角速度(编码器)
- at−1a_{t-1}at−1:上一时刻动作
3.2 特权完整状态 sts_tst(Critic训练可见,部署不可见)
论文定义:
- st=[ot,vt,dt,ht]Ts_t=[o_t, v_t, d_t, h_t]^Tst=[ot,vt,dt,ht]T
含义:
- vtv_tvt:真实机体速度(仿真真值)
- dtd_tdt:随机施加的机体扰动力
- hth_tht:地形高度扫描(height map scan)
关键:Actor被要求在不直接看到(dt,ht)(d_t,h_t)(dt,ht)的情况下仍能学会鲁棒行为——这就是“隐式地形想象”。
4. Asymmetric Actor–Critic:隐式地形想象的机制解释
- Actor输入贫瘠:只看本体感知序列(部分可观)
- Critic输入富足:训练时看完整状态(含地形高度图、扰动)
- 在Actor–Critic耦合优化中,优势函数/价值估计会把“地形/扰动导致的回报差异”反馈到Actor更新
- 结果:Actor为了最大化回报,必须从本体感知序列里挖掘可预测地形/扰动的线索,形成等效的隐式表示(imagination)
5. CENet:共享编码器的“速度+上下文”估计器
5.1 为什么要CENet
- Policy需要速度与上下文输入:(vt,zt)(v_t, z_t)(vt,zt)
- 直接用传统估计会漂移;仅显式估计速度不足以解释地形交互
- 论文发现:地形上下文与状态估计互相促进,联合学习能提高速度估计稳定性
5.2 结构(文字化可复现)
- 输入:时间序列 otHo_t^HotH
- 共享 Encoder:编码为两个输出
- v~t\tilde v_tv~t:速度估计(显式头)
- ztz_tzt:上下文隐变量(VAE隐空间)
- 解码器(VAE头):重建下一观测 o~t+1\tilde o_{t+1}o~t+1
5.3 CENet损失
总损失:
- LCE=Lest+LVAEL_{CE}=L_{est}+L_{VAE}LCE=Lest+LVAE
速度估计损失(MSE):
- Lest=MSE(v~t,vt)L_{est}=\text{MSE}(\tilde v_t, v_t)Lest=MSE(v~t,vt)
β\betaβ-VAE损失:
- LVAE=MSE(o~t+1,ot+1)+βDKL(q(zt∣otH) ∥ p(zt))L_{VAE}=\text{MSE}(\tilde o_{t+1}, o_{t+1})+\beta D_{KL}(q(z_t\mid o_t^H)\ \|\ p(z_t))LVAE=MSE(o~t+1,ot+1)+βDKL(q(zt∣otH) ∥ p(zt))
先验:
- p(zt)=N(0,I)p(z_t)=\mathcal N(0,I)p(zt)=N(0,I)(论文理由:所有观测已归一化为零均值单位方差)
6. 动作空间与低层控制
- 动作:at∈R12a_t\in\mathbb R^{12}at∈R12(12关节的目标角增量)
- 期望关节角:
- θdes=θstand+at\theta_{des}=\theta_{stand}+a_tθdes=θstand+at
- 低层:关节PD跟踪 θdes\theta_{des}θdes
7. 奖励函数(Table I )
总奖励:
- rt(st,at)=∑iriwir_t(s_t,a_t)=\sum_i r_i w_irt(st,at)=∑iriwi
主要奖励项(按论文表格语义整理):
- 平面线速度跟踪:exp(−4(vxycmd−vxy)2)\exp(-4(v^{cmd}_{xy}-v_{xy})^2)exp(−4(vxycmd−vxy)2),权重 1.01.01.0
- 偏航角速度跟踪:exp(−4(ωyawcmd−ωyaw)2)\exp(-4(\omega^{cmd}_{yaw}-\omega_{yaw})^2)exp(−4(ωyawcmd−ωyaw)2),权重 0.50.50.5
- 竖直线速度惩罚:vz2v_z^2vz2,权重 −2.0-2.0−2.0
- 横滚/俯仰角速度惩罚:ωxy2\omega_{xy}^2ωxy2,权重 −0.05-0.05−0.05
- 姿态(重力投影)惩罚:∣g∣2|g|^2∣g∣2,权重 −0.2-0.2−0.2
- 关节加速度惩罚:θ¨2\ddot\theta^2θ¨2,权重 −2.5×10−7-2.5\times 10^{-7}−2.5×10−7
- 关节功率惩罚:∣τ∣∣θ˙∣|\tau||\dot\theta|∣τ∣∣θ˙∣,权重 −2×10−5-2\times 10^{-5}−2×10−5
- 机体高度误差:(hdes−h)2(h^{des}-h)^2(hdes−h)2,权重 −1.0-1.0−1.0
- 足端净空相关项:(pf,z,kdes−pf,z,k)2⋅vf,xy,k(p^{des}_{f,z,k}-p_{f,z,k})^2\cdot v_{f,xy,k}(pf,z,kdes−pf,z,k)2⋅vf,xy,k,权重 −0.01-0.01−0.01
- 动作变化率惩罚:(at−at−1)2(a_t-a_{t-1})^2(at−at−1)2,权重 −0.01-0.01−0.01
- 二阶平滑惩罚:(at−2at−1+at−2)2(a_t-2a_{t-1}+a_{t-2})^2(at−2at−1+at−2)2,权重 −0.01-0.01−0.01
- 功率分布惩罚:var(τ⋅θ˙)2\text{var}(\tau\cdot \dot\theta)^2var(τ⋅θ˙)2,权重 −10−5-10^{-5}−10−5
论文强调引入功率分布项是为了降低现实中电机过热不均衡风险(只最小化总功率可能导致个别电机长期高负载)。
8. Curriculum & Domain Randomization
8.1 地形课程
- 地形:smooth / rough / discretized / stairs
- 坡度等级:10级,范围 [0∘,22∘][0^\circ,22^\circ][0∘,22∘]
- 低速转向:采用grid-adaptive curriculum可减少绊脚、提升稳定转向
8.2 域随机化范围(Table II)
- Payload:[−1,2][-1,2][−1,2] kg
- KpK_pKp factor:[0.9,1.1][0.9,1.1][0.9,1.1]
- KdK_dKd factor:[0.9,1.1][0.9,1.1][0.9,1.1]
- Motor strength factor:[0.9,1.1][0.9,1.1][0.9,1.1]
- COM shift:[−50,50][-50,50][−50,50] mm
- Friction coefficient:[0.2,1.25][0.2,1.25][0.2,1.25]
- System delay:[0,15][0,15][0,15] ms
9. AdaBoot:自适应Bootstrapping(核心公式 + 直觉)
定义回报变异系数:
- CV(R)=std(R)mean(R)\text{CV}(R)=\frac{\text{std}(R)}{\text{mean}(R)}CV(R)=mean(R)std(R)
自适应bootstrap概率:
- pboot=1−tanh(CV(R))p_{boot}=1-\tanh(\text{CV}(R))pboot=1−tanh(CV(R))
直觉:
- 训练早期:不同环境回报差异大(CV大)→ pbootp_{boot}pboot小,减少依赖估计器,避免噪声伤害策略
- 训练后期:CV变小 → pbootp_{boot}pboot增大,增强bootstrap,提高对估计误差的鲁棒性与sim2real表现
论文 II-C 中的 bootstrapping 不是指GAE里对V(st+1)V(s_{t+1})V(st+1)的TD bootstrap强度,而是指在训练policy时对其输入进行“真值/估计值替换”的bootstrap:
- 训练时在仿真中可以拿到某些真值特权量(例如基座速度 vtv_tvt 的仿真真值 vtgtv_t^{gt}vtgt)
- 部署时真机上无法拿到真值,只能用估计器网络 CENet从本体感知历史估计得到 v~t\tilde v_tv~t
因此,DreamWaQ提出在训练阶段让policy逐步从真值输入过渡到估计器输入,以减小训练-部署的观测分布差异(sim-to-real observation mismatch):
- 以概率 pbootp_{boot}pboot 使用估计器输出(更贴近部署)
- 以概率 1−pboot1-p_{boot}1−pboot 使用仿真真值(更干净稳定)
一个最直接的写法是对每个环境/episode采样门控变量:b∼Bernoulli(pboot)b \sim \text{Bernoulli}(p_{boot})b∼Bernoulli(pboot),并构造policy的速度输入为vtin=b⋅v~t+(1−b)⋅vtgtv_t^{in}=b\cdot \tilde v_t + (1-b)\cdot v_t^{gt}vtin=b⋅v~t+(1−b)⋅vtgt,然后policy按πϕ(at∣ot, vtin, zt)\pi_\phi(a_t \mid o_t,\ v_t^{in},\ z_t)πϕ(at∣ot, vtin, zt)生成动作(其中 ztz_tzt 同样由 CENet 从 otHo_t^HotH 推断)。
10. 实验对比与主要结论
10.1 对比方法(全为proprioception-only)
- Baseline:无适应机制
- AdaptationNet:teacher-student隐式环境因子编码(RMA类)
- EstimatorNet:并行训练策略+显式状态估计(无上下文)
- DreamWaQ w/o AdaBoot
- DreamWaQ w/ AdaBoot
10.2 训练配置(Isaac Gym + PPO)
- 同步训练policy/value/CENet,1000 iterations
- 并行4096个domain-randomized agents
- PPO:clip=0.2,GAE=0.95,γ=0.99\gamma=0.99γ=0.99
- Adam学习率 10−310^{-3}10−3
10.3 定量结果(最该引用的三条)
- 学习曲线:DreamWaQ持续优于对比方法,且接近oracle(oracle可用高度图)
- 命令跟踪误差:DreamWaQ显著更低;AdaBoot进一步提升
- 抗扰动鲁棒性(Table III):DreamWaQ w/ AdaBoot 最强
- 最大推扰速度:1.121±0.1641.121\pm0.1641.121±0.164 m/s
- 30分钟生存率:95.23±1.61%95.23\pm1.61\%95.23±1.61%
11. 真机部署细节(报告/复现实验常用)
- 机器人:Unitree A1
- 推理:Policy与CENet同步运行 50 Hz
- 低层PD:200 Hz,Kp=28, Kd=0.7K_p=28,\ K_d=0.7Kp=28, Kd=0.7
- 户外两条路线:Course A约430 m(yard含多坡、植被、楼梯、泥地/湿地);Course B约465 m(hill含asphalt、gravel、坡,爬升至山顶)
- 轨迹测量:RTK GPS 10 Hz(用于记录户外行走轨迹)
12. 贡献(三条)
- Asymmetric actor–critic在proprioception-only条件下实现“隐式地形想象”,避免teacher–student BC的上界与低效问题
- 提出CENet:共享编码器联合学习速度估计与β\betaβ-VAE下一观测重建,提供更稳健的(v~t,zt)(\tilde v_t,z_t)(v~t,zt)供策略使用
- 提出AdaBoot:用回报统计自适应调节bootstrap,显著提升跟踪性能与鲁棒性,并完成Unitree A1真实户外长距离验证
13. 局限(按论文原文口径写)
- 适应机制需要先“碰到障碍物”(腿部接触后)才能触发有效适应
- 对更复杂结构(如更高的楼梯)需要引入外部感知实现接触前规划与更强的前瞻能力
14. “流程”
训练(仿真)
- 在curriculum terrains + domain randomization中采样rollout
- 更新Critic:输入st=[ot,vt,dt,ht]s_t=[o_t,v_t,d_t,h_t]st=[ot,vt,dt,ht]回归V(st)V(s_t)V(st)
- 更新CENet:最小化
- MSE(v~t,vt)\text{MSE}(\tilde v_t,v_t)MSE(v~t,vt)
- MSE(o~t+1,ot+1)+βDKL(⋅)\text{MSE}(\tilde o_{t+1},o_{t+1})+\beta D_{KL}(\cdot)MSE(o~t+1,ot+1)+βDKL(⋅)
- 更新Actor(PPO):输入(ot,v~t,zt)(o_t,\tilde v_t,z_t)(ot,v~t,zt)输出ata_tat
- AdaBoot:按pboot=1−tanh(CV(R))p_{boot}=1-\tanh(\text{CV}(R))pboot=1−tanh(CV(R))调节bootstrap强度
部署(真机)
- 采集IMU/编码器得到oto_tot与otHo_t^HotH
- CENet输出(v~t,zt)(\tilde v_t,z_t)(v~t,zt)
- Policy输出ata_tat
- 设定θdes=θstand+at\theta_{des}=\theta_{stand}+a_tθdes=θstand+at,PD在200Hz跟踪
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)