BVP问题
常见的 BVP 问题通常具有如下特点
- BVP是状态栅格采样算法(state sampled lattice planning)的基础。
- 没有通用的解,一般都是 case by case 的设计。
- 通常是一个复杂的数值优化问题。
Example
设计一个满足无人机动力学约束的轨迹 \(x(t)\) 满足如下约束:
- \(x(0)=a\)
- \(x(T)=b\)
当然这里我们只考虑了一个维度上的,无人机的三个维度可以分开进行考虑,轨迹如图所示:
我们通常使用一个多项式(polynominal)来表达一个轨迹,假设在这里使用一个五次多项式来模拟生成的轨迹(trajectory): $$ x(t)=c_5t^5+c_4t^4+c_3t^3+c_2t^2+c_1t^1+c_0 $$ 约束条件为:Position | Vecocity | Acceleration | |
---|---|---|---|
\(t=0\) | \(a\) | 0 | 0 |
\(t=T\) | \(b\) | 0 | 0 |
然后求解如下方程即可:
\[\left[\begin{array}{l} a \\ b \\ 0 \\ 0 \\ 0 \\ 0 \end{array}\right]=\left[\begin{array}{cccccc} 0 & 0 & 0 & 0 & 0 & 1 \\ T^{5} & T^{4} & T^{3} & T^{2} & T & 1 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 5 T^{4} & 4 T^{3} & 3 T^{2} & 2 T & 1 & 0 \\ 0 & 0 & 0 & 2 & 0 & 0 \\ 20 T^{3} & 12 T^{2} & 6 T & 2 & 0 & 0 \end{array}\right]\left[\begin{array}{l} c_{5} \\ c_{4} \\ c_{3} \\ c_{2} \\ c_{1} \\ c_{0} \end{array}\right] \]矩阵的第一行和第二行很容易得到,分别把 \(t=0\) 和 \(t=T\) 带入 \(x(t)\) 的多项式即可。但是后面的两行是怎么得到的呢?首先高中物理就知道位置的导数是速度,速度的导数是加速度,那么对 \(x(t)\) 的多项式进行两次求导,然后同样也是能知道其导数在 \(x=t\)和 \(x=T\) 时刻的值的,所以矩阵的后四行就是将这些值带入得到的。
但是如果上面的多项式是更高的次数时,我们所得到的解通常是无穷多个,此时哪个是最优解呢?我们不得而知,因此就引出了Optimal Boundary Value Problem (OBVP),即最优BVP问题的求解。
OBVP 问题
首先要对系统进行建模,构建出问题的一个代价函数(cost function),然后将其最小化求解即可。这里还是以无人机的模型为例子,我们要最小化无人机的控制变量在时间段 \(0-T\) 内的积分,即:
\[\begin{align} J_{\Sigma}=\sum_{k=1}^{3} J_{k}, J_{k}=\frac{1}{T} \int_{0}^{T} j_{k}(t)^{2} dt \\ State: s_{k}=\left(p_{k}, v_{k}, a_{k}\right) \ \ Input: u_{k}=j_{k} \\ System model: \quad \dot{S}_{k}=f_{s}\left(s_{k}, u_{k}\right)=\left(v_{k}, a_{k}, j_{k}\right) \\ \end{align} \]如果我们在本案例中只考虑其中的一个轴的话,那么系统的方程就变成了
\[System model: \quad \dot{S}=f\left(s, u\right)=\left(v, a, j\right) \]其中 \(J_{\Sigma}=\sum_{k=1}^{3} J_{k}\) 表示的是三个轴的,但是在推导的时候暂时只先考虑一个轴,最终进行叠加即可。\(j_{k}(t)^{2}\) 即为系统的输入,这里我们把速度也当做了系统的状态变量,因此本系统中的输入为加加速度,通常成为 jerk, 而系统的状态变量主要包括了位置 \(p_k\),速度 \(v_k\) 和加速度 \(a_k\)。系统的一个状态方程则如上所示,在对系统状态求导之后就是 \((v,a,j)\),分别对应系统的三个状态变量。
系统的一个方程和损失函数知道后,下面就是求解了,在求解之前,我们首先来认识一下 Pontryain’s minimum principle
,这里我们不对该定理的证明作任何的叙述,只要知道该定理能够帮助我们求解 OBVP 问题即可,看到该定理就直接 admit 它即可,Pontryain’s minimum principle
如下所示:
\(\lambda(t)\) 是下面微分方程的解,右侧表示的是 Hamiltonian 函数对状态变量各个分量的导数:
\[\dot{\lambda}(t)=-\nabla_{s} H\left(s^{*}(t), u^{*}(t), \lambda(t)\right) \]同时要满足或着说具有如下的界限条件:
\[\lambda(T)=-\nabla h\left(s^{*}(T)\right) \]最优的关于\(t\)的控制输入是:
\[u^{*}(t)=\arg \min _{u(t)} H\left(s^{*}(t), u(t), \lambda(t)\right) \]其中
- \(s^{*}\) 状态,关于时间 t 的最优的方程
- \(u^{*}\) 控制输入,关于时间 t 的最优的方程
而一个通用的损失函数通常是具有如下形式的
分别解释一下 final state cost 和 transition cost
- final state
假设我们的无人机最终不强制一定要到达我们规定的目标点,允许有一些偏差,那么该项就存在,表示的是在无人机的运行过程中衡量距离目标点的一个代价函数。 - transition cost
假设我们有一个硬性约束,要求无人机一定要达到我们最终规定的点,那么该函数只有两个值,一个是当无人机到达该目标点的时候,函数值为0,另一个是当没有到达目标点的时候,函数值为无穷大,因此该函数此时是不可导的,我们也不将其纳入考虑范围内。
一个通用的 Hamiltonian 函数应该具有如下的形式:
\[\begin{aligned} H(s, u, \lambda) & =g(s,u)+\lambda^{T} f_{s}(s, u) \\ \lambda & =(\lambda_{1},\lambda_{2},\lambda_{3} ) \end{aligned} \]根据 Pontryain 的最小原则,我们首先引入 costate:\(\lambda = \lambda_{1},\lambda_{2},\lambda_{3}\),因为我们暂时先只考虑一个轴,所以这里只有三个 \(lambda\),实际上根据我们上面的建模,系统的状态变量是有9个的,应该有9个 \(\lambda\),但是每个轴又都是独立的,因此可以分开证明考虑。
同时设计Hamiltonian函数:
从上到下只是进行了一个简单的展开,注意这里还是只考虑了单一的轴。
标签:right,OBVP,函数,Value,无人机,Boundary,lambda,array,left From: https://www.cnblogs.com/weihao-ysgs/p/bvp_problem.html