前置准备
环境建模为POMDP,定义为
M
=
(
S
,
O
,
A
,
d
0
,
p
,
r
,
γ
)
\begin{aligned} \mathcal{M}&=(\mathcal{S},\mathcal{O},\mathcal{A},d_0,p,r,\gamma) \end{aligned}
M=(S,O,A,d0,p,r,γ)
其中完整状态、部分观测、动作都是连续的
s
∈
S
,
o
∈
O
,
a
∈
A
\mathbf{s}\in\mathcal{S},\mathbf{o}\in\mathcal{O},\mathbf{a}\in\mathcal{A}
s∈S,o∈O,a∈A
环境从初始状态分布
d
0
(
s
0
)
\begin{aligned}d_0(\mathbf{s}_0)\end{aligned}
d0(s0) 开始,以下述状态转移概率进行
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(\mathbf{s}_{t+1}|\mathbf{s}_t,\mathbf{a}_t)
p(st+1∣st,at)
每次transition获得下述奖励函数定义的奖励
r
:
S
×
A
→
R
r:\mathcal{S}\times\mathcal{A}\to\mathcal{R}
r:S×A→R
折扣因子定义为
γ
∈
[
0
,
1
)
\gamma\in[0,1)
γ∈[0,1)
将t时刻的过去H次测量值的时间观测值定义为
o
t
H
=
[
o
t
o
t
−
1
…
o
t
−
H
]
T
\mathbf{o}_t^H=\begin{bmatrix}\mathbf{o}_t&\mathbf{o}_{t-1}\ldots\mathbf{o}_{t-H}\end{bmatrix}^T
otH=[otot−1…ot−H]T
同时定义一个上下文向量
z
t
\mathbf{z}_{t}
zt ,其中包含了描述环境状态的隐含表示(高程信息)
隐式的地形想象
其他工作利用了teacher-student训练方法,这种”行为克隆“将学生政策的表现与教师政策限制在一起,且顺序训练教师和学生网络的数据效率低下。学生策略可能无法探索教师策略在早期RL阶段学到的失败状态,因为在行为克隆期间学生策略仅受到教师策略的良好行动监督。
为了学习隐式的地形想象,采用不对称的actor-critic架构。actor-critic中的策略和价值网络之间的相互作用可以训练一种策略,这种策略可以在给定部分时间观测的情况下隐式地“想象”特权观察。
策略(actor)接收部分时间观测
o
t
H
\mathbf{o}_t^H
otH 作为输入,价值网络(critic)接收完整状态
s
t
\mathbf{s}_t
st ,如下图所示,定义H=5
由于只需要⼀个训练阶段,训练期间的数据效率显著提⾼。此外,该策略可以在训练期间探索所有可能的轨迹,通过泛化提⾼其稳健性。使用PPO算法优化策略。
策略网络
策略
π
ϕ
(
a
t
∣
o
t
,
v
t
,
z
t
)
\pi_\phi(\mathbf{a}_t|\mathbf{o}_t,\mathbf{v}_t,\mathbf{z}_t)
πϕ(at∣ot,vt,zt) 是在本体感知观测
o
t
\mathbf{o}_t
ot 、机身线速度
v
t
\mathbf{v}_t
vt 、隐含状态
z
t
\mathbf{z}_t
zt 的情况下,采取动作
a
t
\mathbf{a}_t
at 时由
ϕ
\phi
ϕ 参数化的神经网络。
o
t
\mathbf{o}_t
ot 是一个
45
×
1
45 \times 1
45×1 的向量,直接从关节编码器和IMU中测量得到,表示为
o
t
=
[
ω
t
g
t
c
t
θ
t
θ
˙
t
a
t
−
1
]
T
\mathbf{o}_t=\begin{bmatrix}\omega_t&\mathbf{g}_t&\mathbf{c}_t&\theta_t&\dot{\theta}_t&\mathbf{a}_{t-1}\end{bmatrix}^T
ot=[ωtgtctθtθ˙tat−1]T
其中:
- ω t \omega_t ωt :机身角速度(3)
- g t \mathbf{g}_t gt :机身坐标系下的重力向量(3)
- c t \mathbf{c}_t ct :机身速度指令(3)
- θ t \theta_t θt :关节角度(12)
- θ ˙ t \dot{\theta}_t θ˙t :关节角速度(12)
- a t − 1 \mathbf{a}_{t-1} at−1 :之前的动作(12)
v t \mathbf{v}_t vt 和 z t \mathbf{z}_t zt 由上下文辅助估计网络context-aided estimator network(CENet)估计,下文会讲到。
价值网络
价值网络经过训练输出状态值
V
(
s
t
)
V(\mathbf{s}_{t})
V(st) 的估计。与策略网络不同的是,价值网络接收特权观测
s
t
\mathbf{s}_t
st ,定义为:
s
t
=
[
o
t
v
t
d
t
h
t
]
T
\mathbf{s}_t=\begin{bmatrix}\mathbf{o}_t&\mathbf{v}_t&\mathbf{d}_t&\mathbf{h}_t\end{bmatrix}^T
st=[otvtdtht]T
其中:
- o t \mathbf{o}_t ot :前文提到的本体感知观测
- v t \mathbf{v}_t vt :前文提到的机身线速度
- d t \mathbf{d}_t dt :随机施加在机身上的⼲扰⼒
-
h
t
\mathbf{h}_t
ht :机器⼈周围环境的高程图,作为价值⽹络感受外界的输入
策略网络经过训练可以从本体感知隐式地推断 d t \mathbf{d}_t dt 和 h t \mathbf{h}_t ht
动作空间
动作空间
a
t
\mathbf{a}_t
at 是一个
12
×
1
12 \times 1
12×1 的向量,对应机器人12个关节的角度。为了使学习更加容易,策略的输出为机器人当前姿态与静止姿态对应关节角度的差值,即为
θ
d
e
s
=
θ
s
t
a
n
d
+
a
t
\mathbf{\theta}_{\mathrm{des}}=\mathbf{\theta}_{\mathrm{stand}}+\mathbf{a}_t
θdes=θstand+at
然后使用PD控制器跟踪期望的关节角度。
奖励函数
奖励函数与其他工作相同,不做过多的修改,以突出DreamWaQ的效果,定义如下:
其中:
- exp为指数运算,var为方差运算;
- des为期望值,cmd为命令值;
- xyz定义在机器人坐标系中,x为前方,z为上方;
- g \mathbf{g} g :重力向量在机身坐标系上的投影
- v x y \mathbf{v}_{xy} vxy :xy平面上的线速度
- ω y a w \omega_{\mathrm{yaw}} ωyaw :yaw轴角加速度
- h h h :机身相对地面的高度
- p f , z , k p_{f,z,k} pf,z,k :足端高度
- v f , x y , k v_{f,xy,k} vf,xy,k :足端横向速度
- τ \mathrm{\tau} τ :关节扭矩
奖励函数包括跟踪命令速度的任务奖励和稳定性奖励。在每个状态采取动作的策略的总奖励定义为
r
t
(
s
t
,
a
t
)
=
∑
r
i
w
i
r_t(\mathbf{s}_t,\mathbf{a}_t)=\sum r_iw_i
rt(st,at)=∑riwi
对最后一项Power奖励函数的解释:用于学习运动策略的复杂奖励函数通常包括电机功率最小化项。然而这种奖励在不考虑每个电机的功率平衡的情况下最大限度地减少了总功率。 因此从长远来看某些电机可能会比其他电机更快过热。因此引入功率分配奖励,通过惩罚机器人上使用的所有电机的高方差电机功率来减少现实世界中的电机过热。
课程学习
在困难地形上进行渐进的运动策略学习。地形由光滑、粗糙、离散和阶梯地形组成,倾斜度在0°-22°范围内有十级的变化。利用网格自适应课程进行低速运动可以实现更好、更稳定的转弯,从而防止足端绊倒。
下文辅助估计网络(CENet)
上面的训练方法需要机身线速度
v
t
\mathbf{v}_t
vt 、隐含状态
z
t
\mathbf{z}_t
zt 作为输入,可以通过本体感知进行估计。其他工作将
z
t
\mathbf{z}_t
zt 视为隐含地形变量。此外通过学习网络估计
v
t
\mathbf{v}_t
vt 通过消除累计的估计漂移,显著提高运动策略的鲁棒性。
通过这些先前的工作可以发现,地形和身体状态估计之间的相互作用显着提高了身体状态估计的准确性。因此提出了上下文辅助估计网络(CENet)架构来共同学习估计和推断的隐含环境信息,而不是仅仅显式估计机器人的状态。 CENet的优点是:
- 由于共享编码器架构,网络架构显著简化并在推理过程中同步运行;
- 编码器网络可以通过自动编码机制来联合学习机器人的前向和后向动力学,从而提高其精度。
CENet由单编码器和多部分解码器组成,如下图所示。CENet的架构由机身速度估计模型和共享统一编码器的自编码器模型组成。共享编码器经过训练可以联合提供鲁棒的身体状态和上下文估计。
编码器网络将
o
t
H
\mathbf{o}_t^H
otH 编码为
v
t
\mathbf{v}_t
vt 和
z
t
\mathbf{z}_t
zt 。 第一部分估计
v
t
\mathbf{v}_t
vt ,第二部分重建
o
t
+
1
\mathbf{o}_{t+1}
ot+1 。 使用β-变分自编码器(β-VAE)作为自编码器架构。 CENet 使用混合损失函数进行优化,定义如下:
L
C
E
=
L
e
s
t
+
L
V
A
E
\mathcal{L}_{\mathrm{CE}}=\mathcal{L}_{\mathrm{est}}+\mathcal{L}_{\mathrm{VAE}}
LCE=Lest+LVAE
其中
L
e
s
t
\mathcal{L}_{\mathrm{est}}
Lest 是身体速度估计,
L
V
A
E
\mathcal{L}_{\mathrm{VAE}}
LVAE 是VAE损失。对于显式状态估计,估计的物体速度
v
~
t
\tilde{\mathbf{v}}_t
v~t 和来自模拟器实际的
v
t
\mathbf{v}_{t}
vt 之间采用了均方误差 (MSE) 损失,如下所示:
L
e
s
t
=
M
S
E
(
v
~
t
,
v
t
)
\mathcal{L}_{\mathrm{est}}=MSE(\tilde{\mathbf{v}}_t,\mathbf{v}_t)
Lest=MSE(v~t,vt)
VAE网络使用标准 β-VAE 损失进行训练,其中包括重建损失和隐含损失。使用 MSE 作为重建损失,使用 Kullback-Leibler (KL) 散度作为潜在损失。VAE 损失的公式为:
L
VAE
=
M
S
E
(
o
~
t
+
1
,
o
t
+
1
)
+
β
D
KL
(
q
(
z
t
∣
o
t
H
)
∥
p
(
z
t
)
)
\begin{aligned}\mathcal{L}_{\text{VAE}} = M S E ( \tilde { \mathbf{o}}_{t+1},\mathbf{o}_{t+1})+\beta D_{\text{KL}}(q(\mathbf{z}_t|\mathbf{o}_t^H)\parallel p(\mathbf{z}_t))\end{aligned}
LVAE=MSE(o~t+1,ot+1)+βDKL(q(zt∣otH)∥p(zt))
其中:
- o ~ t + 1 \tilde { \mathbf{o}}_{t+1} o~t+1 为重建的下一个观测值
- q ( z t ∣ o t H ) q(\mathbf{z}_t|\mathbf{o}_t^H) q(zt∣otH) 为给定 o t H \mathbf{o}_t^H otH 时 z t \mathbf{z}_t zt 的后验分布
-
p
(
z
t
)
p(\mathbf{z}_t)
p(zt) 为由高斯分布参数化的上下文先验分布
选择标准正态分布作为先验分布,因为所有观测值均已标准化为零均值和单位方差。
此外,在策略网络训练期间从估计器网络引导(bootstrap)可以提高学习策略的sim-to-real鲁棒性。然而由于学习早期阶段的学习噪声较大,引导也可能会损害策略的性能。 因此提出一种自适应引导(AdaBoot)方法,可以在训练期间自适应地调整引导概率。 AdaBoot 由变异系数(CV)控制,即m个经过随机化的环境中的情景奖励的标准差与平均值的比率。 关键思想是,当m个agent的奖励的CV较小时,需要进行引导,以使策略对不准确的估计更加稳健。 但是当agent学习得不够好时不应该引导,用奖励中的较大CV值表示。 将每次学习迭代的引导概率定义如下:
p
b
o
o
t
=
1
−
tanh
(
C
V
(
R
)
)
p_{\mathrm{boot}}=1-\tanh(CV(\mathbf{R}))
pboot=1−tanh(CV(R))
其中:
- p b o o t ∈ [ 0 , 1 ] p_{\mathrm{boot}}\in[0,1] pboot∈[0,1] 是引导概率
- R \mathbf{R} R 是来自m个进过随机化的环境的情景奖励的 m × 1 m\times1 m×1 向量
- CV为变异系数运算
- tanh为双曲正切运算,用于将 C V ( R ) CV(\mathbf{R}) CV(R) 的上限平滑地变为1
仿真
使用isaac gym同步训练policy、value、CENet网络。训练参数如下:
- agents:4096
- iterations:1000
- 策略网络:PPO,其clip范围设置为0.2,⼴义优势估计因⼦设置为0.95,折扣因⼦设置为0.99
- 隐含层的激活函数:指数线性单元(ELU)
- 使⽤ Adam 优化器优化⽹络,学习率为 1 0 − 3 10^{-3} 10−3
- 环境参数随机化见下表
迁移到实物
迁移到Unitree A1四足机器人上,策略与CENet以50Hz的频率同步运⾏。使⽤200Hz的PD控制器跟踪所需的关节⻆度,Kp=28、Kd=0.7。
在楼梯环境中,CENet可以准确估计⾝体速度,使机器⼈能安全爬楼梯。假设这由两个因素实现:
- 前向-后向动态学习在所有地形中提供更准确的估计
- 使⽤ DreamWaQ,联合训练编码器来预测地形属性
因此,可以隐式推断地形属性,有助于调节显式估计。