(接上文)
反向传播
根据控制系统的控制目标,我们需要对系统的状态进行反向传播,即从系统的最终状态 x N x_N xN 开始,反向传播到系统的初始状态 x 0 x_0 x0 ,我们首先对 J N J_N JN 进行泰勒展开,根据泰勒展开的公式:
J N ( x N + δ x N ) = J N ( x N ) + δ J N ( x N ) ≈ J N ( x N ) + ∂ J N ( x N ) ∂ x N δ x N + 1 2 δ x N T ∂ 2 J N ( x N ) ∂ x N 2 δ x N = ℓ f ( x N ) + p N T δ x N + 1 2 δ x N T P N δ x N (12) \begin{aligned} J_N(x_N+\delta x_N)&=J_N(x_N)+\delta J_N(x_N)\\ &\approx J_N(x_N)+\frac{\partial J_N(x_N)}{\partial x_N}\delta x_N+\frac{1}{2}\delta x_N^T\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\delta x_N\\ &=\ell_f(x_N)+p_N^T\delta x_N+\frac{1}{2}\delta x_N^TP_N\delta x_N\\ \end{aligned} \tag{12} JN(xN+δxN)=JN(xN)+δJN(xN)≈JN(xN)+∂xN∂JN(xN)δxN+21δxNT∂xN2∂2JN(xN)δxN=ℓf(xN)+pNTδxN+21δxNTPNδxN(12)
即:
p N T = ∂ J N ( x N ) ∂ x N P N = ∂ 2 J N ( x N ) ∂ x N 2 (13) \begin{aligned} p_N^T&=\frac{\partial J_N(x_N)}{\partial x_N}\\ P_N&=\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\\ \end{aligned} \tag{13} pNTPN=∂xN∂JN(xN)=∂xN2∂2JN(xN)(13)
如果终末代价函数 J ^ ( x N ) \hat J(x_N) J^(xN) 是如下形式:
J ^ ( x N ) = ℓ f ( x N ) = 1 2 ( x N − x f ) T Q f ( x N − x f ) (14) \begin{aligned} \hat J(x_N)&=\ell_f(x_N)\\ &=\frac{1}{2}(x_N-x_f)^TQ_f(x_N-x_f)\\ \end{aligned} \tag{14} J^(xN)=ℓf(xN)=21(xN−xf)TQf(xN−xf)(14)
则有:
p N T = ∂ J N ( x N ) ∂ x N = ( x N − x f ) T Q f P N = ∂ 2 J N ( x N ) ∂ x N 2 = Q f (15) \begin{aligned} p_N^T&=\frac{\partial J_N(x_N)}{\partial x_N}\\ &=(x_N-x_f)^TQ_f\\ P_N&=\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\\ &=Q_f\\ \end{aligned} \tag{15} pNTPN=∂xN∂JN(xN)=(xN−xf)TQf=∂xN2∂2JN(xN)=Qf(15)
现在我们得到了轨迹尾部的 p p p 和 P P P ,下面我们来计算他们的递推关系,根据公式(5)和公式(8),有:
δ J ^ i ( x i ) = min δ u i δ J ~ i ( x i , u i ) = min δ u i [ Q x i T δ x i + Q u i T δ u i + 1 2 δ x i T Q x i 2 δ x i + 1 2 δ u i T Q u i 2 δ u i + 1 2 δ x i T Q x i u i δ u i + 1 2 δ u i T Q u i x i T δ x i ] (16) \begin{aligned} \delta \hat J_i(x_i) &= \min_{\delta u_i}\delta \tilde J_i(x_i,u_i)\\ &= \min_{\delta u_i}[Q_{x_i}^T\delta x_i+Q_{u_i}^T\delta u_i+\frac{1}{2}\delta x_i^TQ_{x_i^2}\delta x_i+\frac{1}{2}\delta u_i^TQ_{u_i^2}\delta u_i\\ &+\frac{1}{2}\delta x_i^TQ_{x_iu_i}\delta u_i+\frac{1}{2}\delta u_i^TQ_{u_ix_i}^T\delta x_i] \end{aligned} \tag{16} δJ^i(xi)=δuiminδJ~i(xi,ui)=δuimin[QxiTδxi+QuiTδui+21δxiTQxi2δxi+21δuiTQui2δui+21δxiTQxiuiδui+21δuiTQuixiTδxi](16)
为了使得 δ J ~ i ( x i ) \delta \tilde J_i(x_i) δJ~i(xi) 最小,我们需要对 δ J ~ i ( x i ) \delta \tilde J_i(x_i) δJ~i(xi) 求导,令导数为0,有:
∂ δ J ~ i ( x i ) ∂ δ u i = Q u i + 1 2 Q u i x i T δ x i + Q u i 2 δ u i + 1 2 Q x i u i δ x i = Q u i + Q u i x i T δ x i + Q u i 2 δ u i = 0 (17) \begin{aligned} \frac{\partial \delta \tilde J_i(x_i)}{\partial \delta u_i}&=Q_{u_i}+\frac{1}{2}Q_{u_ix_i}^T\delta x_i+Q_{u_i^2}\delta u_i+ \frac{1}{2} Q_{x_iu_i}\delta x_i\\ &=Q_{u_i}+Q_{u_ix_i}^T\delta x_i+Q_{u_i^2}\delta u_i = 0\\ \end{aligned} \tag{17} ∂δui∂δJ~i(xi)=Qui+21QuixiTδxi+Qui2δui+21Qxiuiδxi=Qui+QuixiTδxi+Qui2δui=0(17)
解上述方程,有:
δ u ^ i = − Q u i 2 − 1 ( Q u i + Q u i x i T δ x i ) ≜ K i δ x i + d i (18) \begin{aligned} \delta \hat u_i &= -Q_{u_i^2}^{-1}(Q_{u_i}+Q_{u_ix_i}^T\delta x_i)\\ &\triangleq K_i\delta x_i + d_i\\ \end{aligned} \tag{18} δu^i=−Qui2−1(Qui+QuixiTδxi)≜Kiδxi+di(18)
即:
K i = − Q u i 2 − 1 Q u i x i d i = − Q u i 2 − 1 Q u i (19) \begin{aligned} K_i &= -Q_{u_i^2}^{-1}Q_{u_ix_i}\\ d_i &= -Q_{u_i^2}^{-1}Q_{u_i}\\ \end{aligned} \tag{19} Kidi=−Qui2−1Quixi=−Qui2−1Qui(19)
将上述公式(18)代入公式(9),并展开,有:
δ J ~ i ( x i , u i ) = 1 2 [ δ x i K i δ x i + d i ] T [ Q x i 2 Q x i u i Q u i x i Q u i 2 ] [ δ x i K i δ x i + d i ] + [ Q x i Q u i ] T [ δ x i K i δ x i + d i ] = 1 2 δ x i T Q x i 2 δ x i + 1 2 ( K i δ x i + d i ) T Q u i 2 ( K i δ x i + d i ) + 1 2 δ x i T Q x i u i ( K i δ x i + d i ) + 1 2 ( K i δ x i + d i ) T Q u i x i δ x i + Q x i T δ x i + Q u i T ( K i δ x i + d i ) = 1 2 δ x i T [ Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i ] δ x i + [ Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u ] T δ x i + 1 2 d i T Q u i 2 d i + Q u i T d i (20) \begin{aligned} \delta \tilde J_i(x_i,u_i)&=\frac{1}{2} \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}^T \begin{bmatrix} Q_{x_i^2} & Q_{x_iu_i}\\ Q_{u_ix_i} & Q_{u_i^2} \end{bmatrix} \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}+ \begin{bmatrix} Q_{x_i} \\ Q_{u_i} \end{bmatrix}^T \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}\\ &=\frac{1}{2} \delta x_i^TQ_{x_i^2}\delta x_i+\frac{1}{2}(K_i\delta x_i+d_i)^TQ_{u_i^2}(K_i\delta x_i+d_i)\\ &+\frac{1}{2}\delta x_i^TQ_{x_iu_i}(K_i\delta x_i+d_i)+\frac{1}{2}(K_i\delta x_i+d_i)^TQ_{u_ix_i}\delta x_i\\ &+Q_{x_i}^T\delta x_i+Q_{u_i}^T(K_i\delta x_i+d_i)\\ &=\frac{1}{2} \delta x_i^T[Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}]\delta x_i\\ &+[Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_u]^T\delta x_i\\ &+\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ \end{aligned} \tag{20} δJ~i(xi,ui)=21[δxiKiδxi+di]T[Qxi2QuixiQxiuiQui2][δxiKiδxi+di]+[QxiQui]T[δxiKiδxi+di]=21δxiTQxi2δxi+21(Kiδxi+di)TQui2(Kiδxi+di)+21δxiTQxiui(Kiδxi+di)+21(Kiδxi+di)TQuixiδxi+QxiTδxi+QuiT(Kiδxi+di)=21δxiT[Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi]δxi+[Qxi+KiTQui2di+Qxiuidi+KiTQu]Tδxi+21diTQui2di+QuiTdi(20)
根据公式(7)的定义,有:
p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i (21) \begin{aligned} p_i&=Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_u\\ P_i&=Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \Delta \hat J_i&=\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ \end{aligned} \tag{21} piPiΔJ^i=Qxi+KiTQui2di+Qxiuidi+KiTQu=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi=21diTQui2di+QuiTdi(21)
上边的 p i p_i pi 是 δ J ^ i \delta \hat J_i δJ^i 的关于 δ x i \delta x_i δxi 的一阶项系数, P i P_i Pi 是 δ J ^ i \delta \hat J_i δJ^i 的关于 δ x i \delta x_i δxi 的二阶项系数, Δ J ^ i \Delta \hat J_i ΔJ^i 是 δ J ^ i \delta \hat J_i δJ^i 的常数项,论文中将 Δ J ^ i \Delta \hat J_i ΔJ^i 称为“代价的期望变化(expected change in cost)”,后边我们会将每一个时间步长的“代价的期望变化”相加,得到总的“代价的期望变化”,它将用来判断“前向传播”中每一次迭代是否满足线性搜索(Line Search)的条件,我对这个地方的处理有些困惑。 Δ J ^ i \Delta \hat J_i ΔJ^i 作为一个与 δ x i \delta x_i δxi 无关的常数,它不会影响后续对于 p i p_i pi 和 P i P_i Pi 及其之前的值的递推。
额外说明:观察公式(21)和公式(19),如果将 d i d_i di 代入 Δ J ^ i \Delta {\hat J}_i ΔJ^i 到中会得到一个它的更简洁的形式:
Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i = 1 2 ( − Q u i 2 − 1 Q u i ) T Q u i 2 ( − Q u i 2 − 1 Q u i ) + Q u i T ( − Q u i 2 − 1 Q u i ) = 1 2 Q u i T Q u i 2 − 1 Q u i − Q u i T Q u i 2 − 1 Q u i = − 1 2 Q u i T Q u i 2 − 1 Q u i (21.1) \begin{aligned} \Delta \hat J_i&=\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ &=\frac{1}{2}(-Q_{u_i^2}^{-1}Q_{u_i})^TQ_{u_i^2}(-Q_{u_i^2}^{-1}Q_{u_i})+Q_{u_i}^T(-Q_{u_i^2}^{-1}Q_{u_i})\\ &=\frac{1}{2}Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}-Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}\\ &=-\frac{1}{2}Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}\\ \end{aligned} \tag{21.1} ΔJ^i=21diTQui2di+QuiTdi=21(−Qui2−1Qui)TQui2(−Qui2−1Qui)+QuiT(−Qui2−1Qui)=21QuiTQui2−1Qui−QuiTQui2−1Qui=−21QuiTQui2−1Qui(21.1)
不过我们我们不使用这个形式,因为在后续的“前向传播”过程中的LineSearch过程会通过一个scale参数来调整 d i d_i di,因此我们把每一个点的 Δ J ^ i \Delta \hat J_i ΔJ^i 都写成一个关于 d i d_i di 的形式,并且分别存储它的一次项和二次项的系数,即 Q u i Q_{u_i} Qui 和 Q u i 2 Q_{u_i^2} Qui2 ,这样在调整scale参数的时候,我们只需要对这两个系数进行scale就可以了。
正向传播
现在我们已经计算了每个时间步长的最佳反馈增益,现在我们通过模拟动力学来更新标称轨迹。由于初始状态是固定的,整个正向模拟可以通过以下公式表示:
δ x i = x ‾ k − x k δ u i = K i δ x i + α d i u ‾ i = u i + δ u i x ‾ i + 1 = f ( x ‾ i , u ‾ i ) (22) \begin{aligned} \delta x_i &= \overline x_k - x_k\\ \delta u_i &= K_i\delta x_i + \alpha d_i\\ \overline{u}_i &= u_i + \delta u_i\\ \overline{x}_{i+1} &= f(\overline{x}_i,\overline{u}_i)\\ \end{aligned} \tag{22} δxiδuiuixi+1=xk−xk=Kiδxi+αdi=ui+δui=f(xi,ui)(22)
其中 x ‾ i \overline x_i xi 和 u ‾ i \overline u_i ui 是更新之后名义轨迹, 0 ≤ α ≤ 1 0 \le\alpha\le1 0≤α≤1 是一个对于前馈项的缩放因子。
与所有非线性优化一样,需要沿着下降方向进行线路搜索,以确保足够的代价的降低,我们使用参数α采用简单的回溯线搜索。在应用公式(22)以获取候选状态和控制轨迹之后,我们计算了代价的实际减少与预期减少的比率:
z = Δ J Δ J ^ ( α ) = J ( x ‾ 0 , U ‾ ) − J ( x 0 , U ) ∑ i = 0 N − 1 Δ J ^ i ( α ) (23) z=\frac{\Delta J}{\Delta \hat J(\alpha)}=\frac{J(\overline x_0,\overline U)-J(x_0,U)}{\sum_{i=0}^{N-1}\Delta \hat J_i(\alpha)} \tag{23} z=ΔJ^(α)ΔJ=∑i=0N−1ΔJ^i(α)J(x0,U)−J(x0,U)(23)
其中:
Δ J ^ ( α ) = ∑ i = 0 N − 1 Δ J ^ i ( α ) = ∑ i = 0 N − 1 [ α 2 1 2 d i T Q u i 2 d i + α Q u i T d i ] (24) \begin{aligned} \Delta \hat J(\alpha) &= \sum_{i=0}^{N-1}\Delta \hat J_i(\alpha)\\ &=\sum_{i=0}^{N-1}[\alpha^2\frac{1}{2}d_i^TQ_{u_i^2}d_i+\alpha Q_{u_i}^Td_i]\\ \end{aligned} \tag{24} ΔJ^(α)=i=0∑N−1ΔJ^i(α)=i=0∑N−1[α221diTQui2di+αQuiTdi](24)
其中 Δ J ^ i ( α ) \Delta \hat J_i(\alpha) ΔJ^i(α) 是公式(21)中的 Δ J ^ i \Delta \hat J_i ΔJ^i 的被 α \alpha α 参数化之后的结果。 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 可以在“前向传播”时,通过分别存储公式(24)中的两项然后将它们和 α \alpha α 和 α 2 \alpha^2 α2 相乘来计算高效的计算。
如果 z z z 在 [ β 1 , β 2 ] [\beta_1,\beta_2] [β1,β2] 之间,通常是 [ 1 e − 4 , 10 ] [1e-4,10] [1e−4,10] ,则我们接受这个候选轨迹,否则我们将 α \alpha α 缩小到 γ α \gamma\alpha γα ,其中 0 < γ < 1 0<\gamma<1 0<γ<1 ,通常是 γ = 0.5 \gamma=0.5 γ=0.5 。我们重复这个过程,直到 z z z 在 [ β 1 , β 2 ] [\beta_1,\beta_2] [β1,β2] 之间。
我们可以考察 α = 0 \alpha=0 α=0 这个极限情况,根据公式(22),有:
δ x 0 = x ‾ 0 − x 0 δ u 0 = K i δ x 0 + α d i \begin{aligned} \delta x_0 &= \overline x_0 - x_0\\ \delta u_0 &= K_i\delta x_0 + \alpha d_i\\ \end{aligned} δx0δu0=x0−x0=Kiδx0+αdi
因为 α = 0 \alpha=0 α=0 且 x ‾ 0 = x 0 \overline x_0 = x_0 x0=x0 ,所以 δ u 0 = 0 \delta u_0=0 δu0=0 ,根据公式(22), u ‾ 0 \overline u_0 u0 相比于 u 0 u_0 u0 没有任何变化,相应的 x ‾ 1 \overline x_1 x1 相对于 x 1 x_1 x1 也没有变化,因此在这个情况下整条轨迹都不会有任何变动。相反,如果 α > 0 \alpha > 0 α>0 ,那么整个轨迹会根据 α \alpha α 的值而有所变化, α \alpha α 的大小决定了变化的程度。如果按照这个逻辑,我们可以这样理解公式(23)中的 z z z :其中 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 是将代价函数线性化之后的期望的代价变化, Δ J \Delta J ΔJ 则表示轨迹更新之后代价的实际变化,如果我们选取的 α \alpha α 没有使得更新的轨迹偏离线性化的位置过多,那么 Δ J \Delta J ΔJ 和 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 的比值不会太大,即 z z z 的值不会太大,反之,如果我们选取的 α \alpha α 使得更新的轨迹偏离线性化的位置过多,那么 Δ J \Delta J ΔJ 和 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 的比值会很大,即 z z z 的值会很大,这样我们就可以通过 z z z 的值来判断我们选取的 α \alpha α 是否合适。
正则化(Regularization)
由于数值计算精度的问题, Q u i 2 Q_{u_i^2} Qui2 可能会不满足正定条件,因此我们需要对 Q u i 2 Q_{u_i^2} Qui2 进行正则化,有以下两种正则化的方法:
方法1:
根据公式(11):
Q ‾ u i 2 = Q u i 2 + ρ I = ℓ u i 2 + B i T P i + 1 B i + ρ I d i = − Q ‾ u i 2 − 1 Q u i K i = − Q ‾ u i 2 − 1 Q u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u i P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i (25) \begin{aligned} \overline{Q}_{u_i^2} &= Q_{u_i^2}+\rho I\\ &= \ell_{u_i^2}+B_i^TP_{i+1}B_i+\rho I\\ \\ d_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_i}\\ K_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_ix_i}\\ \\ \Delta \hat J_i &= \frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ p_i &= Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_{u_i}\\ P_i &= Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \end{aligned} \tag{25} Qui2diKiΔJ^ipiPi=Qui2+ρI=ℓui2+BiTPi+1Bi+ρI=−Qui2−1Qui=−Qui2−1Quixi=21diTQui2di+QuiTdi=Qxi+KiTQui2di+Qxiuidi+KiTQui=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi(25)
方法2:
根据公式(11):
Q ‾ u i 2 = ℓ u i 2 + B i T ( P i + 1 + ρ I ) B i Q ‾ u i x i = ℓ u i x i + B i T ( P i + 1 + ρ I ) A i d i = − Q ‾ u i 2 − 1 Q u i K i = − Q ‾ u i 2 − 1 Q ‾ u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u i P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i (26) \begin{aligned} \overline{Q}_{u_i^2} &= \ell_{u_i^2}+B_i^T(P_{i+1}+\rho I)B_i\\ \overline{Q}_{u_ix_i} &= \ell_{u_ix_i}+B_i^T(P_{i+1}+\rho I)A_i\\ \\ d_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_i}\\ K_i &= -\overline{Q}_{u_i^2}^{-1}\overline{Q}_{u_ix_i}\\ \\ \Delta \hat J_i &= \frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ p_i &= Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_{u_i}\\ P_i &= Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \end{aligned} \tag{26} Qui2QuixidiKiΔJ^ipiPi=ℓui2+BiT(Pi+1+ρI)Bi=ℓuixi+BiT(Pi+1+ρI)Ai=−Qui2−1Qui=−Qui2−1Quixi=21diTQui2di+QuiTdi=Qxi+KiTQui2di+Qxiuidi+KiTQui=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi(26)
注意 Q u i 2 Q_{u_i^2} Qui2 和 Q ‾ u i 2 \overline Q_{u_i^2} Qui2 以及 Q u i x i Q_{u_ix_i} Quixi 和 Q ‾ u i x i \overline Q_{u_ix_i} Quixi 在使用上的细微区别,前者被用来计算期望的代价变化 Δ J ^ i \Delta \hat J_i ΔJ^i 和向后传播的递归,正则化之后的后者被用来计算反馈增益 K i K_i Ki 和前馈项 d i d_i di 。
约束(Constraints)
要处理约束,需要使用增广拉格朗日法(Augmented Lagrange Method) 对原有的代价 J ( x 0 , U ) J(x_0,U) J(x0,U) 进行增广,在这里暂时不做讨论,后边会有专门的文章来讨论增广拉格朗日法在iLQR中的应用。即AL-iLQR算法。
终止条件
iLQR一般具有三种终止条件:
- 代价函数的变化量小于某个阈值,即 ∣ J p r e − J ∣ < ϵ \vert J_{pre}-J\vert <\epsilon ∣Jpre−J∣<ϵ 。
- 前馈增益项的变化量小于某个阈值,即 ∣ d p r e − d ∣ < ϵ \vert d_{pre}-d\vert <\epsilon ∣dpre−d∣<ϵ 。
- 迭代次数达到某个阈值。
到此为止,我们已经完成了对于iLQR算法的讨论。