(四)路径规划算法---Minimum Snap 轨迹优化问题

Minimum Snap 轨迹优化问题

1. 前景

上一章介绍了OBVP的基本原理,但OBVP更多的关心从起点到终点,如何规划一条最优的路径,但是如果中间出现很多个必经节点(例如巡检工作),则需要经过多次OBVP进行计算。那么出现这种情况可以通过本章的算法进行解决。
在这里插入图片描述
一般最小化Jerk(acceleration的导数),目的用于最小化角速度,可用于视觉跟踪(最小化视觉变化率)。最小化snap(jerk的导数)可以节省能量。在实际情况下,具体最小化哪种还需要从时间的准确度进行综合衡量。

导数次数位置姿态
0Position
1Velocity
2AccelerationRotation
3JerkAngular Velocity
4SnapAngular Acceleration

2. 基本原理

2.1 轨迹生成条件

  • 边界条件:起点、终点状态(位置、速度、加速度等)
  • 中间点:可有 A ∗ 、 R R T ∗ A^*、RRT^* ARRT算法提供
  • 评价函数:通过评价函数得到轨迹的平滑性指标。

2.2 评价函数

f ( t ) = { f 1 ( t ) = ∑ i = 0 N p 1 , t t i T 0 ≤ t ≤ T 1 f 2 ( t ) = ∑ i = 0 N p 2 , t t i T 1 ≤ t ≤ T 2 . . . f M ( t ) = ∑ i = 0 N p M , t t i T M − 1 ≤ t ≤ T M f(t) = \left\{ {\begin{matrix} {{f_1}(t) = \sum\nolimits_{i = 0}^N {{p_{1,t}}{t^i} \quad \quad{T_0} \le t \le {T_1}} }\\ {{f_2}(t) = \sum\nolimits_{i = 0}^N {{p_{2,t}}{t^i} \quad \quad{T_1} \le t \le {T_2}} }\\ {...}\\ {{f_M}(t) = \sum\nolimits_{i = 0}^N {{p_{M,t}}{t^i} \quad \quad {T_{M - 1}} \le t \le {T_M}} } \end{matrix}} \right. f(t)=f1(t)=i=0Np1,ttiT0tT1f2(t)=i=0Np2,ttiT1tT2...fM(t)=i=0NpM,ttiTM1tTM

通过上式可知,每一段轨迹均为多项式表示,为了简化计算过程,每一段轨迹的参数系数一致,即轨迹阶数一致。其次每段轨迹的时间 T T T是固定的,并不像OBVP那样可得到最优的时间 T T T

因此目标函数,即最小化 f ( t ) f(t) f(t)。单段轨迹 f ( t ) f(t) f(t)矩阵化简得。其中 f ( 4 ) f^{(4)} f(4)中的 4 4 4表示Minimum Snap,状态变量为 ( p , v , a , j ) (p,v,a,j) (p,v,a,j) 4个;对 f ( 4 ) f^{(4)} f(4)进行平方处理,目的是为了防止方程中正负号相消,这点类似最小二乘算法中的平方。
f ( t ) = ∑ i p i t i ⇒ f ( 4 ) ( t ) = ∑ i ≥ 4 i ( i − 1 ) ( i − 2 ) ( i − 3 ) t i − 4 p i ⇒ ( f ( 4 ) ( t ) ) 2 = ∑ i ≥ 4 , l ≥ 4 i ( i − 1 ) ( i − 2 ) ( i − 3 ) l ( l − 1 ) ( l − 2 ) ( l − 3 ) t i + l − 8 p i p l \begin{array}{l} f(t) = \sum\limits_i {{p_i}{t^i}} \\ \Rightarrow {f^{(4)}}(t) = \sum\limits_{i \ge 4} {i(i - 1)(i - 2)(i - 3){t^{i - 4}}{p_i}} \\ \Rightarrow {({f^{(4)}}(t))^2} = \sum\limits_{i \ge 4,l \ge 4} {i(i - 1)(i - 2)(i - 3)l(l - 1)(l - 2)(l - 3){t^{i + l - 8}}{p_i}{p_l}} \end{array} f(t)=ipitif(4)(t)=i4i(i1)(i2)(i3)ti4pi(f(4)(t))2=i4,l4i(i1)(i2)(i3)l(l1)(l2)(l3)ti+l8pipl
单段的目标函数如下,其中 J j , p j , Q j J_j,\bf p_j, \bf Q_j Jj,pj,Qj均为轨迹 j j j段所对应的目标函数、多项式系数所组成的向量、权重矩阵。
J ( T ) = ∫ T j − 1 T j ( f ( 4 ) ( t ) ) 2 d t = [ ⋮ p i ⋮ ] T [ ⋮ ⋯ i ( i − 1 ) ( i − 2 ) ( i − 3 ) l ( l − 1 ) ( l − 2 ) ( l − 3 ) i + l − 7 T i + l − 7 ⋯ ⋮ ] [ ⋮ p i ⋮ ] ⇒ J j ( T ) = p j T Q j p j \begin{matrix} J(T) = \int_{{T_{j - 1}}}^{{T_j}} {{{({f^{(4)}}(t))}^2}dt} \\ = {\left[ {\begin{matrix} \vdots \\ {{p_i}}\\ \vdots \end{matrix}} \right]^T}\left[ {\begin{matrix} {}& \vdots &{}\\ \cdots &{\frac{{i(i - 1)(i - 2)(i - 3)l(l - 1)(l - 2)(l - 3)}}{{i + l - 7}}{T^{i + l - 7}}}& \cdots \\ {}& \vdots &{} \end{matrix}} \right]\left[ {\begin{matrix} \vdots \\ {{p_i}}\\ \vdots \end{matrix}} \right]\\ \Rightarrow {J_j}(T) = {\bf{p}}_j^T{{\bf{Q}}_j}{{\bf{p}}_j} \end{matrix} J(T)=Tj1Tj(f(4)(t))2dt=piTi+l7i(i1)(i2)(i3)l(l1)(l2)(l3)Ti+l7piJj(T)=pjTQjpj
那么整个 M M M段的目标函数为
J = P T Q P = [ p 1 p 2 ⋮ p M ] T [ Q 1 0 0 0 0 Q 2 0 0 0 0 ⋱ 0 0 0 0 Q M ] [ p 1 p 2 ⋮ p M ] J = {{\bf{P}}^T}{\bf{QP}} = {\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ {{{\bf{p}}_2}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right]^T}\left[ {\begin{matrix} {{{\bf{Q}}_1}}&0&0&0\\ 0&{{{\bf{Q}}_2}}&0&0\\ 0&0& \ddots &0\\ 0&0&0&{{{\bf{Q}}_M}} \end{matrix}} \right]\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ {{{\bf{p}}_2}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right] J=PTQP=p1p2pMTQ10000Q200000000QMp1p2pM

2.3 约束条件

2.3.1 导数约束(Derivative constraint)

目前已知起点 P 0 P_0 P0、终点 P N P_N PN和中间路标点 P 1 、 P 2 、 P N − 2 、 P N − 1 P_1 、P_2 、P_{N-2} 、P_{N-1} P1P2PN2PN1的位置,因此导数约束数学表示为
f j ( k ) ( T j ) = x j ( k ) f_j^{(k)}({T_j}) = x_j^{(k)} fj(k)(Tj)=xj(k)
其中参数 j j j表示第 j j j段轨迹, k k k表示导数的阶数, T j T_j Tj表示在 j j j段轨迹内从某点到某点所需的时间, x x x表示轨迹的多项式方程。
在这里插入图片描述将上式进行化简
f j ( k ) ( T j ) = x j ( k ) ⇒ ∑ i ≥ k i ! ( i − k ) ! T j i − k p j , i = x T , j ( k ) ⇒ [ … i ! ( i − k ) ! T j i − k … ] [ ⋮ p j , i ⋮ ] = x T , j ( k ) ∵ [ … i ! ( i − k ) ! T j − 1 i − k … ] [ ⋮ p j , i ⋮ ] = x 0 , j ( k ) ∴ [ … i ! ( i − k ) ! T j − 1 i − k … … i ! ( i − k ) ! T j i − k … ] [ ⋮ p j , i ⋮ ] = [ x 0 , j ( k ) x T , j ( k ) ] ⇒ A j p j = d j \begin{matrix} f_j^{(k)}({T_j}) = x_j^{(k)}\\ \Rightarrow \sum\limits_{i \ge k} {\frac{{i!}}{{(i - k)!}}} T_j^{i - k}{p_{j,i}} = x_{T,j}^{(k)}\\ \Rightarrow \left[ {\begin{matrix} \ldots &{\frac{{i!}}{{(i - k)!}}T_j^{i - k}}& \ldots \end{matrix}} \right]\left[ {\begin{matrix} \vdots \\ {{p_{j,i}}}\\ \vdots \end{matrix}} \right] = x_{T,j}^{(k)} \end{matrix}\\ \because \left[ {\begin{matrix} \ldots &{\frac{{i!}}{{(i - k)!}}T_{j - 1}^{i - k}}& \ldots \end{matrix}} \right]\left[ {\begin{matrix} \vdots \\ {{p_{j,i}}}\\ \vdots \end{matrix}} \right] = x_{0,j}^{(k)} \\ \therefore \left[ {\begin{matrix} \ldots &{\frac{{i!}}{{(i - k)!}}T_{j - 1}^{i - k}}& \ldots \\ \ldots &{\frac{{i!}}{{(i - k)!}}T_j^{i - k}}& \ldots \end{matrix}} \right]\left[ {\begin{matrix} \vdots \\ {{p_{j,i}}}\\ \vdots \end{matrix}} \right] = \left[ {\begin{matrix} {x_{0,j}^{(k)}}\\ {x_{T,j}^{(k)}} \end{matrix}} \right] \\ \Rightarrow {{\bf{A}}_j}{{\bf{p}}_j} = {{\bf{d}}_j} fj(k)(Tj)=xj(k)ik(ik)!i!Tjikpj,i=xT,j(k)[(ik)!i!Tjik]pj,i=xT,j(k)[(ik)!i!Tj1ik]pj,i=x0,j(k)[(ik)!i!Tj1ik(ik)!i!Tjik]pj,i=[x0,j(k)xT,j(k)]Ajpj=dj

2.3.2 连续性约束(Continuity constraint)

要想机器人在中间点之间满足连续性约束,即 使机器人在 j − 1 j-1 j1段轨迹的末端的速度、加速度等于 j j j段轨迹的初始时刻的速度、加速度。例如** P 1 P_1 P1点左端的速度、加速度等于右端的速度、加速度**,数学表达式如下
f j ( k ) ( T j ) = f j + 1 ( k ) ( T j ) f_j^{(k)}(T_j)=f_{j+1}^{(k)}(T_j) fj(k)(Tj)=fj+1(k)(Tj)
在这里插入图片描述将上式进行化简得
l f j ( k ) ( T j ) = f j + 1 ( k ) ( T j ) ⇒ ∑ i ≥ k i ! ( i − k ) ! T j i − k p j , i − ∑ i ≥ k l ! ( l − k ) ! T j l − k p j + 1 , l = 0 ⇒ [ … i ! ( i − k ) ! T j i − k … − l ! ( l − k ) ! T j l − k … ] [ ⋮ p j , i ⋮ p j + 1 , i ⋮ ] = 0 ⇒ [ A j − A j + 1 ] [ p j p j + 1 ] = 0 \begin{matrix}{l} f_j^{(k)}({T_j}) = f_{j + 1}^{(k)}({T_j})\\ \Rightarrow \sum\limits_{i \ge k} {\frac{{i!}}{{(i - k)!}}T_j^{i - k}{p_{j,i}}} - \sum\limits_{i \ge k} {\frac{{l!}}{{(l - k)!}}T_j^{l - k}{p_{j + 1,l}}} = 0\\ \Rightarrow \left[ {\begin{matrix} \ldots &{\frac{{i!}}{{(i - k)!}}T_j^{i - k}}& \ldots &{-\frac{{l!}}{{(l - k)!}}T_j^{l - k}}& \ldots \end{matrix}} \right]\left[ {\begin{matrix} \vdots \\ {{p_{j,i}}}\\ \vdots \\ {{p_{j + 1,i}}}\\ \vdots \end{matrix}} \right] = 0\\ \Rightarrow \left[ {\begin{matrix} {{{\bf{A}}_j}}&{ - {{\bf{A}}_{{\rm{j + }}1}}} \end{matrix}} \right]\left[ {\begin{matrix} {{{\bf{p}}_j}}\\ {{{\bf{p}}_{j + 1}}} \end{matrix}} \right] = 0 \end{matrix} lfj(k)(Tj)=fj+1(k)(Tj)ik(ik)!i!Tjikpj,iik(lk)!l!Tjlkpj+1,l=0[(ik)!i!Tjik(lk)!l!Tjlk]pj,ipj+1,i=0[AjAj+1][pjpj+1]=0
联立上述的导数约束和连续性约束,得到最终的约束条件
A e q [ p 1 ⋮ p M ] = d e q {{\bf{A}}_{eq}}\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right] = {{\bf{d}}_{eq}} Aeqp1pM=deq

2.4 问题求解

联立评价函数和约束条件可得
m i n J = P T Q P = m i n [ p 1 ⋮ p M ] T [ Q 1 0 0 0 ⋱ 0 0 0 Q M ] [ p 1 ⋮ p M ] s . t . A e q [ p 1 ⋮ p M ] = d e q min \quad J = {{\bf{P}}^T}{\bf{QP}} = min \quad {\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right]^T}\left[ {\begin{matrix} {{{\bf{Q}}_1}}&0&0\\ 0& \ddots &0\\ 0&0&{{{\bf{Q}}_M}} \end{matrix}} \right]\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right] \\ s.t.{{\bf{A}}_{eq}}\left[ {\begin{matrix} {{{\bf{p}}_1}}\\ \vdots \\ {{{\bf{p}}_M}} \end{matrix}} \right] = {{\bf{d}}_{eq}} minJ=PTQP=minp1pMTQ1000000QMp1pMs.t.Aeqp1pM=deq
其实上述是一个凸优化(附录1)的问题,可以采用QP进行求解,详情参见附录2。


