摘要:本文重点介绍T型速度曲线轨迹规划的matlab算法

        T型速度曲线一般包括匀加速、匀速、匀减速。下图是典型的T型速度曲线图。

1) 约束条件

q0和v0分别是起始点的位置和速度, q1和v1分别是终点的位置和速度。vmax, amax分别是是规划的最大速度和最大加速度。

2)T型速度曲线说明

  • 匀加速段 0<= t < Ta

         以恒定的加速度amax加速,使速度从v0增加到vmax;

  • 匀速段   Ta <= t < Ta + Tv

        以恒定的速度vamx匀速运动;

  • 匀减速段 Ta + Tv <= t < Ta + Tv + Td

        以恒定的加速度-amax减速,使速度从vmax减小到v1;

3)T型速度曲线算法步骤

     a) 首先计算系统所能达到的最大速度。由

                                                        

        则临界速度

                                                        

     b)  分类讨论系统所能达到的最大速度和设定最大速度的大小

         若vtemp < vmax,则

                                                         

          否则,

                                                           

      c) 分别计算匀加速、匀速、匀减速的时间和位移

                                       

    d) T型速度曲线各阶段计算公式

                                            

4) Matlab程序

   T型速度曲线规划算法函数如下:

function [time, q, qd, qdd] = TSpeedCruveMethod(q0,q1,v0,v1,vmax,amax)
%% input q0,q1,vo,v1,vmax,amax
%% output time,q,qd,qdd

v_temp = sqrt((2.0*amax*(q1-q0) + (v1^2 + v0^2)) / 2);

if(v_temp<vmax)
    vlim = v_temp;
else
    vlim = vmax;
end

Ta = (vlim-v0)/amax;
Sa = v0*Ta+amax*Ta^2/2;

Tv = (q1-q0-(vlim^2-v0^2)/(2*amax)-(v1^2-vlim^2)/(2*-amax))/vlim;
Sv = vlim*Tv;

Td = (vlim-v1)/amax;
Sd = vlim*Td - amax*Td^2/2;

T = Ta + Tv +Td;
td = 0.001;
k = 1;
for t = 0:td:T
    time(k) = td *k;
    if(t >= 0 && t < Ta)
        q(k) = q0 + v0*t + amax*t^2/2;
        qd(k) = v0 + amax*t;
        qdd(k) = amax;
    elseif(t >= Ta && t < Ta+Tv)
        q(k) = q0 + Sa + vlim*(t - Ta);
        qd(k) = vlim;
        qdd(k) = 0;
    elseif(t >= Ta+Tv && t <= T)
        q(k) = q0 + Sa + Sv + vlim*(t - Ta - Tv) - amax*power(t - Ta - Tv, 2)/2;
        qd(k) = vlim - amax*(t - Ta - Tv);
        qdd(k) = -amax;
    end
    k = k + 1;
end
end

     验证程序如下:

clear;clc
%% input para
q0 = 0; q1 = 1000;
v0 = 0; v1 =0;
vmax = 50; amax = 10;

[time, q, qd, qdd] = TSpeedCruveMethod(q0,q1,v0,v1,vmax,amax);

figure(1)
subplot(311)
plot(time,q,'r','LineWidth',1.5);
grid on;xlabel('time[s]');ylabel('position[mm]');
subplot(312)
plot(time,qd,'b','LineWidth',1.5);
grid on;xlabel('time[s]');ylabel('speed[mm/s]');
subplot(313)
plot(time,qdd,'g','LineWidth',1.5);
grid on;xlabel('time[s]');ylabel('acceleration[mm/s2]');

      matlab运行结果如下:

当q1=100,其他参数不变,结果如下:

 

结论:本算法很好地展现了T型速度曲线的轨迹规划算法,在单轴运动学电机控制可以运用。

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