Predictive Sampling: Real-time Behaviour Synthesis with MuJoCo
文章概括
作者:Taylor Howell, Nimrod Gileadi, Saran Tunyasuvunakool, Kevin Zakka, Tom Erez and Yuval Tassa
来源:arXiv:2212.00541v1 [cs.RO] 1 Dec 2022
原文:https://arxiv.org/pdf/2212.00541.pdf
代码、数据和视频:
系列文章目录:
上一篇:
论文笔记(二十二):GRiD: GPU-Accelerated Rigid Body Dynamics with Analytical Gradients
下一篇:
摘要
我们介绍了 MuJoCo MPC (MJPC),这是一种基于 MuJoCo 物理学的实时预测控制的开源交互式应用程序和软件框架。 MJPC 允许用户轻松创作和解决复杂的机器人任务,目前支持三种基于射击的规划器:基于导数的 iLQG 和梯度下降,以及一种简单的无导数方法,我们称之为预测采样。 预测抽样被设计为基本基线,主要是因为它的教学价值,但事实证明它与更成熟的算法相比具有惊人的竞争力。 这项工作没有提出算法上的进步,而是通过直观和交互式软件优先考虑高性能算法、简单代码和基于模型的方法的可访问性。 MJPC 可在 https://github.com/deepmind/mujoco_mpc 获取,视频摘要可在 https://www.youtube.com/watch?v=Bdx7DuAMB6o 查看。
1. 介绍
基于模型的方法构成了经典控制和机器人技术的基础。 自从 Kalman 的开创性工作 [Kalman, 1960] 以来,状态及其动力学和观察模型一直发挥着核心作用。
经典方法正受到基于学习的方法的挑战,这些方法放弃了对状态和相关模型的明确描述,让内部表示从学习过程中出现 [Lillicrap et al., 2015, Schulman et al., 2017, Salimans et al. ., 2017, Smith 等人, 2022, Rudin 等人, 2022]。 学习表示提供的灵活性使这些方法强大而通用,但对大量数据和计算的要求使它们变得缓慢。 相比之下,纯基于模型的方法(如下所述)可以实时合成行为 [Tassa 等人,2014 年]。
由于这两种方法最终都会通过优化目标来产生行为,因此有理由相信它们可以有效结合。 事实上,众所周知的离散域突破,如 AlphaGo [Silver et al., 2016],是结合了基于模型的搜索和基于学习的价值和策略近似。我们相信机器人和控制也可能发生同样的情况,并在讨论(第 5 节)中描述了我们对这种情况如何发生的想法。 然而,在社区迎接这一挑战之前,必须克服一个核心问题:基于模型的优化难以实现,通常依赖于精心设计的优化算法,而且通常难以实现。
为了解决这一缺陷,我们提出了 MJPC,这是一种基于 MuJoCo 物理学 [Todorov 等人,2012 年] 的预测控制开源交互式应用程序和软件框架,它使用户可以使用预测控制算法轻松编写和解决复杂任务 即时的。 该工具提供基于标准导数的算法的实现:iLQG(二阶规划器)和梯度下降(一阶规划器)。 此外,它还引入了预测采样,这是一种简单的零阶、基于采样的算法,效果出奇地好并且易于理解。
重要的是,交互式模拟可以异步减慢,从而在模拟时间方面加快规划器的速度。 这意味着可以在较旧、较慢的机器上生成行为,从而导致预测控制工具的民主化。
MJPC 和预测采样推进了我们的中心目标,即降低机器人研究中预测控制的进入门槛。 一个重要的次要目标是加快研究速度。 调整参数时,研究人员不需要等待数小时或数分钟,而是应该收到即时反馈——这将显着提高他们自己的认知表现 [Lu and Dosher, 2022]。 我们相信,使用研究人员编写的 GUI 进行灵活、交互式的模拟不仅是“可有可无”,而且是高级机器人研究的先决条件。
2. 背景
在本节中,我们提供有关最优控制和轨迹优化的一般背景,然后重点介绍预测控制和无导数优化。
最优控制: 最优控制指的是选择动作以最小化未来的成本(等价地,即最大化未来的回报)。 一个状态为 x ∈ R n \mathbb{x} \in \text{R}^n x∈Rn 的动态系统,其接受用户选择的控制(或动作) u ∈ R m u\in \text{R}^m u∈Rm,按照离散时间(连续时间的表述通常是等效的,我们选择离散时间以简化符号表示。)的动力学规律演化:
y = f ( x , u ) (1) y = f(x, u) \tag{1} y=f(x,u)(1)
返回一个新的状态, y ∈ R n y\in \text{R}^n y∈Rn。系统的行为通过运行成本进行编码:
c ( x , u ) , (2) c(x, u), \tag{2} c(x,u),(2)
状态和控制的函数,其中可以通过将时间融入状态来实现显式的时间依赖性。未来成本(亦称为后续成本或价值)可以以多种方式定义。求和可以无限进行,从而引出了平均成本或折扣成本的表述,这在时序差分学习中备受青睐,我们在第5节中对此进行了讨论。在这里,我们关注有限时域的表述,其中优化目标 J J J 表达为:
J ( x 0 : T , u 0 : T ) = ∑ t = 0 T c ( x t , u t ) . (3) J(x_{0:T}, u_{0:T}) = \sum_{t=0}^T c(x_t, u_t). \tag{3} J(x0:T,u0:T)=t=0∑Tc(xt,ut).(3)
其中,下标表示离散时间指数。
轨迹优化: 求解有限时域最优控制问题 (1,3),即优化一个固定长度的轨迹,通常被称为规划或轨迹优化。这些算法 [Von Stryk and Bulirsch, 1992, Betts, 1998] 有着丰富的历史,可追溯到阿波罗计划 [NASA, 1971, Smith and Yound, 1967]。
可以在两类算法之间做出一个重要的区分:
-
直接法或同时法将状态和控制都作为决策变量,并把动力学 (1) 强制作为约束。这些方法(例如,VonStryk[1993])构造了一个大规模、稀疏的优化问题,通常使用通用软件 [WächterandBiegler,2006,Gilletal.,2005] 进行求解。它们的重要优点在于,可以表示非物理可实现的轨迹,例如为了固定最终状态,而不必事先知道如何达到该状态。
-
射击法,例如差分动态规划 [JacobsonandMayne,1970],仅使用控制 u 0 : T u_{0:T} u0:T 作为决策变量,并通过前向仿真来强制执行动力学。在射击方法中,只能考虑物理上可实现的轨迹,但它们受益于较小的搜索空间,以及优化器无需强制执行动力学这一优势。后者的优势对于刚性系统(例如存在接触的系统)尤为重要,因为在这些系统中,物理轨迹和非物理轨迹之间的差异可能非常微小(例如,考虑一个自由刚体箱在重力作用下平放在平面上的物理场景;然后考虑同样的箱子悬浮在平面之上或穿透平面几微米的非物理场景。)。与需要动力学导数的直接法不同,射击法可以采用无导数优化,如下文所述。
预测控制: 预测控制的关键思想在于,随着系统动力学的演化,在实时中使用轨迹优化。该思想起源于60年代末,并首次发表于[Richalet et al.,1978]。这一类算法已在众多实际场景中成功部署,包括:化工和核过程控制[Na et al.,2003, Lopez-Negrete et al.,2013],自主车辆导航[Falcone et al.,2007],以及人形机器人的全身控制[Kuindersma et al.,2016]。
在实时环境中,需要对当前状态 x x x 进行估计或测量,并且轨迹优化器需要返回一组针对有限时域(这里常称为滚动时域)问题的最优或近似最优控制,该问题从状态 x x x 开始。我们用 Π \Pi Π 表示规划( p l a n plan plan),即有限时域策略。在射击方法的语境下, Π = u 0 : T \Pi=u_{0:T} Π=u0:T,但正如我们稍后讨论的那样,在某些情况下它可以重新参数化,而不是直接使用离散时间控制序列。预测控制最好可以看作两个异步进程:代理 (agent) 和规划者 (planner),见算法1。
有限时域策略(Finite Horizon Policy):仅在未来的有限时间步(称为“时域”)内优化控制动作或策略,而非考虑无限远的未来
滚动优化(Receding Horizon):每次执行第1步的最优动作后,重新基于最新状态重新规划后续 N 步(类似“边走边看”)。
Warm-Start: 在解决当前优化或控制问题时,使用历史解(如上一时刻的控制输入序列、参数估计值等)作为初始猜测,而非从零开始(Cold-Start)。
预测控制具有以下显著特性:
- 更快的计算速度能提高性能。原因很明显:规划器在单位时间内进行的优化步骤越多,得到的最优控制序列就会越好。
- 热启动具有显著的有益效果。通过重用上一步规划中的计划,优化器只需做小幅调整以修正新状态所带来的变化。热启动还使得优化过程能在多个规划步骤间实现摊销。
- 优化过程不要求完全收敛,只需实现改进,详见第5.1节。
- 行为时尺度远长于规划时域 T T T 的任务通常仍然可求解,尽管这一性质取决于任务本身。
- 预测控制器容易陷入局部最小值,尤其是那些使用导数的控制器。这主要归因于优化的目光短浅,可通过在展开过程中引入价值函数近似来解决,详见第5.3节。
无导数优化: 我们最初专注于射击方法的主要原因之一是它们能够使用无导数优化(亦称为基于采样的优化)[AudetandHare,2017]。尽管该类算法并不利用问题结构或梯度信息,但它们仍能发现复杂行为[Salimansetal.,2017, Maniaet al.,2018]。
基于采样的方法在策略参数上维持一个搜索分布,并在采样点上评估目标函数以找到一个改进的解。常见的算法包括:随机搜索[Matyas,1965],遗传算法[Holland,1992],以及进化策略[Rechenberg,1973],其中还包括CMA-ES[HansenandOstermeier,2001]。
这类算法具有许多理想的特性。首先,由于不需要梯度信息,它们非常适用于具有非平滑和不连续动力学的任务。其次,这些方法天然易于并行化。
基于采样的方法已经在预测控制中得到应用,但使用并不广泛。值得注意的例外包括Hämäläinen的工作[Hämäläinennet al.,2014,2015](这是MJPC的早期前身)以及Theodorou的一系列作品,包括[Williamsetal.,2017]及相关论文。虽然通常认为这些方法样本效率较低,但我们将在下文解释,特别是在预测控制的背景下,它们可能出人意料地具有竞争力。
3. MuJoCo MPC (MJPC)
我们介绍 MJPC,一个用于预测控制的开源交互式应用程序和软件框架,它使用户能够实时利用预测控制算法为复杂系统轻松综合行为。这些行为由简单、可组合且具风险感知的目标来指定。规划器包括:梯度下降法、迭代线性二次高斯 (iLQG) 和预测采样法,它们均由 C++ 实现,并广泛利用多线程进行并行展开。该框架是异步的,使得可以减缓仿真速度并模拟更快的控制器,从而允许该工具在性能较低的机器上运行。直观的图形用户界面支持与环境的实时交互,并具备修改任务参数、规划器和模型设置的能力,同时能够即时显示修改的效果。该工具可在 https://github.com/deepmind/mujoco_mpc 获取。
3.1. 物理模拟
我们使用开源物理引擎 MuJoCo [Todorov et al., 2012] 的 API 构建 MJPC。 MuJoCo 是机器人算法交互式框架的良好基础设施,主要原因有两个:首先,MuJoCo 通过提供线程安全的 API 支持并行模拟多个候选未来轨迹,最大限度地利用现代多核 CPU 架构; 其次,MuJoCo 提供了比实时更快的高维系统模拟,具有许多接触——例如,类人动物(27-DoF 系统)在单个 CPU 线程上的模拟速度比实时快 4000 倍。
3.2. 目标(Objective)
MJPC 提供方便的实用程序来轻松设计和组合成本以指定目标 (3); 以及自动高效地计算导数。
费用: 我们使用以下形式的“基本成本”:
l ( x , u ) = ∑ i = 0 M w i ⋅ n i ( r i ( x , u ) ) . (4) l(x, u) = \sum_{i=0}^M w_i \cdot n_i(r_i(x, u)). \tag{4} l(x,u)=i=0∑Mwi⋅ni(ri(x,u)).(4)
这个成本是 𝑀 𝑀 M 项的总和,每项包括:
-
非负权重 𝑤 ∈ R + 𝑤 ∈ \text{R}_+ w∈R+ 确定该术语的相对重要性。
-
二次可微范数 n ( ⋅ ) : R 𝑝 → R + \text{n}(\cdot) : \text{R}^𝑝 → \text{R}_+ n(⋅):Rp→R+,它在 0 𝑝 0^𝑝 0p 处取最小值。
-
残差 𝑟 ∈ R 𝑝 𝑟 ∈ \text{R}^𝑝 r∈Rp 是“任务解决时很小”的元素向量。
每一项 w i ⋅ n i ( r i ( x , u ) ) w_i \cdot n_i(r_i(x, u)) wi⋅ni(ri(x,u)) 用来衡量在执行任务时,由于某个特定目标没有达成所产生的“代价”或“误差”。设计这样的成本函数的目的是通过调整状态 x x x 和控制 u u u 来最小化 l ( x , u ) l(x,u) l(x,u),从而使各个目标尽量达到要求。
n i n_i ni 是一个函数,它接受一个 p p p 维实数向量作为输入,并输出一个非负实数。“二次可微”说明该函数至少具有两阶的连续导数,这对于优化问题非常重要,因为:
- 它使得我们能够利用梯度(甚至 Hessian 矩阵)信息来求解最优化问题;
- 平滑性保证了数值算法(如牛顿法、梯度下降法)更稳定、高效。
这里的 0 p 0^p 0p 表示一个 p p p 维全零向量。说 n i ( ⋅ ) n_i(\cdot) ni(⋅) 在 0 p 0^p 0p 处取最小值,意味着当输入的向量为全零时,函数值达到最优(通常为零)。
- 如果我们将 n i n_i ni 设定为常见的平方范数,即 n i ( r ) = ∥ r ∥ 2 n_i(r) = \|r\|^2 ni(r)=∥r∥2,那么显然当 $r = 0) 时,成本为零,这是最优状态。
残差 r i ( x , u ) r_i(x, u) ri(x,u) 是表示系统状态 x x x 和控制 u u u 与目标之间的偏差或误差。 “任务解决时很小”的意思是:如果系统按照预期完美完成了任务,那么这个误差向量应该接近(或等于)零,也就是 r i ( x , u ) ≈ 0 r_i(x, u) \approx 0 ri(x,u)≈0。
风险敏感性: 我们通过风险感知指数标量变换 ρ : R + × R → R \rho : \text{R}_+×\text{R}→\text{R} ρ:R+×R→R 来增加基本成本 (4),对应于经典的风险敏感控制框架 [Jacobson, 1973, Whittle, 1981]。 最终运行成本 𝑐 𝑐 c 由下式给出:
c ( x , u ) = ρ ( l ( x , u ) ; R ) = e R ⋅ l ( x , u ) − 1 R (5) c(x,u) \;=\; \rho\bigl(l(x,u);\,R\bigr) \;=\; \frac{e^{\,R \cdot l(x,u)} - 1}{\,R}\, \tag{5} c(x,u)=ρ(l(x,u);R)=ReR⋅l(x,u)−1(5)
这是一个常见的风险敏感(或风险相关)代价函数形式:将原本的代价 l ( x , u ) l(x,u) l(x,u) 通过指数函数转换,再进行归一化,以体现对高代价情形的放大作用。其中参数 R R R 通常用来控制风险敏感的程度。若 R > 0 R>0 R>0 较大,则对较大的 l ( x , u ) l(x,u) l(x,u) 会更加敏感。
标量参数 R ∈ R R\in \text{R} R∈R 表示风险敏感性。 R = 0 R=0 R=0(默认值)解释为风险中性, R > 0 R>0 R>0 表示风险厌恶,而 R < 0 R<0 R<0 表示风险偏好。映射 ρ \rho ρ(见图1)具有以下特性:
• 对任意
R
R
R 都是定义良好且光滑的。
• 若
R
=
0
R=0
R=0,则(在极限下)
ρ
(
l
;
0
)
=
l
\rho(l;0)=l
ρ(l;0)=l。
• 零是一个不动点:
ρ
(
0
;
R
)
=
0
\rho(0;R)=0
ρ(0;R)=0。
• 在
0
0
0 处的导数为
1
1
1:
∂
ρ
(
0
;
R
)
∂
l
=
1
\frac{\partial \rho(0;R)}{\partial l}=1
∂l∂ρ(0;R)=1。
• 非负性:如果
l
≥
0
l\ge0
l≥0,则
ρ
(
l
;
R
)
≥
0
\rho(l;R)\ge0
ρ(l;R)≥0。
• 单调性:当
l
>
z
l>z
l>z 时,
ρ
(
l
;
R
)
>
ρ
(
z
;
R
)
\rho(l;R)>\rho(z;R)
ρ(l;R)>ρ(z;R)。
• 如果
R
<
0
R<0
R<0,那么
ρ
\rho
ρ 是有界的:
ρ
(
l
;
R
)
<
−
1
R
\rho(l;R)<-\frac{1}{R}
ρ(l;R)<−R1。
•
ρ
(
l
;
R
)
\rho(l;R)
ρ(l;R) 拥有与
l
l
l 相同的单位。
注意,对于负 R R R,变换 ρ \rho ρ 产生的代价类似于在强化学习中常用的有界奖励。例如,当使用二次范数 n ( r ) = r T W r \text{n}(r)=r^TWr n(r)=rTWr(其中 W = Σ − 1 W=\Sigma^{-1} W=Σ−1为某个对称正定矩阵)以及风险参数 R = − 1 R=-1 R=−1 时,我们得到一个反高斯代价 c = 1 − e − r T Σ − 1 r c=1-e^{-r^T\Sigma^{-1}r} c=1−e−rTΣ−1r,其最小化等价于对该高斯分布进行最大似然估计。这引出了一个有趣的解释:强化学习中常用的有界奖励可以被视为风险偏好。我们在本文中不进一步探讨这一关系。
在强化学习中,有界奖励(Bounded Reward) 是指奖励函数 𝑅(𝑠,𝑎,𝑠′) 的取值范围被限制在一个固定的区间内(例如 [ 𝑅 m i n , 𝑅 m a x ] [𝑅_{min},𝑅_{max}] [Rmin,Rmax])。这种设计旨在通过控制奖励的数值范围,改善算法的稳定性、收敛性和泛化能力。
图 1 | 风险变换 ρ ( l ; R ) \rho(l;R) ρ(l;R)。该函数在 0 到 1 之间针对不同值的风险参数 R R R 进行了评估。
- 风险厌恶(Risk Averse):人们会倾向于高估损失事件发生的概率,或者对不利后果赋予更高的权重。对应在图中 𝑅>0 的情形,变换曲线会向左上方弯曲,使得同样的原始概率 𝑙 对应到更高的 𝜌 。
- 风险中性(Risk Neutral):认为客观概率就是决策的主要依据,无偏好地使用原始概率。对应在图中 𝑅=0 的情形,即对角线 ρ ( l ; 0 ) = l \rho(l;0)=l ρ(l;0)=l 。
- 风险寻求(Risk Seeking):在某些情境下,决策者希望去冒风险,可能会高估有利结果的出现概率、低估不利结果的出现概率。对应在图中 𝑅<0 的情形,变换曲线会向右下方弯曲,使得同样的原始概率 𝑙 对应到更低的 𝜌 (对于损失事件的权重相对更低)。
风险变换就是把一个客观的、不带主观偏好的概率或分布,通过一个带参的变换函数,转换成能够反映决策者对风险态度的“主观概率”或“扭曲后概率”。图中不同颜色的曲线正是不同风险偏好(由 𝑅 表征)下的映射结果。这样一来,在后续的风险度量、策略评估和决策优化中,就能够更准确地体现出决策者对“风险”的真实认知与接受程度。
导数:MuJoCo 提供了一个计算动态有限差分 (FD) 雅可比矩阵的工具,该工具在两个方面提高了效率。首先,通过在可能的情况下避免重新计算,例如在对控制量求差分时,仅依赖于位置和速度的量不需要重新计算。 其次,由于 FD 的计算成本随着输入维数的增加而扩大,因此增加输出的成本非常低。MuJoCo 的步进函数
y
,
r
=
f
(
x
,
u
)
y,r=f(x,u)
y,r=f(x,u) 同时计算模型中定义的下一个状态
y
y
y 和传感器数值
r
r
r。由于 FD 对雅可比矩阵的近似
∂
y
∂
x
,
∂
y
∂
u
,
∂
r
∂
x
,
∂
r
∂
u
(6)
\frac{\partial y}{\partial x},\frac{\partial y}{\partial u},\frac{\partial r}{\partial x},\frac{\partial r}{\partial u} \tag{6}
∂x∂y,∂u∂y,∂x∂r,∂u∂r(6) 的计算量与
x
x
x 和
u
u
u 的组合维数成正比,因此增加更多的传感器
r
r
r 实际上是“免费的”。MJPC 自动且高效地计算代价函数的导数,如下所示。
有限差分法:这种方法通过对输入变量(例如 x x x 或 u u u 做微小扰动,然后观测输出变化来近似计算这些偏导数。虽然简单,但当输入变量维度比较高时,计算每个变量的扰动所带来的变化可能会花费较多的计算资源。
梯度:代价函数的梯度计算如下:
∂ c ∂ x = e R l ∂ l ∂ x = e R l ∑ i = 0 M w i ∂ n i ∂ r ∂ r i ∂ x , ( 7 a ) \frac{\partial c}{\partial x}=e^{Rl}\frac{\partial l}{\partial x}=e^{Rl}\sum_{i=0}^{M}w_i\frac{\partial \text{n}_i}{\partial r}\frac{\partial r_i}{\partial x},\,(7a) ∂x∂c=eRl∂x∂l=eRli=0∑Mwi∂r∂ni∂x∂ri,(7a)
∂ c ∂ u = e R l ∂ l ∂ u = e R l ∑ i = 0 M w i ∂ n i ∂ r ∂ r i ∂ u , ( 7 b ) \frac{\partial c}{\partial u}=e^{Rl}\frac{\partial l}{\partial u}=e^{Rl}\sum_{i=0}^{M}w_i\frac{\partial \text{n}_i}{\partial r}\frac{\partial r_i}{\partial u},\,(7b) ∂u∂c=eRl∂u∂l=eRli=0∑Mwi∂r∂ni∂u∂ri,(7b)
其中,范数梯度 ∂ n ∂ r \frac{\partial \text{n}}{\partial r} ∂r∂n 是通过解析方法计算的。
“解析方法计算”指的是直接利用函数的数学表达式及其已知的导数公式来求梯度,而不是通过数值方法(比如有限差分)来近似估算。
海森矩阵:二阶导数采用高斯-牛顿近似,并忽略 r r r 的二阶导数:
∂ 2 c ∂ x 2 ≈ e R l [ ∑ i = 0 M w i ∂ r i ∂ x T ∂ 2 n i ∂ r 2 ∂ r i ∂ x + R ∂ l ∂ x T ∂ l ∂ x ] , ( 8 a ) \frac{\partial^2 c}{\partial x^2}\approx e^{Rl}\Biggl[\sum_{i=0}^{M}w_i\frac{\partial r_i}{\partial x}^T\frac{\partial^2 \text{n}_i}{\partial r^2}\frac{\partial r_i}{\partial x}+R\frac{\partial l}{\partial x}^T\frac{\partial l}{\partial x}\Biggr],\,(8a) ∂x2∂2c≈eRl[i=0∑Mwi∂x∂riT∂r2∂2ni∂x∂ri+R∂x∂lT∂x∂l],(8a)
∂ 2 c ∂ u 2 ≈ e R l [ ∑ i = 0 M w i ∂ r i ∂ u T ∂ 2 n i ∂ r 2 ∂ r i ∂ u + R ∂ l ∂ u T ∂ l ∂ u ] , ( 8 b ) \frac{\partial^2 c}{\partial u^2}\approx e^{Rl}\Biggl[\sum_{i=0}^{M}w_i\frac{\partial r_i}{\partial u}^T\frac{\partial^2 \text{n}_i}{\partial r^2}\frac{\partial r_i}{\partial u}+R\frac{\partial l}{\partial u}^T\frac{\partial l}{\partial u}\Biggr],\,(8b) ∂u2∂2c≈eRl[i=0∑Mwi∂u∂riT∂r2∂2ni∂u∂ri+R∂u∂lT∂u∂l],(8b)
∂ 2 c ∂ x ∂ u ≈ e R l [ ∑ i = 0 M w i ∂ r i ∂ x T ∂ 2 n i ∂ r 2 ∂ r i ∂ u + R ∂ l ∂ x T ∂ l ∂ u ] . ( 8 c ) \frac{\partial^2 c}{\partial x\partial u}\approx e^{Rl}\Biggl[\sum_{i=0}^{M}w_i\frac{\partial r_i}{\partial x}^T\frac{\partial^2 \text{n}_i}{\partial r^2}\frac{\partial r_i}{\partial u}+R\frac{\partial l}{\partial x}^T\frac{\partial l}{\partial u}\Biggr].\,(8c) ∂x∂u∂2c≈eRl[i=0∑Mwi∂x∂riT∂r2∂2ni∂u∂ri+R∂x∂lT∂u∂l].(8c)
其中,范数海森矩阵 ∂ 2 n ∂ r 2 \frac{\partial^2 \text{n}}{\partial r^2} ∂r2∂2n 是通过解析方法计算的。
3.3 样条
样条(Spline)在数学和工程应用中通常指“分段多项式插值”方法。最常见的样条是把时间轴或自变量区间分成若干段(这些分段的边界称为“节点”或“控制点”),在每一段上用一个(低阶)多项式来近似或插值数据,并在节点处满足一定的连续性条件(例如函数值连续、一阶导数或二阶导数连续等)。
正如下面所说明的,由于贝尔曼原理的要求,像 iLQG 这样的规划器需要直接的控制序列表示
u
0
:
T
u_{0:T}
u0:T。如果没有这一约束,控制可以被“压缩”为一个低维对象。实现这一目的的方法有很多,我们选择了最简单的一种:样条。行为轨迹被表示为一组带时间索引的节点或控制点,由一系列单调的时间点
τ
0
:
P
\tau_{0:P}
τ0:P 和参数值
θ
0
:
P
\theta_{0:P}
θ0:P 参数化,其中我们用简写
θ
=
θ
0
:
P
\theta=\theta_{0:P}
θ=θ0:P 表示。给定一个查询点
τ
\tau
τ,样条的求值由下式给出:
u
=
s
(
τ
;
(
τ
0
:
P
,
θ
)
)
.
(
9
)
u=s(\tau;(\tau_{0:P},\theta)).\qquad(9)
u=s(τ;(τ0:P,θ)).(9)
样条的解决方案:
- 将控制序列表示为样条函数 u = s ( τ ; θ ) u = s(\tau; \theta) u=s(τ;θ),其中 θ \theta θ 是少量控制点参数(如 P = 10 P=10 P=10)。
- 优化目标从直接调整 u 0 : T u_{0:T} u0:T 转为调整低维参数 θ \theta θ,显著降低搜索空间维度。
我们提供了三种样条实现:传统的立方 Hermite 样条、分段线性插值以及零阶保持。图 2 给出了相应的示意图。
图 2 | 控制器的基于时间索引的样条表示。利用参数点(黑色)构造零阶(品红色)、线性(橙色)和三次(蓝色)插值。
像样条这样的压缩表示的主要优点在于它们可以减少搜索空间。它们还可以平滑控制轨迹,这通常是期望的。样条函数属于线性基的范畴,其中包括傅里叶基和正交多项式。这一特点非常有用,因为它们允许将梯度从直接表示
∂
Π
\partial\Pi
∂Π 轻松传播回参数值
∂
θ
\partial\theta
∂θ。在我们的情况中,这相当于计算
∂
s
∂
θ
,
(
10
)
\frac{\partial s}{\partial \theta},\qquad(10)
∂θ∂s,(10)
该表达式具有简单的解析公式(具体细节见代码)。与其他线性基不同,样条具有一个便捷的特性:对参数值
θ
\theta
θ 进行界定也会限制样条轨迹。这一性质对于零阶和线性插值完全成立,而对于立方样条则大体成立。进行界定是很重要的,因为大多数物理系统会将控制限制在一定范围内,而在这些边界之外搜索毫无意义。立方、线性和零阶插值的表达式请参见附录 A。
3.4. 规划器
MJPC 包含两个基于导数的规划器。
iLQG:iLQG(等效地,我们称之为“iLQR”,因为我们没有使用 iLQG 最初为其开发的噪声敏感项 [LiandTodorov,2004]。我们保留“iLQG”这一名称,原因在于它的由来。) 规划器 [Tassa et al.,2012] 是 DDP 算法 [Jacobson and Mayne,1970] 的高斯-牛顿近似,通过利用一阶和二阶导数信息,对开环控制序列 u 0 : T u_{0:T} u0:T 进行近似牛顿步(采用动态规划 [Kalman,1964]),从而生成时变线性反馈策略:
u t = u ˉ t + K t ( x t − x ˉ t ) + α k t . ( 11 ) u_t=\bar{u}_t+K_t(x_t-\bar{x}_t)+\alpha k_t.\qquad(11) ut=uˉt+Kt(xt−xˉt)+αkt.(11)
其中,名义(或当前最佳)轨迹用上划线表示, K K K 为反馈增益矩阵, k k k 是当前动作轨迹的改进。对步长 α ∈ [ α m i n , 1 ] \alpha\in[\alpha_{min},1] α∈[αmin,1] 进行并行线搜索以寻找最佳改进。额外的改进措施包括约束向后传递 [Tassa et al.,2014],该方法强制实施动作限制和自适应正则化。由于 iLQG 的细节较为复杂,此处不再赘述,详情请参阅上述文献。
梯度下降:这种一阶规划器,也称为庞特里亚金极大值原理 [Mangasarian,1966],利用梯度信息来改进动作序列,此处动作序列以样条形式表示。总回报的梯度用于更新样条参数,并通过在步长 α ∈ [ α m i n , α m a x ] \alpha\in[\alpha_{min},\alpha_{max}] α∈[αmin,αmax] 上进行并行线搜索,更新公式为
θ ← θ − α ∂ J ∂ θ , ( 12 ) \theta\leftarrow\theta-\alpha\frac{\partial J}{\partial\theta},\qquad(12) θ←θ−α∂θ∂J,(12)
总梯度由下式给出:
∂ J ∂ θ = ∂ J ∂ Π ∂ Π ∂ θ , ( 13 ) \frac{\partial J}{\partial\theta}=\frac{\partial J}{\partial\Pi}\frac{\partial\Pi}{\partial\theta},\qquad(13) ∂θ∂J=∂Π∂J∂θ∂Π,(13)
其中,样条梯度
∂
Π
∂
θ
\frac{\partial\Pi}{\partial\theta}
∂θ∂Π 如公式 (10) 所示,而
∂
J
∂
Π
\frac{\partial J}{\partial\Pi}
∂Π∂J 则通过极大值原理计算。
令
λ
\lambda
λ 表示伴随变量,则关于
u
u
u 的梯度由下式给出:
λ j = ∂ c ∂ x j + ( ∂ f ∂ x j ) T λ j + 1 , ( 14 a ) \lambda_j=\frac{\partial c}{\partial x_j}+\Bigl(\frac{\partial f}{\partial x_j}\Bigr)^T\lambda_{j+1},\qquad(14a) λj=∂xj∂c+(∂xj∂f)Tλj+1,(14a)
∂ J ∂ u j = ∂ c ∂ u j + ( ∂ f ∂ u j ) T λ j + 1 , ( 14 b ) \frac{\partial J}{\partial u_j}=\frac{\partial c}{\partial u_j}+\Bigl(\frac{\partial f}{\partial u_j}\Bigr)^T\lambda_{j+1},\qquad(14b) ∂uj∂J=∂uj∂c+(∂uj∂f)Tλj+1,(14b)
这种一阶方法相较于如 iLQG 这样计算量更大的方法,其主要优势在于优化是在较小的样条参数空间中进行,而不是对整个(非参数化的)动作序列进行优化。
预测采样:这是一种简单的零阶、基于采样的预测控制方法,表现良好且易于理解。作为一个基本基线设计,该算法竟然与那些更为精妙的基于导数的算法具有出人意料的竞争力。
算法:以样条参数表示的名义动作序列通过随机搜索 [Matyas,1965] 进行迭代改进。在每一次迭代中,评估 N N N 个候选样条:包括名义样条本身和 N − 1 N-1 N−1 个以名义样条为均值、固定标准差 σ \sigma σ 的高斯噪声样本。采样后,通过夹持样条参数 θ \theta θ 将动作限制在控制边界内。对每个候选样条的总回报进行评估,并用表现最佳的候选样条更新名义序列。请参阅算法 4 以及附录 C 中的伪代码。预测采样虽然既不具有创新性也不十分高效,但它作为一个简单基线提供,详见下文讨论。
4. 结论
我们为三个示例任务提供了图形用户界面 (GUI) 的简短文本描述。 通过在 https://www.youtube.com/watch?v=Bdx7DuAMB6o&feature=youtu.be 上观看相关视频或更好地下载软件并与之交互,可以更好地理解它们。
4.1. 图形用户界面
图 3 中显示和描述的 MJPC GUI 提供了一个交互式模拟环境,以及包含研究人员可以设置的实时图和参数的模块。 直观的界面使研究人员能够以交互方式更改成本参数或规划器设置并立即在模拟环境和实时图中查看结果,从而简化政策设计,从而实现快速调试并加深对影响行为的因素的理解。
4.2. 例子
在以下示例中,我们展示了在单个 CPU 上模拟各种高维系统的复杂运动和操纵行为的综合能力。 此外,我们证明了这些行为对干扰和模拟与规划模型之间的不匹配具有鲁棒性,并且可以在新场景中非常快速地适应。 对于所有示例,单个更新的总计划时间在 1 到 20 毫秒之间。 我们在下面重点介绍了三个示例,并提供了软件的其他示例。 附录 B 中提供了目标和规划器设置的实验细节。
Humanoid: 这个 27-DOF 类人系统来自 DeepMind Control Suite [Tunyasuvunakool et al., 2020],有 21 个动作,任务是站立。 该系统可以在地板上初始化,并以对大干扰具有鲁棒性的方式快速站立。 如果足够大的干扰将人形机器人撞到地板上,系统将重新站起来(图 4a)。
Quadruped: 来自 MuJoCo Menagerie [MuJoCo Menagerie Contributors, 2022] 的四足 Unitree A1 [Unitree, 2022] 表现出敏捷的行为,可以穿越不平坦的地形,包括在陡坡上行走。 在速度较慢的机器上,四足动物常常难以上升。 在这种情况下,可以有效地利用模拟减速来为计划者提供额外的模拟时间来计划成功的爬升。 该系统还能够从背上滚下来并站起来(图 4b)。 为了执行像连续导航地形这样的长距离任务,设置了一系列目标姿势。 一旦达到目标,就会发生自动转换并设置下一个目标。
Hand: 同样来自 MuJoCo Menagerie 的 Shadow Hand [Tuffield and Elias, 2003],将立方体手动操作到所需的方向(图 4c),研究人员可以通过交互式设置目标方向来实时设置此目标。手部重新定向——具有复杂接触动力学的高自由度系统——被认为难以解决 [Chen et al., 2021],据我们所知,以前尚未从头开始实时解决。
5. 讨论
本文的主旨是通过可定制的、交互式的、开源的工具来实现预测控制。 我们相信响应式、基于 GUI 的工具是加速机器人研究的先决条件,并且由于它们的重要性,这些工具应该是可修改的,并且内部工作对研究人员来说是透明的。 我们希望我们的 MJPC 项目能够被社区所接受,并期待共同完善和扩展它。
5.1. 预测抽样
这种简单方法的有效性表明,快速、近似优化可以与更复杂的方法竞争,后者返回更好的解决方案但速度更低。 较高的计划率是否可以完全解释这种惊人的有效性? 我们相信还有另一个更微妙的原因。 传统优化的原则并没有很好地描述预测控制。 例如,采取不止一个优化步骤通常是没有意义的。 一旦单次迭代完成,测量状态的新值并重新规划比继续收敛到已经过时的问题的最小值更重要。 优化格局的不断变化使预测控制成为一个性质不同的问题,更像是冲浪而不是登山。 目标不是找到最小值,而是保持在最小值的吸引力盆地中。 这是一个不同的、较弱的标准,在这个标准下,简单的算法比用传统的收敛标准来衡量要好。
需要明确的是,预测抽样并不是一种新颖的算法。 相反,它是一个基线。 许多现有方法的极端情况,它可以不同地描述为“具有无限温度的 MPPI”、“具有非自适应分布的 CEM”或只是“简单的随机搜索”。 存在更好的算法,但没有一个是那么容易描述或实现的。 我们引入预测抽样不是因为它好,而是因为它不好。 这是最简单的基于采样的拍摄方法,因此为性能基准建立了一个下限。
5.2. 用例
在我们讨论限制及其可能的解决方案之前,有必要问一下现在如何使用 MJPC,如上所述?
-
任务设计: MJPC 使添加新任务、向 GUI 公开任务参数以及快速生成所需行为变得容易。 然后可以在任何其他选择的框架中重新执行该任务。 虽然我们还没有实现与时间相关的任务,但这是可能且容易的; 我们希望 MJPC 在运动跟踪任务中表现得特别出色。
-
数据生成: MJPC 可用于为基于学习的方法生成数据,即,它可以充当“专家策略”。 在这种情况下,通常情况下生成数据的模型和任务不必与学习者使用的模型和任务完全匹配,并且数据可能对广泛的设置有用。
-
预测控制研究: 对于对预测控制本身感兴趣的研究人员,MJPC 提供了一个理想的平台。 MJPC 可以即时切换规划器,其异步设计通过正确计算和奖励更快的规划器来提供公平的比较。
5.3. 局限和未来的工作
只能控制MuJoCo可以模拟的东西: 这是预测控制的一般限制,实际上更强,因为人们只能控制可以比实时快得多的模拟。 例如,很难想象对非常高 DoF 系统(如流体、布料或软体)进行如此快速的模拟。 一种解决方案是结合使用传统物理建模和学习来改进模拟,例如 [Ladicky et al., 2017]。 另一种可能性是完全从观察中学习动态。 这种通常被称为基于模型的强化学习的方法显示出巨大的前景 [Heess 等人,2015 年;Nagabandi 等人,2019 年;Wu 等人,2022 年]。 我们建议在可能的情况下,在尝试使用学习的动力学模型进行预测控制时,使用传统模拟器作为后备,如 [Schrittwieser et al., 2020] 中所述,以消除建模错误的影响。
近视: Predictive Control 的核心限制是它是近视的,无法超越固定的视野。 这可以通过三种概念上直接的方式得到改善:
-
学习策略: 通过添加学习策略,来自过去事件的信息可以通过策略泛化传播到现在 [Byravan et al., 2021]。 这种方法很有吸引力,因为它只能提高性能:在推出样本时,也会推出提案策略。 如果推出更好,它将成为新的标称。 一个习得的政策也有望导致更刻板的、周期性的行为,这在运动中很重要。
-
值函数: 用估计剩余成本的学习价值函数终止推出是增加有效范围的明显方法。 将学习到的策略和价值函数与基于模型的搜索相结合将构成“用于控制的 AlphaGo”[Silver 等人,2016 年,Springenberg 等人,2020 年]。
-
高级代理: 预测控制器可以用作分层控制设置中的低级模块。 在这种情况下,高级代理的动作具有设置预测控制器成本函数的语义。 预测控制器保持近视,而高级代理包含任务的长期“认知”方面。 这种情况的一个好处是高级动作的频率比低级控制(例如扭矩)所需的频率低得多。
硬件: MJPC是针对机器人研究的,这就引出了一个问题,它能用来控制硬件吗?
-
迁移学习: 如 5.2 中所述,使用 MJPC 生成数据然后传输到真实机器人已经成为可能。
-
估计: 控制硬件的最明显但最困难的途径是跟随经典控制的脚步,并将 MJPC 耦合到提供实时状态估计的估计器。 在估计很容易的极少数情况下,例如使用固定底座操纵器和静态物体,直接使用 MJPC 控制机器人将是一个简单的练习。 困难而有趣的案例涉及自由移动的身体和接触,如运动和操纵。 对于某些特定情况,如在平坦、均匀地形上的运动,不难获得合理的估计。 对于一般情况,我们认为按照 [Lowrey et al., 2014] 的方法进行接触感知估计是可能的,但这还有待观察。 相关地,我们认为高质量的估算器也需要与 MJPC 使用的相同类型的交互式 GUI 驱动界面。