目录
1 前言
本人研究生新人,自动驾驶领域小白一枚,目前在跟着学习MIT 16.S498 Fall 2019课程 (Risk Aware and Robust Nonlinear Planning) ,我希望能做一些笔记用于记录自己打卡并及时反刍,图片均来自课件,课件原为英文,许多名词是自己翻译的。理工男文字水平有限,但是很愿意和大家交流,也感激大佬指点。
一家之见,错误常有,希望不喜勿喷,共勉。
课程链接:MIT 16.S498
附有课件和代码
2 笔记正文
本章主要是对不确定性控制规划内容的一个引入,了解最基本的难点和方法论,随后逐渐深入。
2.1 Introduction and Course Overview
本课程主要解决的是在充满不确定性的环境中,如何对机器人进行运动规划的问题。由于不确定性的存在,我们几乎不可能对系统当前状态或者未来行为进行精确且充分的描述。如下图中对系统状态,体现了一个梦想和现实的差距。
2.1.1 Source of Uncertainty
课件中简要罗列了一些不确定性的来源,主要从环境和系统自身两大方面来理解。
- 环境
- 传感器测量噪声
- 例如,当我们尝试用传感器去感知障碍物或者机器人的位置,测量值往往受到噪声干扰。
- 控制干扰
- 例如,几乎没有规律的风力扰动。
- 未能完全建模的环境
- 例如,模型训练程度较为粗糙(残差动力学)。
- 意图
- 例如,动态环境中其他agents的未来行为
- 传感器测量噪声
- 系统
- 不够完美的系统模型
- 例如,系统中可能存在一些未知的参数;(个人觉得比如简单车辆模型并未考虑到的车胎刚体系数)例如,未建模的动力学模型(比如当你使用一个线性模型去近似非线性,问题易解但总会有一定的代价)
- 不够完美的系统模型
2.1.2 How to Deal with Uncertainty? — Robust Approaches
鲁棒方法实际上比较保守且不易实现。它重点强调,整个规划必须对所有可能的不确定性都有效,即这是一种排除万难的上上策。课件中P11-16很形象地使用了,一个智能小车需要绕过一个可移动障碍物来到达目的地的例子来进行了说明。
如下图Robust Approaches,假如可移动障碍物的运动范围已知且有限,那么鲁棒方法论提出这时候的道路规划应该采取一种完全绕开障碍物的运动范围(这个范围被称为不确定性集合, Uncertainty Set)的控制方法。
但是,如下图,当不确定性集合遍布了所有可行路线,这个时候鲁棒方法由于过于保守,就会无解。这时候我们就不得不采取另一种方法。
2.1.3 How to Deal with Uncertainty? — Risk Bounded Approaches
不同地,风险边界方法强调的是规划只要有效的概率高即可。这种方法认为,风险的存在并不总是0或1,而是将风险建模成一种概率分布,只要选择风险低的地方通过即可,如下图。除此之外,课件中还是用了几个非常形象的图片来阐述这两种方法的关系,非常有趣。
2.2 Approaches and Challenges
这部分从基于优化的规划算法开始引入,介绍这些算法在不确定性中的应用。主要包括:
- 鲁棒优化 Robust Optimization Based Planning
- 风险感知优化 Risk Aware Optimization Based Planning
- 机会优化 Chance Optimization
- 机会约束优化 Chance Constrained Optimization
- 分布式鲁棒机会约束优化 Distributionally Robust Chance Constraint Optimization
2.2.1 Robust Optimization Based Planning
将存在不确定性的规划问题化成一个非线性约束优化问题,通常这种方法会将优化函数和约束建模成一系列多项式函数,因为根据斯通维尔斯特拉斯定理, 每个定义在一个闭集上的连续函数都可以用一个多项式函数一致地逼近。非线性约束优化问题的数学形式如下:
minimize
x
∈
R
n
p
(
x
)
subject to
g
i
(
x
,
ω
)
≥
0
,
i
=
1
,
.
.
.
,
n
g
,
∀
ω
∈
Ω
(1)
\begin{aligned}&\underset{x\in\mathbb{R}^n}{\operatorname*{minimize}}\quad&p(x)\\&\text{subject to}\quad&g_i(x,\omega)\geq0,i=1,...,n_g,\forall\omega\in\Omega\end{aligned}\tag{1}
x∈Rnminimizesubject top(x)gi(x,ω)≥0,i=1,...,ng,∀ω∈Ω(1)
其中的
ω
\omega
ω就代表了不确定性,而
Ω
\Omega
Ω便是不确定性集合。以上数学形式就可以套用于求解2.1.2中的路线规划问题,写成:
minimize
u
k
∣
k
=
0
N
−
1
∑
k
=
0
N
−
1
u
2
(
k
)
subject to
x
0
=
x
0
∗
,
x
N
∈
x
N
∗
x
k
+
1
=
f
(
x
k
,
u
k
,
ω
k
)
x
k
∈
χ
s
a
f
e
(
ω
o
b
s
)
∀
ω
x
k
∈
Ω
x
,
∀
ω
o
b
s
∈
Ω
o
b
s
u
k
∈
U
(2)
\begin{aligned} &\begin{array}{l}\text{minimize}\\u_k\mid_{k=0}^{N-1}\end{array}&& \begin{aligned}\sum_{k=0}^{N-1}u^2(k)\end{aligned} \\ &\text{subject to}&& x_{0}=x_{0}^{*},x_{N}\in x_{N}^{*} \\ &&&\begin{aligned}x_{k+1}=f(x_k,u_k,\omega_k)\end{aligned} \\ &&&x_{k}\in\chi_{safe}(\omega_{obs}) \\ &&&\forall\omega_{x_{k}}\in\Omega_{x},\forall\omega_{obs}\in\Omega_{obs} \\ &&&u_{k}\in\mathcal{U} \end{aligned}\tag{2}
minimizeuk∣k=0N−1subject tok=0∑N−1u2(k)x0=x0∗,xN∈xN∗xk+1=f(xk,uk,ωk)xk∈χsafe(ωobs)∀ωxk∈Ωx,∀ωobs∈Ωobsuk∈U(2)
2.2.2 Risk Aware Optimization Based Planning
基于风险感知优化的规划方法,课件中主要介绍了两类,一类被称为机会优化,另一类被称为机会约束优化。这两种优化方法可以用以下抽象形式进行表达:
值得注意的是两者之间存在相似但却又有本质不同,这种关系很微妙,具体实现起来两种方法的差异暂时未知。最好区分的一点就是,后者名称中的“constrained”说明了概率分布是被用作约束条件来限制优化函数的,而前者的目的则是为了去最优化一个概率值。课件中还采用了大量的例子(其中包括机会约束的轨迹优化,投资组合选择 )来补充说明两种方法的实现,笔记中就不再展开赘述。
2.2.3 Distributionally Robust Chance Constraint Optimization
分布式鲁棒机会约束优化,一堆buff叠在一起。实际上,这种方法主要针对的是概率分布作为模型约束,而概率分布模型中存在不确定性参数(例如,高斯概率分布中的均值和标准差)。抽象形式表达如下:
2.3 Challenges
求解这类存在不确定性的优化算法会遇到一系列的困难,课件中提到了其中三种:
- 非凸性
- 非凸问题通常有着多个局部最优解并且对初始点敏感,因此难以求得全局最优解。
- 计算复杂度
- 无论是机会优化还是鲁棒约束优化,它们的计算成本都比较高,具体为什么高在课件P52-53有进一步介绍。
- *不确定性的传播
- 假如一个模型存在不确定性,那么这种不确定性必然会跟随着系统状态的更新迭代而传播下去,扰动效果得到叠加且更难以预料。如下飞机的运动学模型:
x k + 1 = x k + ( v k + ω 1 k ) cos ( θ k + ω 2 k ) + ω 3 k y k + 1 = y k + ( v k + ω 1 k ) sin ( θ k + ω 2 k ) + ω 4 k (3) \begin{aligned}x_{k+1}&=x_k+(v_k+\omega_{1_k})\cos(\theta_k+\omega_{2_k})+\omega_{3_k}\\y_{k+1}&=y_k+(v_k+\omega_{1_k})\sin(\theta_k+\omega_{2_k})+\omega_{4_k}\end{aligned}\tag{3} xk+1yk+1=xk+(vk+ω1k)cos(θk+ω2k)+ω3k=yk+(vk+ω1k)sin(θk+ω2k)+ω4k(3)
就会得到这样的轨迹:
- 假如一个模型存在不确定性,那么这种不确定性必然会跟随着系统状态的更新迭代而传播下去,扰动效果得到叠加且更难以预料。如下飞机的运动学模型:
2.4 Technical Idea and Mathematical Tools
为了能够有效地求解这类问题,最常见且高效的方法就是凸放松 (Convex Relaxation) ,即通过处理将原本是非凸的优化问题变为凸优化问题(课件结尾有简单介绍这样做的代价),以半正定规划 (Semidefinite Program, SDP)的方式来进行凸优化。
半正定规划,听起来复杂其实就是把整个优化问题化成线性规划的形式来进行求解,如下,变量升维但是却很方便用于计算机求解:
能够做到凸化的理论工具有两种,一种是非负多项式理论,另一种是矩理论。无论是哪一种方法,个人认为其本质都是在绕开找寻决策变量这一步。
- 非负多项式理论
- 基于非负多项式的半正定放松是将非线性优化问题进行变形,即不是去找最优的一组决策变量 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn),而是去找由决策变量构成的一个非负多项式,即 P ( x 1 , x 2 , . . . , x n ) ≥ 0 P(x_1,x_2,...,x_n)\geq0 P(x1,x2,...,xn)≥0;
- 将原始的目标函数以及约束转换成非负多项式的系数。
- 矩理论
- 将决策变量定义为随机变量;
- 不先求解确定的最优决策变量,而是先求其概率分布,即 p r ( x 1 , x 2 , . . . , x n ) pr(x_1,x_2,...,x_n) pr(x1,x2,...,xn);
- 随后再找出确切解
2.5 Application
这部分几乎都是举例。将上述所提及方法的常见应用进行了罗列,建议直接阅读课件。