S形加减速

S曲线加减速

  • 加加速段
    加加速度为 jmax ,加速度线性增加至设定值或最大值 amax
  • 匀加速段
    加加速度为0,加速度恒定。
  • 减加速段
    当速度接近设定的值或最大值 vmax 时,加加速度突变为反向的 jmax ,进入加速度线性减小的变减速运动阶段。
  • 匀速段
    当速度增至 vmax 后,加加速和加速度均变为0,进入匀速运动阶段。
  • 加减速段
    加加速度突变为反向的 jmax ,加速度反向线性增加至 amax
  • 匀减速段
    加加速度和为0,减加速度恒定。
  • 减减速段
    加速度突变为 jmax , 加速度由负向的 amax 线性减小至0。

  1. 加加速度、加速度、速度、位移随时间的变化函数:
    tk(k=0,1,...7) :表示各个阶段的过渡点时刻;
    τk(k=0,1,...7) :局部时间坐标,表示以各个阶段的起始点作为时间零点的时间表示, τk=tktk1(k=1,...7) ;
    Tk(k=1,...7) :各个阶段的持续运行时间。
    j(t)=jmax0jmax0jmax0jmax0tt1t1tt2t2tt3t3tt4t4tt5t5tt6t6tt7

    a(t)=jmaxτ1amaxamaxjmaxτ30jmaxτ5amaxamax+jmaxτ70tt1t1tt2t2tt3t3tt4t4tt5t5tt6t6tt7t=t1amax=jmaxT1

    v(t)=vs+12jmaxτ21v1+amaxτ2v2+amaxτ312jmaxτ23v3v412jmaxτ25v5amaxτ6v6amaxτ7+12jmaxτ270tt1t1tt2t2tt3t3tt4t4tt5t5tt6t6tt7v1=vs+12jmaxT21v2=v1+amaxT2v3=v2+12jmaxT21v3=v4v5=v412jmaxT25v6=v5amaxT6v7=v612jmaxT25

    S(t)=vsτ1+16jmaxτ31S1+v1τ2+12jmaxT1τ22S2+v2τ3+12jmaxT1τ2316jmaxτ33S3+v3τ4S4+v4τ516jmaxτ35S5+v5τ612jmaxT5τ26S6+v6τ712jmaxT5τ27+16jmaxτ370tt1t1tt2t2tt3t3tt4t4tt5t5tt6t6tt7t=t1,S1=vsT1+16jmaxT31t=t2,S2=S1+v1T2+12jmaxT1T22t=t3,S3=S2+v2T1+13jmaxT31t=t4,S4=S3+v3T4t=t5,S5=S4+v4T516jmaxT35t=t6,S6=S5+v5T612jmaxT5T26t=t7,S7=S6+v6T513jmaxT35
  2. 几条关键中间计算公式推导

    T1=T3T5=T7

    T2=vmaxvsamaxT1

    T6=vmaxveamaxT5

    当系统可以达到最大加速度时,有 T1=T3=T5=T7 。若此时有 vs=ve 时,则
    T2=T6jmaxT1=jmaxT5=amaxv3=v4=vmax=vs+jmaxT1T2+jmaxT21

    v7=vs+jmaxT1(T1+T2)jmaxT5(T5+T6)=ve

    加速区长度 Sa=vs(2T1+T2)+12jmaxT1(2T21+3T1T2+T22)
    减速区长度 Sd=v3(2T5+T6)12jmaxT5(2T25+3T5T6+T26
    规划路径的长度 S7=Sa+vmaxT4+Sd

  3. 规划
    系统的最大加加速度为J,进给速度为F,最大加速度为 Amax ,并且 vs=ve

    1. 当系统刚好能够达到最大加速度 Amax ,且无匀加减速和匀速段
      Three-order Pure S acc/dec Curve
      T2=T6=T4=0
      T1=T3=T5=T7
      T1=AmaxJ
      vmax=v3=vs+jmaxT21
      系统的规划路径长度
      Sref=S7=2vsT1+jmaxT31+2v3T5jmaxT35=2vsT1+2v3T5

    2. L<Sref,F>vmax ,L的长度不足以系统增大至最大加速度 Amax 。加速区和减速区各为 L 的一半。
      短线段S加减速速度、加速度曲线
      Sa=JT31+2vsT1=L2,解方程得

      a=LJ4

      b=L2J16+8v3s27

      T1=a+b3+ab3J

      vmax=JT21+vs

    3. L<Sref,F<vmax ,此时有匀速段。
      五段S形加减速曲线

      T1=FvsJ

      Sa=JT31+2vsT1

      T4=L2SaF

    4. L>Sref,F<vmax ,此种情形与上同。

    5. L>Sref,F>vmax ,L足够长以致 amax 有足够的时间来增大至 Amax ,并且 vmax 没有超过进给速度 F ,此时必定产生匀加减速段,假设vmax刚好增大至 F
      T5=T1=AmaxJ

      T2=FvsAmaxT1

      T6=FveAmaxT5

      Sref=F+vs2(2T1+T2)+F+ve2(2T5+T6)

      L<Sref L 不够长以致vmax无法增大至 F ,重新规划,匀加减速段减小。解方程组
      T5=T1=AmaxJT2=vmaxvsAmaxT1T6=vmaxveAmaxT5L=vmax+vs2(2T1+T2)+vmax+ve2(2T5+T6)
      ,带入化简得
      2Jv2max+2A2maxvmax+A2max(vs+ve)J(v2s+v2e)2JAmaxL=0

      vmax=A2max2J+A4max2J[A2max(vs+ve)J(v2s+v2e)2AmaxJL]2J

      解得 vmax 带入方程组求得 T2,T6
      L>Sref ,L足够长以致 vmax 能够增大至 F ,并且产生匀速段,此时有完整的7段S形曲线。
      7段S形加减速曲线
      T4=LSrefvmax

基于LinuxCNC的机器人核心控制算法研究
数控系统S形曲线加减速快速规划研究
S曲线加减速算法研究
S曲线加减速控制新方法的研究
Motion Planning for Archwire Bending Robot in Orthodontic Treatments

  • 21
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
S型减速是一种常用的运动规划方法,用于实现平滑的速和减速过程。在Matlab中,可以通过编写代码来实现S型减速。 S型减速的原理是在一段时间内逐渐增或减小速度,使得物体的速度保持恒定。具体步骤如下: 1. 确定起始速度、目标速度和速度。这些参数可以根据具体需求进行设定。 2. 计算速阶段的时间和距离。速阶段的时间可以通过目标速度和速度计算得到,距离可以通过起始速度、目标速度和速度计算得到。 3. 计算匀速阶段的时间和距离。匀速阶段的时间可以通过目标速度和速度计算得到,距离可以通过起始速度、目标速度和速度计算得到。 4. 计算减速阶段的时间和距离。减速阶段的时间可以通过目标速度和速度计算得到,距离可以通过起始速度、目标速度和速度计算得到。 5. 根据计算得到的时间和距离,编写Matlab代码实现S型减速。 以下是一个简单的Matlab示例代码: ```matlab function [position, velocity, acceleration] = s_curve_acceleration(start_velocity, target_velocity, acceleration, time) % 计算速阶段的时间和距离 t_acc = (target_velocity - start_velocity) / acceleration; d_acc = start_velocity * t_acc + 0.5 * acceleration * t_acc^2; % 计算匀速阶段的时间和距离 t_const = (time - 2 * t_acc) / 2; d_const = target_velocity * t_const; % 计算减速阶段的时间和距离 t_dec = t_acc; d_dec = target_velocity * t_dec - 0.5 * acceleration * t_dec^2; % 计算位置、速度和速度 if time <= 2 * t_acc position = start_velocity * time + 0.5 * acceleration * time^2; velocity = start_velocity + acceleration * time; acceleration = acceleration; elseif time <= 2 * t_acc + 2 * t_const position = d_acc + (time - 2 * t_acc) * target_velocity; velocity = target_velocity; acceleration = 0; else position = d_acc + d_const + (time - 2 * t_acc - 2 * t_const) * target_velocity - 0.5 * acceleration * (time - 2 * t_acc - 2 * t_const)^2; velocity = target_velocity - acceleration * (time - 2 * t_acc - 2 * t_const); acceleration = -acceleration; end end ``` 使用该函数可以得到在指定时间内的位置、速度和速度。你可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值