附录

1. 凸函数基本概念

若函数 f f f满足
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) 其 中 0 < θ < 1 f(\theta x+ (1-\theta)y) \le \theta f(x)+(1-\theta)f(y) \\ 其中 0< \theta< 1 f(θx+(1θ)y)θf(x)+(1θ)f(y)0<θ<1
f f f为凸函数,且 − f -f f为凹函数。
在这里插入图片描述
凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内,如下图
在这里插入图片描述
凸优化一般表达形式如下
min ⁡ i m i z e x f 0 ( x ) s u b j e c t t o f i ( x ) ≤ 0 i = 1 , . . . , m A x = b \mathop {\min {\rm{imize}}}\limits_x \quad {f_0}(x) \\ \begin{array}{l} \quad \quad \quad \quad \quad \quad \quad \quad {\rm{subject \quad to}} \quad {f_i}(x) \le 0\quad i = 1,...,m\\ \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad Ax = b \end{array} xminimizef0(x)subjecttofi(x)0i=1,...,mAx=b
其中 f 0 ( x ) , f 1 ( x ) . . . f m ( x ) f_0(x),f_1(x)...f_m(x) f0(x),f1(x)...fm(x)为凸函数, A x = b Ax=b Ax=b为反射变换。凸优化的优点:局部最优等于局部最优

2. QP问题

通过观察,本文Minimum Snap算法的表达式与QP表达式一致,只是将 q T x + r = 0 q^Tx+r=0 qTx+r=0,且不考虑不等式约束 G x ≤ h Gx \le h Gxh,仅考虑等式约束 A x = b Ax=b Ax=b
在这里插入图片描述在这里插入图片描述
注意:上述的图片均来自深蓝学院的路径规划课程,码字不易,转载请注明出处,谢谢

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值