梯形速度规划-加减速


Home

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




%{
使用抛物线过渡线性轨迹,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




%{
一般的抛物线过渡线性轨迹(梯形速度曲线),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型加减速。其算法十分简易,规划周期耗时短,有利于缩减系统的连续运行时间,从而提高系统的运动控制速度,实施起来比较容易,应用广泛。

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


======================================================================
我的测试结果及程序
下面是我测试的代码: