当前位置:   article > 正文

Fast-Planner论文第一篇:Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight_fast planner论文

fast planner论文

摘要:

采用运动动力学路径搜索方法在离散化控制空间中寻找安全、运动可行、最短时间的初始轨迹。利用b样条的凸包特性,结合欧几里得距离场(EDF)的梯度信息和动态约束,采用b样条优化方法提高轨迹的平滑度和间隙。最后,通过将最终轨迹表示为非均匀b样条,采用迭代时间调整方法保证轨迹的动态可行和开放性。

引言

在四旋翼运动规划领域存在两个重要的未被解决的问题:1、有限的时间和板载计算资源下,现有工作不能保证高成功率地生成安全和运动动力学可行的轨迹;2、为保证运动动力学可行性,对速度和加速度进行了较大限制。
在本文中,我们提出了一种完整且鲁棒的在线轨迹生成方法来系统地解决这两个问题。采用了基于启发式搜索和线性二次最小时间控制的运动路径搜索方法。该算法在离散化控制空间中高效地搜索安全、可行且时间最短的初始路径。然后通过精心设计的b样条优化来优化初始路径,该优化利用b样条的凸包特性来结合梯度信息和动态约束。该算法改进了初始路径,快速收敛到平滑、安全、动态可行的轨迹。最后,将轨迹表示为非均匀b样条,研究了导数控制点与时间分配的关系。在此基础上,采用迭代时间调整的方法将不可行的速度和加速度剔除,同时避免了对它们的保守约束。

运动动力学路径搜索

前端运动动力学路径搜索模块来源于为自动驾驶提出的混合状态A算法。它在体素网格地图中搜索一条相对于持续时间和控制成本最小的轨迹。
在这里插入图片描述
在这里插入图片描述如算法 1 和图 2 所示,搜索循环和标准 A
算法类似,其中 P P P C C C 分别为开集和闭集。用符合四旋翼的运动基元代替直线作为边。一个结构 N o d e Node Node 被用来记录一个基元、基元结束的体素和 g c g_c gc f c f_c fc 代价(Sect. III-B)。基元迭代地扩展(Expand())体素网格地图,除了具有最小的 f c f_c fc 的基元,在同一体素网格结束的其他基元都将被修剪(Prune())。之后 CheckFeasible() 会检查剩下的基元的安全性和动力学可行性。这个过程一直到有基元抵达终点或 AnalyticExpand() 成功为止。

基元生成

首先讨论 Expand() 中使用的运动基元的生成。四旋翼系统的微分平坦特性允许使用三个一维时间参数化多项式函数来表示轨迹[1]。
p ( t ) : = [ p x ( t ) , p y ( t ) , p z ( t ) ] T , p μ ( t ) = ∑ k = 0 K a k t k p(t) :=[p_x(t),p_y(t),p_z(t)]^T, \quad p_\mu (t)= \sum_{k=0}^{K}a_k t^k p(t):=[px(t),py(t),pz(t)]T,pμ(t)=k=0Kaktk
其中 μ ∈ { x , y , z } \mu \in \{x,y,z\} μ{x,y,z}。从四旋翼系统的角度来看,它对应于一个线性时不变(LTI)系统。让 x ( t ) : = [ p ( t ) ⊤ , p ˙ ( t ) ⊤ , ⋅ ⋅ ⋅ , p ( n − 1 ) ( t ) ⊤ ] ⊤ ∈ X ⊂ R 3 n \mathbf{x}(t):=[{\bf p}(t)^{\top},\dot{\mathbf{p}}(t)^{\top},\cdot\cdot\cdot,{\mathbf{p}}^{(n-1)}(t)^{\top}]^{\top}\in\mathcal{X}\subset\mathbb{R}^{3n} x(t):=[p(t),p˙(t),,p(n1)(t)]XR3n 作为状态向量。让 u ( t ) : =   p ( n ) ( t )    ∈    U :   =    [ − u m a x ,   u m a x ] 3    ⊂ R 3 \mathbf{u}(t):=\ {\bf p}^{(n)}\left(t\right)\;\in\;{\mathcal U}:\ =\;\left[-u_{\mathrm{max}},\,u_{\mathrm{max}}\right]^{3}\;\subset \mathbb{R}^{3} u(t):= p(n)(t)U: =[umax,umax]3R3 作为控制输入。状态空间模型可以被定义为:
x ˙ = A x + B u A = [ 0 I 3 0 ⋯ 0 0 0 I 3 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 ⋯ ⋯ 0 I 3 0 ⋯ ⋯ 0 0 ] , B = [ 0 0 ⋮ 0 I 3 ]

