在工业自动化和控制系统设计中,速度规划是确保运动平滑、高效和精确的关键环节。梯形速度规划作为一种简单而常用的速度控制策略,广泛应用于各类伺服系统和控制系统中。然而,传统的梯形速度规划通常假设初速度和末速度为零,且加速和减速过程对称。在实际应用中,往往需要处理起点速度和终点速度不为零,且加速与减速过程非对称的情况,因此起点速度和终点速度不为零且加速与减速过程非对称的梯形速度规划更为通用。
梯形速度规划是一种分段的速度控制策略,如图所示,包括加速、匀速和减速三个阶段。在非对称情况下,加速和减速阶段的加速度、时间长度以及最大速度可能不同。
位移表达式
S ( t ) = { v s t + 1 2 a t 2 , 0 ≤ t < t 1 S a + v m a x ( t − t 1 ) , t 1 ≤ t < t 2 S a + S v + v m a x ( t − t 2 ) − 1 2 d ( t − t 2 ) 2 , t 2 ≤ t < t a l l S(t)= \begin{cases} v_st + \frac{1}{2}at^2,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad0≤t
速度表达式
v ( t ) = { v s + a t , 0 ≤ t < t 1 v m a x , t 1 ≤ t < t 2 v m a x − d ( t − t 2 ) , t 2 ≤ t < t a l l v(t)= \begin{cases} v_s + at,\quad\quad\quad\quad\quad\quad\quad\quad \ 0≤t
加速度表达式
a ( t ) = { a , 0 ≤ t < t 1 0 , t 1 ≤ t < t 2 d , t 2 ≤ t < t a l l a(t)= \begin{cases} a,\quad\quad\quad\quad\quad\quad\quad\quad\quad \ 0≤t
{ v ( t ) = S ′ ( t ) a ( t ) = v ′ ( t ) = S ′ ′ ( t ) \begin{cases} v(t) = S'(t) \\ a(t) = v'(t) = S''(t) \end{cases} {v(t)=S′(t)a(t)=v′(t)=S′′(t)
即速度是位置的一阶导数,加速度是速度的一阶导数,位置的二阶导数。
在实际的规划过程中,由于距离和起止速度的关系,整个速度变化过程很难像想象中那种先加速、再匀速再减速走完全程。这是我们需要在满足约束的条件下,根据一些临界条件来判断规划过程可能存在的速度段。
具体的流程如图所示:
存在4种阶段:
当起点速度大于终点速度( V s > V e V_s > V_e Vs>Ve)时,先计算以减速度 d d d直接从起点速度 V s V_s Vs减速到终点速度 V e V_e Ve所需的减速距离 S d S_d Sd:
S d = ( V s 2 − V e 2 ) 2 d S_d = \frac{(V_s^2- V_e^2)}{2d} Sd=2d(Vs2−Ve2)
减速距离 S d S_d Sd和规划路径总长度 S S S比较,
如果:
S d ≤ S S_d ≤S Sd≤S
说明在路径总长度 S S S范围内,不足于或者刚好以减速度 d d d直接从起点速度 V s V_s Vs减速到终点速度 V e V_e Ve,则规划过程只存在减速段,为了保证安全,一般情况下选择重算起点速度 V s ′ V'_s Vs′:
V s ′ = 2 d S + V e 2 V'_s = \sqrt{2dS + V_e^2} Vs′=2dS+Ve2
此时:
S ( t ) = { 0 , 0 ≤ t < t 1 0 , t 1 ≤ t < t 2 v s ′ t − 1 2 d ( t ) 2 , t 2 ≤ t < t a l l S(t)= \begin{cases} 0,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad0≤t
{ t 1 = t 2 = 0 t a l l = ( v s ′ − v e ) d \begin{cases} t_1 = t_2 = 0 \\ t_{all} =\frac{ (v'_s - v_e)}{d} \end{cases} {t1=t2=0tall=d(vs′−ve)
相反。如果:
S d > S S_d >S Sd>S
则至少存在加速段和减速段,需要进一步判断是否存在匀速段。
当起点速度小于终点速度( V s < V e V_s < V_e Vs
加速距离 S a S_a Sa和规划路径总长度 S S S比较,
如果:
S a ≤ S S_a ≤S Sa≤S
说明在路径总长度 S S S范围内,不足于或者刚好以加速度 d d d直接从起点速度 V s V_s Vs加速到终点速度 V e V_e Ve,则规划过程只存在加速段,为了保证安全,一般情况下选择重算终点速度$V’_e:
V e ′ = 2 a S + V a 2 V'_e = \sqrt{2aS + V_a^2} Ve′=2aS+Va2
此时:
S ( t ) = { v s ′ t − 1 2 d ( t ) 2 0 ≤ t < t 1 0 , t 1 ≤ t < t 2 0 , t 2 ≤ t < t a l l S(t)= \begin{cases} v'_st - \frac{1}{2}d(t)^2\quad\quad\quad\quad\quad\quad 0≤t
{ t 1 = ( v e ′ − v s ) a t 2 = t 1 + 0 = t 1 t a l l = t 2 + 0 = t 1 \begin{cases} t_1 = \frac{ (v'_e - v_s)}{a} \\ t_2 = t_1 + 0 = t_1\\ t_{all} = t_2 + 0 = t_1 \end{cases} ⎩⎨⎧t1=a(ve′−vs)t2=t1+0=t1tall=t2+0=t1
相反。如果:
S a > S S_a >S Sa>S
则至少存在加速段和减速段,需要进一步判断是否存在匀速段。
在确认存在加速段和减速段,可以计算起点速度 V s V_s Vs加速到最大速度 V m a x V_{max} Vmax再直接减速到终点速度 V e V_e Ve的距离,即加速到最大速度 V m a x V_{max} Vmax所需的最短距离 S m i n S_{min} Smin:
S m i n = S a + S d = ( V m a x 2 − V a 2 ) 2 a + ( V m a x 2 − V d 2 ) 2 d S_{min} = Sa + Sd =\frac{ (V_{max}^2- V_a^2)}{2a} + \frac{ (V_{max}^2- V_d^2)}{2d} Smin=Sa+Sd=2a(Vmax2−Va2)+2d(Vmax2−Vd2)
最短距离 S m i n S_{min} Smin和规划路径总长度 S S S比较,
如果:
S m i n ≤ S S_{min} ≤S Smin≤S
说明在路径总长度 S S S范围内,不足于或者刚好以加速度 a a a从起点速度 V s V_s Vs加速最大速度 V m a x V_{max} Vmax再以减速度 d d d减速到终点速度 V e V_e Ve,则规划过程不存在匀速段,需最短距离 S m i n S_{min} Smin重算最大速度 V m a x ′ V'_{max} Vmax′:
V m a x ′ = 2 a d S m i n + V a 2 d + V d 2 a a + d V'_{max} = \frac{2adS_{min} + V_a^2d + V_d^2a}{a+d} Vmax′=a+d2adSmin+Va2d+Vd2a
此时:
S ( t ) = { v s t + 1 2 a t 2 , 0 ≤ t < t 1 S a + v m a x ′ ( t − t 1 ) , t 1 ≤ t < t 2 S a + S v + v m a x ′ ( t − t 2 ) − 1 2 d ( t − t 2 ) 2 , t 2 ≤ t < t a l l S(t)= \begin{cases} v_st + \frac{1}{2}at^2,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad0≤t
{ t 1 = ( v m a x ′ − v s ) a t 2 = t 1 + 0 = t 1 t a l l = t 2 + ( v m a x ′ − v e ) d \begin{cases} t_1 = \frac{ (v'_{max} - v_s)}{a} \\ t_2 = t_1 + 0 = t_1\\ t_{all} = t_2 + \frac{ (v'_{max} - v_e)}{d} \end{cases} ⎩⎨⎧t1=a(vmax′−vs)t2=t1+0=t1tall=t2+d(vmax′−ve)
相反。如果:
S m i n > S S_{min} >S Smin>S
则说明路径规划过程中存在加速段、匀速段和减速段。
在完整的加速度段、匀速段和减速段三段都存在的情况下,最大速度 V m a x V_{max} Vmax可达。此时:
S ( t ) = { v s t + 1 2 a t 2 , 0 ≤ t < t 1 S a + v m a x ′ ( t − t 1 ) , t 1 ≤ t < t 2 S a + S v + v m a x ′ ( t − t 2 ) − 1 2 d ( t − t 2 ) 2 , t 2 ≤ t < t a l l S(t)= \begin{cases} v_st + \frac{1}{2}at^2,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad0≤t
{ S a = ( v m a x 2 − v a 2 ) 2 a T a = ( v m a x − v a ) a \begin{cases} S_a = \frac{ (v_{max}^2 - v_a^2)}{2a} \\ T_a = \frac{ (v_{max} - v_a)}{a} \end{cases} {Sa=2a(vmax2−va2)Ta=a(vmax−va)
减速距离和减速时间:
{ S e = ( v m a x 2 − v e 2 ) 2 d T e = ( v m a x − v e ) d \begin{cases} S_e = \frac{ (v_{max}^2 - v_e^2)}{2d} \\ T_e = \frac{ (v_{max} - v_e)}{d} \end{cases} {Se=2d(vmax2−ve2)Te=d(vmax−ve)
则匀速距离和匀速时间可求:
{ S v = S − S a − S e T v = S v v m a x \begin{cases} S_v = S - S_a - S_e \\ T_v = \frac{ S_v}{v_{max}} \end{cases} {Sv=S−Sa−SeTv=vmaxSv
最终时刻为:
{ t 1 = T a = ( v m a x − v a ) a t 2 = t 1 + T v t a l l = t 2 + T e = t 2 + ( v m a x ′ − v e ) d \begin{cases} t_1 = T_a = \frac{ (v_{max} - v_a)}{a} \\ t_2 = t_1 + T_v \\ t_{all} = t_2 + T_e = t_2 + \frac{ (v'_{max} - v_e)}{d} \end{cases} ⎩⎨⎧t1=Ta=a(vmax−va)t2=t1+Tvtall=t2+Te=t2+d(vmax′−ve)
用matlab编写梯形速度规划函数,定义系统参数:路径长度、起点速度、终点速度、加速度、减速度等,输入到规划函数中,输出距离、速度和加速度随时间变化的曲线数据,关键参数计算代码如下:
if(vs>ve) sd = (vs^2 - ve^2)/(2.0*d); if(sd >= S) vs = sqrt((2.0*d*S + ve^2)); t1 = 0; t2 = t1 + 0; tall = t2 + (vs-ve)/(1.0*d); break; end elseif(vs= S) ve = sqrt((2.0*a*S + vs^2)); t1 = (ve-vs)/(1.0*a); t2 = t1 + 0; tall = t2 + 0; break; end end % 最大速度可达性判断 smin = (vmax^2 - ve^2)/(2.0*d) + (vmax^2 - vs^2)/(2.0*a); if(smin >= S)%只存在加速段和减速段 vmax = sqrt((2.0*a*d*S + vs^2*d + ve^2*a)/(a + d)); t1 = (vmax-vs)/(1.0*a); t2 = t1 + 0; tall = t2 + (vmax-ve)/(1.0*d); else%存在加速段、匀速段和减速段 t1 = (vmax-vs)/(1.0*a); t2 = t1 + (S - (vmax^2 - vs^2)/(2.0*a) - (vmax^2 - ve^2)/(2.0*d))/(1.0*vmax); tall = t2 + (vmax-ve)/(1.0*d); end
如下所示,分别是四种情况下对应的参数和规划结果:
%参数 s_i = 3; %路径长度 v_s = 10; %起点速度 v_e = 20; %终点速度 a = 50; %加速度 d = 40; %减速度 vmax = 30; %最大速度 t_step = 0.0001; %规划步长 % 调用梯形速度规划接口 [S,V,A,T] = VelocityPlanner_Trap(s_i,v_s,v_e,a,d,vmax,t_step);
仿真结果:
%参数 s_i = 3; %路径长度 v_s = 20; %起点速度 v_e = 10; %终点速度 a = 50; %加速度 d = 40; %减速度 vmax = 30; %最大速度 t_step = 0.0001; %规划步长 % 调用梯形速度规划接口 [S,V,A,T] = VelocityPlanner_Trap(s_i,v_s,v_e,a,d,vmax,t_step);
仿真结果:
%参数 s_i = 10; %路径长度 v_s = 20; %起点速度 v_e = 10; %终点速度 a = 50; %加速度 d = 40; %减速度 vmax = 30; %最大速度 t_step = 0.0001; %规划步长 % 调用梯形速度规划接口 [S,V,A,T] = VelocityPlanner_Trap(s_i,v_s,v_e,a,d,vmax,t_step);
仿真结果:
%参数 s_i = 50; %路径长度 v_s = 20; %起点速度 v_e = 10; %终点速度 a = 50; %加速度 d = 40; %减速度 vmax = 30; %最大速度 t_step = 0.0001; %规划步长 % 调用梯形速度规划接口 [S,V,A,T] = VelocityPlanner_Trap(s_i,v_s,v_e,a,d,vmax,t_step);
仿真结果:
非对称S形速度规划是一种有效的速度规划方法,可以在数控机床、自动化生产线设备、机器人运动控制作为基础路径配速算法,实现简单的、速度连续的速度控制,j基本保证运动过程中平稳性。