Matlab T型速度规划

%% 梯形速度曲线
%% 假定初始速度和最终速度为零,给定最大的加速度、运行时间、开始角度 、结束角度


function trapezoid()

%给定初始条件
t0=0;
tf=10;
q0=0;
qf=20;
a_max=1;

if a_max>= 4*(qf-q0)/(tf-t0)^2
% 先判断能否求解到t_f,给定的最大加速度是否满足条件   
% t_f 加速至匀速阶段的时间
    t_f=tf/2-0.5*sqrt( ( tf^2*a_max-4*(qf-q0)) / (a_max));
    i=1;
    t=t0:0.1:tf;
    n=size(t);

    qt=zeros(n(2),1);
     for t=t0:0.1:tf
         if t<=t_f
             qt(i)=q0+0.5*a_max*t*t;
         elseif t_f<t && t<=tf-t_f
             qt(i)=q0+0.5*a_max*t_f*t_f+a_max*t_f*(t-t_f);
         else 
             qt(i)=qf-0.5*a_max*(t-tf)^2;
         end
         i=i+1;
     end
     
     figure(1)
     plot(qt);
     legend('位置曲线')
     figure(2)
     plot(diff(qt))
     legend('速度曲线')
     figure(3)
     plot(diff(diff(qt)))
     legend('加速度曲线')
else
    disp('给定的加速度太小,不能求解出轨迹');
end

end
%% 梯形速度曲线
%% 给定开始角度 、结束角度、匀速阶段的速度、给定最大的加速度


function trapezoid_2()

%给定初始条件
t0=0;
q0=0;
qf=20;
v_max=3;   %这两个值不同,得到的轨迹曲线也就不一样
a_max=0.5;


t_c=v_max/a_max;
q_c=0.5*a_max*t_c^2;
t_f=(qf-2*q_c)/v_max+2*t_c;

t=t0:0.1:t_f;
n=size(t);
qt=zeros(n(2),1);

i=1;
if t_f-2*t_c>0  % 达到最大速度,也即速度曲线为梯形
     for t=t0:0.1:t_f
         if t<=t_c
             qt(i)=q0+0.5*a_max*t*t;
         elseif t_c<t && t<=t_f-t_c
             qt(i)=q0+0.5*a_max*t_c*t_c+a_max*t_c*(t-t_c);
         else 
             qt(i)=qf-0.5*a_max*(t_f-t)^2;
         end
         i=i+1;
     end
else  % 未达到最大速度,也即速度曲线为三角形
    t_c=sqrt( (qf-q0)/a_max);
    t_f=2*t_c;
         for t=t0:0.1:t_f
             if t<=t_c
                 qt(i)=q0+0.5*a_max*t*t;
             else 
                 qt(i)=qf-0.5*a_max*(t_f-t)^2;
             end
             i=i+1;
        end
    
end
     figure(1)
     plot(qt);
     legend('位置曲线')
     figure(2)
     plot(diff(qt))
     legend('速度曲线')
     figure(3)
     plot(diff(diff(qt)))
     legend('加速度曲线')

end
### 回答1: MATLAB中的S速度曲线实际上是通过S函数建模的一种速度变化曲线。这种曲线呈现出先缓慢加速,然后高速行驶,最后再缓慢减速的特点。 在MATLAB中,可以使用logistic函数来实现S速度曲线的建模。logistic函数的数学表达式是: f(x) = 1 / (1 + exp(-k(x-x0))) 其中,f(x)表示函数的输出值,x表示输入值(时间),k是一个常数,x0是函数的中心点(曲线的拐点)。 通过适当选择k和x0的值,可以调整曲线的斜率和变化的位置。一般来说,k的值越大,曲线的斜率越陡峭,速度变化越快;x0的值越大,曲线的拐点越后移,速度的起始和终止部分变化越平缓。 在MATLAB中,可以使用函数plot来绘制S速度曲线。首先,需要定义一个时间向量t,然后计算每个时间点对应的速度值。最后,使用plot函数将时间和速度值进行绘制。 例如,以下代码演示了如何在MATLAB中绘制一个简单的S速度曲线: t = 0:0.1:10; k = 1; x0 = 5; v = 1./(1 + exp(-k*(t-x0))); plot(t, v); xlabel('时间'); ylabel('速度'); title('S速度曲线'); 运行这段代码将生成一个S速度曲线的图形,横轴表示时间,纵轴表示速度。图形的形状会受到k和x0参数值的影响,可以根据需要进行调整。 总之,MATLAB中的S速度曲线是使用logistic函数建模的一种通过S函数表示速度变化的曲线。可通过选择合适的参数值实现不同斜率和位置的S速度曲线。 ### 回答2: MATLAB 是一种强大的科学计算软件,它可以用来绘制各种类的图形,包括 S 速度曲线。 S 速度曲线是一种常用于描述物体起步、加速、减速和停止等过程的曲线。它由一段较长的匀速运动段和两段较短的加速和减速运动段组成,使物体的速度能够平滑地从静止加速到最大值,再从最大值平滑地减速到静止。 要在 MATLAB 中绘制 S 速度曲线,可以按照以下步骤进行: 1. 创建一个时间向量 t,可以使用 linspace 函数生成一定时间范围内的等间隔时间点。 2. 定义三个参数:加速时间 ta、减速时间 td 和时间间隔 Dt。 3. 创建一个速度向量 v,初始化为全零。 4. 根据时间间隔 Dt,计算加速时间段内的速度增量 dva 和减速时间段内的速度减量 dvd。 5. 将加速时间段内的速度增量分配到速度向量 v 的前半段,将减速时间段内的速度减量分配到速度向量 v 的后半段。 6. 对速度向量 v 进行累加,得到最终的 S 速度曲线。 7. 使用 plot 函数将时间向量 t 和速度向量 v 绘制出来,以展示 S 速度曲线。 总的来说,MATLAB 提供了灵活且简单的方法来绘制 S 速度曲线。通过设定相关参数和使用合适的函数,我们可以轻松地生成符合需求的 S 速度曲线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独坐寒江边

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

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

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

打赏作者

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

抵扣说明:

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

余额充值