x˙=Ax+BuA=[0I30000I3000I3000],B=[000I3]
x˙A=Ax+Bu= 0000I300I30000I30 ,B= 000I3
状态方程的完全解为:
x ( t )   =   e A t x ( 0 )   +   ∫ 0 t e A ( t − τ ) B U ( τ )    d τ {\bf x}(t)\,=\,e^{{\bf A}t}{\bf x}(0)\,+\,\int_{0}^{t}e^{{\bf A}(t-\tau)}{\bf B}_{\bf U}(\tau)\,\,d\tau x(t)=eAtx(0)+0teA(tτ)BU(τ)dτ
上述方程给出了初始状态 为 x ( 0 ) 为x(0) x(0),控制输入为 u ( t ) u(t) u(t) 的四旋翼系统的轨迹。
Expand() 中,给定无人机的当前状态,在持续时间 τ \tau τ 内应用一组离散的控制输入 U D ⊂ U \mathcal U_D \subset \mathcal U UDU。在实际中,我们选择 n = 2 n=2 n=2,这对应于一个二重积分。每个轴 [ − u m a x , u m a x ] [-u_{max},u_{max}] [umax,umax] 被均匀离散为 { − u m a x , − r − 1 r u m a x , ⋅ ⋅ ⋅ ,   r − 1 r u m a x ,    u m a x } \left\{-\mathcal{u}_{m a x},-\frac{r-1}{r}\mathcal{u}_{m a x},\cdot\cdot\cdot ,\ \frac{r-1}{r}\mathcal{u}_{m a x},\ \ u_{m a x}\right\} {umax,rr1umax,, rr1umax,  umax},这会得到 ( 2 r + 1 ) 3 (2r+1)^3 (2r+1)3 个基元。

实际代价和启发式代价

想要得到在时间和控制代价上都最优的轨迹,所以定义轨迹的代价为:
J ( T ) = ∫ 0 T ∥ u ( t ) ∥ 2 d t + ρ T \mathcal{J}(T)=\int_{0}^{T}\|\mathbf{u}(t)\|^{2}d t+\rho T J(T)=0Tu(t)2dt+ρT
在这个定义下,EdgeCost() 计算由离散输入 u ( t ) = u d u(t)=u_d u(t)=ud 和持续时间 τ \tau τ e c = ( ∣ ∣ u d ∣ ∣ 2 + ρ ) τ e_{c}=(||{\bf u}_{d}||^{2}+\rho)\tau ec=(∣∣ud2+ρ)τ)生成的运动基元的代价。
g c g_c gc 表示从开始状态 x s x_s xs 到当前状态 x c x_c xc 的一条最优路径的实际代价。最优路径由 J J J 个基元组成,则: g c = ∑ j = 1 J ( ∣ ∣ u d j ∣ ∣ 2 + ρ ) τ g_{c}=\sum_{j=1}^{J}(||{\bf u}_{d j}||^{2}+\rho)\tau gc=j=1J(∣∣udj2+ρ)τ
设计了一个启发项 Heuristic()。通过应用 Pontryagins 最小化原理[16],计算了从 x c x_c xc 到目标状态 x g x_g xg 的最小化 J ( T ) \mathcal{J}(T) J(T) 的封闭轨迹:
p μ ∗ ( t ) = 1 6 α μ t 3 + 1 2 β μ t 2 + v μ c + p μ c [ α μ β μ ] = 1 T 3 [ − 12 6 T 6 T − 2 T 2 ] [ p μ g − p μ c − v μ c T v μ g − v μ c ] J ∗ ( T ) = ∑ μ ∈ { x , y , z } ( 1 3 α μ 2 T 3 + α μ β μ T 2 + β μ 2 T )

