梯形加减速

梯形加减速

引例

获取连续速度曲线的常用的方法是使用带有抛物线过渡的线性轨迹,这就是典型的梯形速度曲线。

]这种轨迹分为三个部分。假设位移是正的,即 q 1 > q 0 q_1>q_0 q1>q0。若位移是负的,只需改变对应的加速度和速度的符号。第一部分,加速度恒定,速度是时间的线性函数,位移是时间的抛物线函数;第二部分,加速度为0,速度恒定,位移是时间的线性函数;第三部分,加速度为恒定的负值,速度线性减小,位移是时间的二次多项式。一般假设加速段 T a T_a Ta和减速段时间 T d T_d Td相等[1]。

如果 t 0 = 0 t_0=0 t0=0,轨迹可由下列表达式描述:

(1)加速段, t ∈ [ 0 , T a ] t\in[0,T_a] t[0,Ta]
{ q ( t ) = a 0 + a 1 t + a 2 t 2 q ˙ ( t ) = a 1 + 2 a 2 t q ¨ ( t ) = 2 a 2 . (3.1) \begin{cases} q(t)=a_0+a_1t+a_2t^2\\ \dot q(t)=a_1+2a_2t\\ \ddot q(t)=2a_2. \end{cases} \tag{3.1} q(t)=a0+a1t+a2t2q˙(t)=a1+2a2tq¨(t)=2a2.(3.1)
若初始速度 v 0 v_0 v0设置为0,最大速度设置为 v v v_v vv.可以解的系数
{ a 0 = q 0 a 1 = 0 a 2 = v v 2 T a \begin{cases} a_0=q_0\\ a_1=0\\ a_2=\frac{v_v}{2T_a} \end{cases} a0=q0a1=0a2=2Tavv
(2)匀速段, t ∈ [ T a , t 1 − T a ] t\in [T_a,t_1-T_a] t[Ta,t1Ta]
{ q ( t ) = b 0 + b 1 t q ˙ ( t ) = b 1 q ¨ ( t ) = 0 (3.2) \begin{cases} q(t)=b_0+b_1t\\ \dot q(t)=b_1\\ \ddot q(t)=0 \end{cases} \tag{3.2} q(t)=b0+b1tq˙(t)=b1q¨(t)=0(3.2)
根据连续性,解得
{ b 1 = v v b 0 = q 0 − v v T a 2 \begin{cases} b_1=v_v\\ b_0=q_0-\frac{v_vT_a}{2} \end{cases} {b1=vvb0=q02vvTa
(3)减速段, t ∈ [ t 1 − T a , t 1 ] t\in [t_1-T_a,t_1] t[t1Ta,t1]
{ q ( t ) = c 0 + c 1 t + c 2 t 2 q ˙ ( t ) = c 1 + 2 c 2 t q ¨ ( t ) = 2 c 2 (3.3) \begin{cases} q(t)=c_0+c_1t+c_2t^2\\ \dot q(t)=c_1+2c_2t\\ \ddot q(t)=2c_2 \end{cases} \tag{3.3} q(t)=c0+c1t+c2t2q˙(t)=c1+2c2tq¨(t)=2c2(3.3)
设置末速度为零,那么解的
{ c 0 = q 1 − v v t 1 2 2 T a c 1 = v v t 1 T a c 2 = − v v 2 T a \begin{cases} c_0=q_1-\frac{v_vt_1^2}{2T_a}\\ c_1=\frac{v_vt_1}{T_a}\\ c_2=-\frac{v_v}{2T_a} \end{cases} c0=q12Tavvt12c1=Tavvt1c2=2Tavv
综合起来,考虑一下一般的情况 t ≠ 0 t\neq 0 t=0,轨迹的位移表示为

t 0 ≤ t < t 0 + T a t_0\leq t<t_0+T_a t0t<t0+Ta
{ q ( t ) = q 0 + v v 2 T a ( t − t 0 ) 2 , q ˙ ( t ) = v v T a ( t − t 0 ) , q ¨ ( t ) = v v T a . \begin{cases} q(t)=q_0+\frac{v_v}{2T_a}(t-t_0)^2,\\ \dot q(t)=\frac{v_v}{T_a}(t-t_0),\\ \ddot q(t)=\frac{v_v}{T_a}. \end{cases} q(t)=q0+2Tavv(tt0)2,q˙(t)=Tavv(tt0),q¨(t)=Tavv.
t 0 + T a ≤ t < t 1 − T a t_0+T_a\leq t<t_1-T_a t0+Tat<t1Ta
{ q ( t ) = q 0 + v v ( t − t 0 − T a 2 ) , q ˙ ( t ) = v v , q ¨ ( t ) = 0. \begin{cases} q(t)=q_0+v_v(t-t_0-\frac{T_a}{2}),\\ \dot q(t)=v_v,\\ \ddot q(t)=0. \end{cases} q(t)=q0+vv(tt02Ta),q˙(t)=vv,q¨(t)=0.
t 1 − T a ≤ t ≤ t 1 t_1-T_a\leq t\leq t_1 t1Tatt1
{ q ( t ) = q 1 − v v 2 T a ( t 1 − t ) 2 , q ˙ ( t ) = v v T a ( t 1 − t ) , q ¨ ( t ) = − v v T a . \begin{cases} q(t)=q_1-\frac{v_v}{2T_a}(t_1-t)^2,\\ \dot q(t)=\frac{v_v}{T_a}(t_1-t),\\ \ddot q(t)=-\frac{v_v}{T_a}. \end{cases} q(t)=q12Tavv(t1t)2,q˙(t)=Tavv(t1t),q¨(t)=Tavv.
Eample3.2:给定梯形轨迹的条件, q 0 = 0 , q 1 = 30 , t 0 = 0 , t 1 = 4 , T a = 1 , v v = 10 q_0=0,q_1=30,t_0=0,t_1=4,T_a=1,v_v=10 q0=0,q1=30,t0=0,t1=4,Ta=1,vv=10. 绘制出轨迹的位移,速度,加速度曲线。

matlab实现代码如下

%{
使用抛物线过渡线性轨迹,example3.2
Brian
2018-12-22,
%}
close('all')
clc
clear
%%
%已知轨迹给定条件
q0=0;
q1=30;
t0=0;
t1=4;
Ta=1;
Vv=10;
%%
%计算轨迹的离散点
i=1;
Ts=0.001;
for t=t0:Ts:t1
    time(i)=t;
    if(t0 <=t && t<t0+Ta)
        q(i)=q0+Vv/(2.0*Ta)*(t-t0)^2;
        dq(i)=Vv/Ta*(t-t0);
        ddq(i)=Vv/Ta;
    end
    if(Ta <=t && t<t1-Ta)
        q(i)=q0+Vv*(t-t0-Ta/2.0);
        dq(i)=Vv;
        ddq(i)=0;      
    end
    if(t1-Ta<=t&&t<=t1)
        q(i)=q1-Vv/(2.0*Ta)*(t1-t)^2;
        dq(i)=Vv/Ta*(t1-t);
        ddq(i)=-Vv/Ta;
    end
    i=i+1;
end

%%
%设置绘图布局
figure
fig1=subplot(3,1,1);
ylabel('position');
grid on
hold on
fig2=subplot(3,1,2);
ylabel('velocity');
grid on
hold on
fig3=subplot(3,1,3);
ylabel('acceleration');
xlabel('time');
grid on
hold on
%绘图
c1=plot(fig1,time,q,'-r','LineWidth',1.5);
c2=plot(fig2,time,dq,'-b','LineWidth',1.5);
c3=plot(fig3,time,ddq,'-g','LineWidth',1.5);
%end

结果如下图所示
在这里插入图片描述

通用梯形速度曲线

确定梯形速度曲线的参数 h , v 0 , v 1 , T a , T d , a a , a d , v m a x h,v_0,v_1,T_a,T_d,a_a,a_d,v_{max} h,v0,v1,Ta,Td,aa,ad,vmax,可以指定其中部分参数,其他参数根据轨迹几何关系计算出来。对于一台机器要运动的位移,时间是千变万化的,但是其允许的最大速度,加速度,启动速度一般受到机械部件的限制,是确定的了。因此,实际应用中一般是指定梯形轨迹的位移,初始速度,最大速度,终止速度,最大加速度来确定轨迹。

因此,通用梯形速度曲线为已知初始速度,终止速度,加速度,减速度,最大速度,位移。要确定轨迹,关键是计算出加速度段,匀速段,减速度段对应的时间 T a , T v , T d T_a,T_v,T_d Ta,Tv,Td,然后就可以计算任意时刻 t ∈ [ 0 , T a + T v + T d ] t\in[0,T_a+T_v+T_d] t[0,Ta+Tv+Td]对应的位移,速度,加速度。

用户给定的起始速度,终止速度,加速度,减速度,最大速度,位移参数,不一定都能满足,若给定的参数的轨迹不存在,那么需要修改速度参数,优先满足位移条件(在实际的数控系统中常常是这么做),常常修改的是最大速度。因此,可以按照以下步骤计算梯形速度曲线

(1)根据 h , v 0 , v 1 , a a , a d h,v_0,v_1,a_a,a_d h,v0,v1,aa,ad,其中 h = q 1 − q 0 h=q_1-q_0 h=q1q0,计算能达到的最大速度 v f v_f vf。要达到最大速度,只有加速度段和减速段,没有减速段。因此有
h ≥ h a + h d = v f 2 − v 0 2 2 a a + v 1 2 − v f 2 2 a d h\geq h_a+h_d=\frac{v_f^2-v_0^2}{2a_a}+\frac{v_1^2-v_f^2}{2a_d} hha+hd=2aavf2v02+2adv12vf2

v f = 2 a a a d h + a a v 1 2 + a d v 0 2 a d + a a v_f=\sqrt{\frac{2a_aa_dh+a_av_1^2+a_dv_0^2}{a_d+a_a}} vf=ad+aa2aaadh+aav12+adv02

(2)比较 v f v_f vf v m a x v_{max} vmax的大小。

1)若 v f < v m a x v_f<v_{max} vf<vmax,说明按照给定参数运动无法达到用户设定的最大速度。这时候匀速段速度设置为 v v = v f v_v=v_f vv=vf(也是最大速度),实际上这时候没有匀速段,只有加速度段和减速段。

2)若 v f ≥ v m a x v_f\geq v_{max} vfvmax说明按照给定参数运动可以达到用户设定的最大速度。但是又不允许超过最大速度,因此匀速段的速度设置为 v v = v m a x v_v=v_{max} vv=vmax.

(3)计算加速段,匀速段和减速段的时间和位移
T a = v v − v 0 a a , L a = v 0 T a + 1 2 a a T a 2 T v = h − v v 2 − v 0 2 2 a a − v 1 2 − v v 2 2 a d v v , L v = v v T v , T d = v 1 − v v a d , L d = v v T d + 1 2 a d T d 2 . T_a=\frac{v_v-v_0}{a_a},L_a=v_0T_a+\frac{1}{2}a_aT_a^2\\ T_v=\frac{h-\frac{v_v2-v_0^2}{2a_a}-\frac{v_1^2-v_v^2}{2a_d}}{v_v},Lv=v_vT_v,\\ T_d=\frac{v_1-v_v}{a_d},L_d=v_vT_d+\frac{1}{2}a_dT_d^2. Ta=aavvv0,La=v0Ta+21aaTa2Tv=vvh2aavv2v022adv12vv2,Lv=vvTv,Td=adv1vv,Ld=vvTd+21adTd2.

(3)计算轨迹的离散点。轨迹可以使用下面的方程描述
{ q ( t ) = q 0 + v 0 t + 1 2 a a t 2 , q ˙ ( t ) = v 0 + a a t , q ¨ ( t ) = a a . t ∈ [ 0 , T a + T v ) \begin{cases} q(t)=q0+v_0t+\frac{1}{2}a_at^2,\\ \dot q(t)=v_0+a_at,\\ \ddot q(t)=a_a. \end{cases} t\in[0,T_a+T_v) q(t)=q0+v0t+21aat2,q˙(t)=v0+aat,q¨(t)=aa.t[0,Ta+Tv)

{ q ( t ) = q 0 + L a + v v ( t − T a ) , q ˙ ( t ) = v v , q ¨ ( t ) = 0. t ∈ [ T a , T ) \begin{cases} q(t)=q_0+L_a+v_v(t-T_a),\\ \dot q(t)=v_v,\\ \ddot q(t)=0. \end{cases} t\in [T_a,T) q(t)=q0+La+vv(tTa),q˙(t)=vv,q¨(t)=0.t[Ta,T)

{ q ( t ) = q 0 + L a + L v + 1 2 a d ( t − T a − T v ) 2 , q ˙ ( t ) = v v + a d ( t − T a − T v ) , q ¨ ( t ) = a d . t ∈ [ T a + T v , T a + T v + T d ] \begin{cases} q(t)=q_0+L_a+L_v+\frac{1}{2}a_d(t-T_a-T_v)^2,\\ \dot q(t)=v_v+a_d(t-T_a-T_v),\\ \ddot q(t)=a_d. \end{cases} t\in [T_a+T_v,T_a+T_v+T_d] q(t)=q0+La+Lv+21ad(tTaTv)2,q˙(t)=vv+ad(tTaTv),q¨(t)=ad.t[Ta+Tv,Ta+Tv+Td]

初始时刻 t 0 ≠ 0 t_0\neq 0 t0=0时,把 t t t换成 t − t 0 t-t_0 tt0后,上式同样适用。下面给定几组参数绘制出对应的梯形速度曲线

Example3.3:

(a) t 0 = 1 , q 0 = 5 , q 1 = 20 , v 0 = 50 , v m a x = 150 , v 1 = 20 , a a = 1000 , a d = − 1500 t_0=1,q_0=5,q_1=20,v_0=50,v_{max}=150,v_1=20,a_a=1000,a_d=-1500 t0=1,q0=5,q1=20,v0=50,vmax=150,v1=20,aa=1000,ad=1500

(b) t 0 = 1 , q 0 = 5 , q 1 = 30 , v 0 = 50 , v m a x = 150 , v 1 = 20 , a a = 1000 , a d = − 1500 t_0=1,q_0=5,q_1=30,v_0=50,v_{max}=150,v_1=20,a_a=1000,a_d=-1500 t0=1,q0=5,q1=30,v0=50,vmax=150,v1=20,aa=1000,ad=1500

matlab代码如下

%{
一般的抛物线过渡线性轨迹(梯形速度曲线),example3.3
Brian
2018-12-23,
%}
%  close('all')
clc
clear
%给定的轨迹参数
t0=2;
q0=5;
q1=20;
v0=50;
v1=20;
vmax=150;
aa=1000;
ad=-1500;
%%
%设置绘图布局
fig1=subplot(3,1,1);
ylabel('position');
grid on
hold on
fig2=subplot(3,1,2);
ylabel('velocity');
grid on
hold on
fig3=subplot(3,1,3);
ylabel('acceleration');
xlabel('time');
grid on
hold on
h=q1-q0;
%确定最大速度
vf=sqrt((2*aa*ad*h-aa*v1^2+ad*v0^2)/(ad-aa));
if(vf>vmax)
    Vv=vmax;
else
    Vv=vf;
end
%计算加速和减速段时间
Ta=(Vv-v0)/aa;
La=v0*Ta+1.0/2.0*aa*Ta^2;
Td=(v1-Vv)/ad;
Ld=Vv*Td+1.0/2.0*ad*Td^2;
Tv=(h-(Vv^2-v0^2)/(2.0*aa)-(v1^2-Vv^2)/(2.0*ad))/Vv;
Lv=h-La-Ld;

%计算轨迹的离散点
Ts=0.001;
j=1;
for t=t0:Ts:t0+Ta+Tv+Td
    time(j)=t;
    t=t-t0;
    if(t>=0&&t<Ta)
        q(j)=q0+v0*t+1.0/2.0*aa*t^2;
        dq(j)=v0+aa*t;
        ddq(j)=aa;
    end

   if(t>=Ta &&t<Ta+Tv)
       q(j)=q0+La+Vv*(t-Ta);
       dq(j)=Vv;
       ddq(j)=0;
   end
   if(t>Ta+Tv&&t<Ta+Tv+Td)
       q(j)=q0+La+Lv+Vv*(t-Ta-Tv)+1.0/2.0*ad*(t-Ta-Tv)^2;
       dq(j)=Vv+ad*(t-Ta-Tv);
       ddq(j)=ad;
   end   
   j=j+1;
end
%绘图
c1=plot(fig1,time,q,'--r','LineWidth',1.5);
c2=plot(fig2,time,dq,'--b','LineWidth',1.5);
c3=plot(fig3,time,ddq,'--g','LineWidth',1.5);
clear  q dq ddq  

程序运行结果如下图所示

在这里插入图片描述

小结

梯形速度曲线,也称为直线加减速或T型加减速。其算法十分简易,规划周期耗时短,有利于缩减系
统的连续运行时间,从而提高系统的运动控制速度,实施起来比较容易,应用广泛。

但它采用的是匀加减速,使得在加、减速阶段的起点和终点处加速度存在突变,加速度曲线不连续,使其加速、匀速和减速过程不能实现平滑过渡,存在跳跃现象,导致关节电机进行插补时产生较大的冲击,进给驱动系统出现振动,对电机造成损害,影响使用寿命。因而,直线加减速通常运用于低速、低成本的运动控制过程[2]。

参考文献

[1]Biagiotti L, Melchiorri C. Trajectory Planning for Automatic Machines and Robots[M]. Springer Berlin Heidelberg, 2009.

[2]李方书. 多轴运动控制器的速度规划算法研究[D]. 华南理工大学, 2014.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值