pμ(t)=16αμt3+12βμt2+vμc+pμc[αμβμ]=1T3[126T6T2T2][pμgpμcvμcTvμgvμc]J(T)=μ{x,y,z}(13αμ2T3+αμβμT2+βμ2T)
pμ(t)[αμβμ]J(T)=61αμt3+21βμt2+vμc+pμc=T31[126T6T2T2][pμgpμcvμcTvμgvμc]=μ{x,y,z}(31αμ2T3+αμβμT2+βμ2T)
其中, p μ c , v μ c , p μ g , v μ g p_{\mu c},v_{\mu c},p_{\mu g},v_{\mu g} pμc,vμc,pμg,vμg 是当前和目标的位置和速度。为找到代价最小的最优时间 T T T,将 α μ , β μ \alpha_{\mu},\beta_{\mu} αμ,βμ 代入 J ∗ ( T ) \mathcal{J}^{*}(T) J(T) 并找到 ∂ J ∗ ( T ) ∂ T = 0 \frac{\partial{\mathcal{J}}^{*}(T)}{\partial T}=0 TJ(T)=0 的根。选取代价最小记为 m i n J ∗ min\mathcal{J}^{*} minJ并且轨迹可行的根,记为 T h T_h Th。使用 J ∗ ( T h ) \mathcal{J}^{*}(T_h) J(Th) 作为启发项 h c h_c hc。最后, f c f_c fc f c = g c + h c = g c + J ∗ ( T h ) f_{c}=g_{c}+h_{c}=g_{c}+\mathcal{J}^{*}(T_{h}) fc=gc+hc=gc+J(Th)

分析扩展

因为输入是离散的,所以很难找到一个完全处于目标状态的基元端点。为了弥补这一缺陷并加速搜索,引入了一个分析扩展方案。当一个节点从开集弹出的时候,会使用与 Sec.III-B 中相同的方法计算一条从 x c x_c xc x g x_g xg 的轨迹。如果它通过了安全和动力学可行性检查,搜索会被提前终止。这个策略对于提高效率是有效的尤其在稀疏环境中,因为它有更高的成功率并且会更早地终止搜索。

B 样条轨迹优化

由路径搜索所产生的路径可能不是最优的。此外,因为自由空间的距离信息被忽略会导致路径经常会接近障碍物(如图 5)。因此,采用提出的 B 样条优化来提高路径的平滑度和间隙。利用 B 样条的凸包性融合来自欧氏距离场和动态约束的梯度信息,它可以在很短的时间内收敛,生成平滑、安全和动态可行的轨迹。
在这里插入图片描述

均匀 B 样条

B 样条是一个单独由它的阶数 p b p_b pb N + 1 N+1 N+1 个控制点 Q 0 , Q 1 , . . . , Q N {Q_0,Q_1,...,Q_N} Q0,Q1,...,QN 集合以及一个节点向量 [ t 0 , t q , . . . , t M ] [t_0,t_q,...,t_M] [t0,tq,...,tM] 所决定的分段多项式,其中 Q i ∈ R 3 , t m ∈ R , M = N + p b + 1 Q_i \in \mathbb{R}^{3},t_m \in \mathbb{R},M=N+p_b+1 QiR3,tmR,M=N+pb+1。B 样条轨迹用时间 t t t 来参数化, t ∈ [ t p b , t M − p b ] t \in [t_{pb},t_{M-pb}] t[tpb,tMpb]。对于均匀 B 样条,每个节点跨度都是相同的, Δ t m     =   t m + 1   −   t m \Delta t_{m}\,\ =\,t_{m+1}\,-\,t_{m} Δtm =tm+1tm。为求出 t ∈ [ t m ,   t m + 1 ] ⊂ [ t p b ,   t M − p b ] t \in[t_{m},\,t_{m+1}]\subset[t_{p_{b}},\,t_{M-p_{b}}] t[tm,tm+1][tpb,tMpb] 时刻的位置,首先将 t t t 归一化为 s ( t ) = ( t − t m ) / Δ t s(t) = (t-t_m)/{\Delta t} s(t)=(ttm)/Δt。之后采用矩阵表示来求出位置[17]:
p ( s ( t ) ) = s ( t ) ⊤ M p b + 1 q m s ( t ) = [ 1 s ( t ) s 2 ( t ) ⋯ s p b ( t ) ] ⊤ q m = [ Q m − p b Q m − p b + 1 Q m − p b + 2 ⋯ Q m ] ⊤

\begin{array}{l} \mathbf{p}(s(t))=\mathbf{s}(t)^{\top} \mathbf{M}_{p_{b}+1} \mathbf{q}_{m} \\ \mathbf{s}(t)=\left[\begin{array}{lllll} 1 & s(t) & s^{2}(t) & \cdots & s^{p_{b}}(t) \end{array}
\right]^{\top} \\ \mathbf{q}_{m}=\left[
QmpbQmpb+1Qmpb+2Qm
\right]^{\top} \end{array} p(s(t))=s(t)Mpb+1qms(t)=[1s(t)s2(t)spb(t)]qm=[QmpbQmpb+1Qmpb+2Qm]
其中, M p b + 1 M_{pb+1} Mpb+1 是一个由 p b p_b pb 决定的常数矩阵。本文中, p b p_b pb 被设置为 3。导数的计算是完全相同的,因为 B 样条的导数也是 B 样条。
B 样条曲线的凸包特性(图3)对于优化公式的设计至关重要。我们在 Sect.IV -B 节中表明,它对于确保整个轨迹的动态可行性和安全性非常有用。
在这里插入图片描述

B.凸包性

如图3,本文广泛使用凸包性来确保动态可行性和安全性。
动态可行性要求约束所有的速度和加速度控制点 { V 0 , V 1 , . . . , V N − 1 } \{V_0,V_1,...,V_{N-1}\} {V0,V1,...,VN1} { A 0 , A 1 , . . . , A N − 2 } \{A_0,A_1,...,A_{N-2}\} {A0,A1,...,AN2},使其满足 V i ∈ [ − v m a x , v m a x ] 3 V_i \in [-v_{max},v_{max}]^3 Vi[vmax,vmax]3 A i ∈ [ − a m a x , a m a x ] 3 A_i \in [-a_{max},a_{max}]^3 Ai[amax,amax]3 V i , A i V_i,A_i Vi,Ai 由下式计算,其中 Δ t \Delta t Δt 是节点跨度。
V i = 1 Δ t ( Q i + 1 − Q i ) , A i = 1 Δ t ( V i + 1 − V i ) \mathbf{V}_{i}=\frac{1}{\Delta t}(\mathbf{Q}_{i+1}-\mathbf{Q}_{i}),\quad\mathbf{A}_{i}=\frac{1}{\Delta t}(\mathbf{V}_{i+1}-\mathbf{V}_{i}) Vi=Δt1(Qi+1Qi),Ai=Δt1(Vi+1Vi)
为了 B 样条的安全性,需要确保所有的凸包都是无碰撞的。即需要确保任意一个被占据的体素与任一个凸包上的点 Q h Q_h Qh 之间的距离 d h > 0 d_h > 0 dh>0 (如图4)。
根据三角形不等式,可知: d h > d c − r h d_h > d_c - r_h dh>dcrh d c d_c dc 是任意两个体素和控制点之间的距离。因为 Q h Q_h Qh 是凸包内的点,所以也有: r h ≤ r 12 + r 23 + r 34 r_h ≤ r_{12} +r_{23} + r_{34} rhr12+r23+r34。两式相结合,则有: d h > d c − ( r 12 + r 23 + r 34 ) d_h > d_c - (r_{12} +r_{23} + r_{34}) dh>dc(r12+r23+r34)。因此,只需要保证:
d c > 0 , r j , j + 1 < d c / 3    ( j ∈ { 1 , 2 , 3 } ) ( 8 ) d_{c}>0,\quad r_{j,j+1}<d_{c}/3\ \ (j\in\{1,2,3\}) \quad(8) dc>0,rj,j+1<dc/3  (j{1,2,3})(8)
之后就可以保证凸包是无碰撞的。

C.问题描述

对于由 N + 1 N+1 N+1 个控制点定义的 p b p_b pb 阶 B 样条轨迹,优化 N + 1 − 2 p b N+1-2p_b N+12pb 个控制点的子集 { Q p b , Q p b + 1 , . . . , Q N − p b } \{Q_{p_b},Q_{p_b+1},...,Q_{N-p_b}\} {Qpb,Qpb+1,...,QNpb}。首位的 p b p_b pb 个控制点不应该被改变,因为它们决定了边界状态。总的代价函数被定义为:
f t o t a l = λ 1 f s + λ 2 f c + λ 3 ( f v + f a ) f_{t o t a l}=\lambda_{1}f_{s}+\lambda_{2}f_{c}+\lambda_{3}(f_{v}+f_{a}) ftotal=λ1fs+λ2fc+λ3(fv+fa)
其中, f s f_s fs f c f_c fc 平滑度和碰撞代价, f v f_v fv f a f_a fa 是速度和加速度的柔性限制, λ 1 , λ 2 , λ 3 \lambda_1,\lambda_2,\lambda_3 λ1λ2λ3 用来平衡平滑度、安全性和动态可行性。
通过一个捕捉轨迹几何信息的函数来定义平滑度代价 f s f_s fs,并且不依赖时间分配,与最近采用 snap 或 jerk 平方的积分的工作不同。原因是在优化之后时间分配可能会调整(Sect. V)。这可能会改变轨迹的导数改变,使优化后的 snap(jerk) 不那么有意义。使用弹性带代价函数(elastic
band cost function)[18, 19](控制点 Q p b − 2 , Q p b − 1 Q_{p_b-2},Q_{p_b-1} Qpb2Qpb1 Q N − p b + 1 , Q N − p b + 2 Q_{N-p_b+1},Q_{N-p_b+2} QNpb+1QNpb+2 没有被优化但是需要评估其总体平滑度。同样地,他们中的一些点作为常量被包含进等式 14,来计算导数):
f s = ∑ i = p b − 1 N − p b + 1 ∥ ( Q i + 1 − Q i ) ⏟ F i + 1 , i + ( Q i − 1 − Q i ) ⏟ F i − 1 , i ∥ 2 f_{s}=\sum_{i=p_{b}-1}^{N-p_{b}+1}\|\underbrace{\left(\mathbf{Q}_{i+1}-\mathbf{Q}_{i}\right)}_{\mathbf{F}_{i+1, i}}+\underbrace{\left(\mathbf{Q}_{i-1}-\mathbf{Q}_{i}\right)}_{\mathbf{F}_{i-1, i}}\|^{2} fs=i=pb1Npb+1Fi+1,i (Qi+1Qi)+Fi1,i (Qi1Qi)2
从物理的角度,这个公式将一条轨迹看作一个弹性带,其中每个项 F i + 1 , i = Q i + 1 − Q i F_{i+1,i} = Q_{i+1}-Q_i Fi+1,i=Qi+1Qi F i − 1 , i = Q i − 1 − Q i F_{i-1,i} = Q_{i-1}-Q_i Fi1,i=Qi1Qi 是分别连接节点 Q i + 1 , Q i Q_{i+1},Q_{i} Qi+1Qi Q i − 1 , Q i Q_{i-1},Q_{i} Qi1Qi的两个弹簧的合力。如果所有项都等于 0,那么所有的控制点将均匀地分布在一条直线上,这是理想的平滑度。
同样地,碰撞代价表示为障碍物作用在每个控制点上的排斥力:
f c = ∑ i = p b N − p b F c ( d ( Q i ) ) f_{c}=\sum_{i=p_{b}}^{N-p_{b}}F_{c}(d(Q_{i})) fc=i=pbNpbFc(d(Qi))
其中, d ( Q i ) d(Q_i) d(Qi) Q i Q_i Qi 与最近的障碍物的距离。 F c F_c Fc 是一个可微的潜在代价函数,其中 d t h r d_{thr} dthr 是指定障碍物清除的阈值:
F c ( d ( Q i ) ) = { ( d ( Q i ) − d t h r ) 2 d ( Q i ) ≤ d t h r 0 d ( Q i ) > d t h r ( 12 ) F_{c}(d({\bf Q}_{i}))=\left\{

(d(Qi)dthr)2d(Qi)dthr0d(Qi)>dthr
\right. \quad (12) Fc(d(Qi))={(d(Qi)dthr)20d(Qi)dthrd(Qi)>dthr(12)
如 Sect.IV-B,要使轨迹无碰撞,等式 8 必须被满足。因为碰撞代价会将控制点推离障碍物,所以 d c > 0 d_c > 0 dc>0 是显然满足的。同时, r j , j + 1 r_{j,j+1} rj,j+1 是只依赖于 B 样条参数化的可调参数。在实际中,只要选择足够小的 r j , j + 1 , ( j ∈ { 0 , 1 , . . . , N } r_{j,j+1},(j \in \{0,1,...,N\} rj,j+1,(j{0,1,...,N},在大多数情况下轨迹是安全的(在我们的实现中 r j , j + 1 < 0.2 r_{j,j+1} < 0.2 rj,j+1<0.2)。在环境十分混乱等极端情况下可能会失效。即便如此,可以选择更小的 r j , j + 1 r_{j,j+1} rj,j+1 来重新参数化 B 样条曲线,之后等式 8 可以被满足。
采用与等式 12类似的方程,沿着轨迹超过最大允许值 v m a x , a m a x v_{max},a_{max} vmaxamax 方向惩罚速度和加速度。一维速度 v μ v_{\mu} vμ 的惩罚是:
F v ( v μ ) = { ( v μ 2 − v m a x 2 ) 2 v μ 2 > v m a x 2 0 v μ 2 ≤ v m a x 2 F_{v}(v_{\mu})=\left\{
(vμ2vmax2)2vμ2>vmax20vμ2vmax2
\right.
Fv(vμ)={(vμ2vmax2)20vμ2>vmax2vμ2vmax2

其中, μ ∈ { x , y , z } \mu \in \{x,y,z\} μ{x,y,z}。加速度惩罚有相同的形式。应用凸包性(图 3),定义了 f v , f a f_v,f_a fvfa,使不可行的速度和加速度控制点会被惩罚:
f v = ∑ μ ∈ { x , y , z } ∑ i = p b − 1 N − p b F v ( V i μ ) , f a = ∑ μ ∈ { x , y , z } ∑ i = p b − 2 N − p b F a ( A i μ ) f_{v}=\sum_{\substack{\mu \in \\\{x, y, z\}}} \sum_{i=p_{b}-1}^{N-p_{b}} F_{v}\left(V_{i \mu}\right), \quad f_{a}=\sum_{\substack{\mu \in \\\{x, y, z\}}} \sum_{i=p_{b}-2}^{N-p_{b}} F_{a}\left(A_{i \mu}\right) fv=μ{x,y,z}i=pb1NpbFv(Viμ),fa=μ{x,y,z}i=pb2NpbFa(Aiμ)

V.时间调整

虽然在路径搜索和优化中约束了动力学可行性,有时仍然会得到不可行的轨迹。基本的原因是梯度信息倾向于延长整个轨迹,同时使其远离障碍物。因此,无人机必须飞行更激进以便在相同时间内飞行更远的距离,如果原来的运动已经逼近物理极限,这会不可避免地导致过度激进的运动。
为保证动态可行性,采用了一种基于导数控制点和非均匀 B 样条时间分配(节点跨度)之间关系的时间调整方法。由于这种关系,可以通过调整相关的时间分配来改变所期望的飞行激烈程度。因此,可以在没有过度保守的约束的情况下确保动态可行性。
首先介绍了时间调整的数学基础。然后提出了 Alg. 2 来解决过于激进的轨迹。

A.非均匀 B 样条

非均匀 B 样条是一种更一般的 B 样条。它与均匀 B 样条唯一的不同是它的每一个节点跨度 Δ t m = t m + 1 − t m \Delta t_m = t_{m+1} - t_m Δtm=tm+1tm 是相互独立的。非均匀 B 样条的一阶 导数 V i ′ V_i^{'} Vi 和二阶导数 A i ′ A_i^{'} Ai 的控制点可由下式计算:
V i ′ = p b ( Q i + 1 − Q i ) t i + p b + 1 − t i + 1 , A i ′ = ( p b − 1 ) ( V i + 1 ′ − V i ′ ) t i + p b + 1 − t i + 2 ( 15 )

Vi=pb(Qi+1Qi)ti+pb+1ti+1,Ai=(pb1)(Vi+1Vi)ti+pb+1ti+2
\quad (15) Vi=ti+pb+1ti+1pb(Qi+1Qi),Ai=ti+pb+1ti+2(pb1)(Vi+1Vi)(15)
根据凸包性,要保证由非均匀 B 样条表示的轨迹的动态可行性,只需要保证一阶和二阶导数的所有控制点在可行域内即可。在 Sect. V-B 中,展示了通过改变不可行控制点相关的节点跨度即可达到这一目的。

B.节点跨度调整

使 V i ′   =   [ V i , x ′ , V i , y ′ , V i , z ′ ] ⊤ {\bf V}_{i}^{\prime}\,=\,[{\bf V}_{i,x}^{\prime},{\bf V}_{i,y}^{\prime},{\bf V}_{i,z}^{\prime}]^{\top} Vi=[Vi,x,Vi,y,Vi,z] 为不可行的速度控制点。 V i , μ ′ V_{i,\mu}^{'} Vi,μ 是最大的不可行分量并且 ∣ V i , μ ′ ∣ = v m \mid V_{i,\mu}^{\prime}\mid=v_{m} Vi,μ∣=vm。从等式 15 可知, V i , μ ′ V_{i,\mu}^{'} Vi,μ 受持续时间 t i + p b + 1 − t i + 1 t_{i+p_{b}+1}-t_{i+1} ti+pb+1ti+1 影响。如果改变持续时间为 t ^ ^ i + p b + 1 − t ^ i + 1 = μ v ( t i + p b + 1 − t i + 1 ) \hat{\hat{t}}_{i+p_{b}+1}-\hat{t}_{i+1}={\mu}_{v}(t_{i+p_{b}+1}-t_{i+1}) t^^i+pb+1t^i+1=μv(ti+pb+1ti+1) V i , μ ′ V_{i,\mu}^{'} Vi,μ 也将改变为:
V ^ i , μ =   P b t ^ i + p b + 1 − t ^ i + 1 ( ( Q i + 1 , μ − Q i , μ ) =   1 μ v p b t i + p b + 1 − t i + 1 ( Q i + 1 , μ − Q i , μ ) = 1 μ v V i , μ ′ \hat{V}_{i,\mu}=\,\frac{P b}{\hat{t}_{i+p_{b}+1}-\hat{t}_{i+1}}((Q_{i+1,\mu}-Q_{i,\mu}) \\ \qquad=\,\frac{1}{\mu_{v}}\frac{p_{b}}{t_{i+p_{b}+1}-t_{i+1}}(Q_{i+1,\mu}-Q_{i,\mu})=\frac{1}{\mu_{v}}V_{i,\mu}^{\prime} V^i,μ=t^i+pb+1t^i+1Pb((Qi+1,μQi,μ)=μv1ti+pb+1ti+1pb(Qi+1,μQi,μ)=μv1Vi,μ
因此,如果我们设 μ v = v m v m a x \mu_{v} = \frac {v_m}{v_{max}} μv=vmaxvm,之后速度是可行的,因为 ∣ V ^ i , μ ∣ =   v m a x v m ∣ V i , μ ′ = v m a x ∈ [ − v m a x , v m a x ] \mid\hat{V}_{i,\mu}\mid=\,\textstyle{\frac{v_{m a x}}{v_{m}}}\mid V_{i,\mu}^{'} = v_{max}\in\lbrack-v_{m a x},v_{m a x}\rbrack V^i,μ∣=vmvmaxVi,μ=vmax[vmax,vmax]
加速度可行性的实施是类似的。 A i , μ ′ A_{i,\mu}^{'} Ai,μ 实际受 t i + p b + 2 − t i + 1 t_{i+p_{b}+2}-t_{i+1} ti+pb+2ti+1,因为它与 V i , μ ′ V_{i,\mu}^{'} Vi,μ V i + 1 , μ ′ V_{i+1,\mu}^{'} Vi+1,μ 相连接。对于 m ∈ { i + 1 , i + 2 , . . . , i + p b + 1 } m \in \{i+1,i+2,...,i+p_b+1\} m{i+1,i+2,...,i+pb+1},改变 Δ t m = t m + 1 − t m \Delta t_m = t_{m+1}-t_m Δtm=tm+1tm Δ t ^ m = μ a Δ t m \Delta\hat{t}_{m}=\mu_{a}\Delta t_{m} Δt^m=μaΔtm,可得:
A ^ i , μ = p b − 1 t ^ i + p b + 1 − t ^ i + 2 ( V ^ i + 1 , μ − V ^ i , μ ) = 1 μ a p b − 1 t i + p b + 1 − t i + 2 ( 1 μ a V i + 1 , μ ′ − 1 μ a V i , μ ′ ) = 1 μ a 2 p b − 1 t i + p b + 1 − t i + 2 ( V i + 1 , μ ′ − V i , μ ′ ) = 1 μ a 2 A i , μ ′

A^i,μ=pb1t^i+pb+1t^i+2(V^i+1,μV^i,μ)=1μapb1ti+pb+1ti+2(1μaVi+1,μ1μaVi,μ)=1μa2pb1ti+pb+1ti+2(Vi+1,μVi,μ)=1μa2Ai,μ
A^i,μ=t^i+pb+1t^i+2pb1(V^i+1,μV^i,μ)=μa1ti+pb+1ti+2pb1(μa1Vi+1,μμa1Vi,μ)=μa21ti+pb+1ti+2pb1(Vi+1,μVi,μ)=μa21Ai,μ
类似地,使 μ a = ( a m a m a x ) 1 2 \mu_a=(\frac{a_m}{a_{max}})^{\frac{1}{2}} μa=(amaxam)21,可得 ∣ A ^ i , μ ∣   =   a m a x a m ∣ A i , μ ′ ∣   = a m a x   ∈   [ − a m a x , a m a x ] \mid\hat{A}_{i,\mu}\mid\ =\ \frac{a_{m a x}}{a_{m}}\mid A_{i,\mu}^{\prime}\mid\ =a_{m a x}\ \in\ [-{a_{m a x}},{a_{m a x}}] A^i,μ = amamaxAi,μ =amax  [amax,amax]

C.迭代时间调整

在这里插入图片描述
基于 Sect. V-B,采用 Alg. 2 来实现动态可行性。它迭代地找到轨迹中不可行的速度和加速度控制点 V  and  A \mathcal{V} \text { and } \mathcal{A} V and A(第 2 行),并调整相关的节点跨度(第 3-10 行)。因为一个结点跨度 ∆ t m ∆t_m tm 会影响几个控制点,反之亦然,用两个略大于1的常数 α v α_v αv α a α_a αa 来限定 µ v µ_v µv µ a µ_a µa (第5,9行)可以防止任何时间跨度被过度延长。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/542823
推荐阅读
相关标签
  

闽ICP备14008679号