精华内容
下载资源
问答
  • 2020-03-15 16:58:20

    运动控制中常用的T速度曲线规划的原理和程序实现,最后给出了测试结果;
    如果本文帮到了您,请帮忙点个赞 👍👍👍;
    如果本文帮到了您,请帮忙点个赞 👍👍👍;
    如果本文帮到了您,请帮忙点个赞 👍👍👍;

    1 前言

    在伺服系统以及控制系统的加减速动作中,为了让速度更加平滑,可以引入T型速度曲线规划(T-curve velocity profile),T曲线是工业界广泛采用的形式,它是一种时间最优的曲线。一般情况,曲线加速和减速的过程是对称的,设给定速度上限 v

    更多相关内容
  • 1、西门子S7_1500实现判断当前位置与...3、同时由于Sinx*Sinx 曲线加速度先增加后减小到的特征,整条曲线不用再分成七段或五段计算而采用传统速度曲线的三段速。 4、资料包含测试程序 、仿真模拟、参考文档,项目资料等
  • S型速度曲线.rar

    2019-08-20 19:03:21
    使用3段S型加减速算法实现S型速度曲线的输出,使用MATLAB仿真,实现了初速度-运行速度-结束速度的控制
  • matlab中感应电机的速度转矩特性
  • 基于ATO系统的列车速度曲线优化的MATLAB代码,应用了遗传算法进行优化
  • 曲柄滑块机构
  •   电机驱动是很常见的应用,在很多系统中我们都会碰到需要改变电机的速度以实现相应的控制功能,这就涉及到电机速度曲线规划的问题。在这篇中我们就来简单讨论一下电机的S型曲线规划的问题。 1、基本原理   S型...

      电机驱动是很常见的应用,在很多系统中我们都会碰到需要改变电机的速度以实现相应的控制功能,这就涉及到电机速度曲线规划的问题。在这篇中我们就来简单讨论一下电机的S型曲线规划的问题。

    1、基本原理

      S型速度曲线控制算法是工业控制领域另一种常用的加减速控制策略,S型曲线很好的克服了T型曲线加速度不连续的问题。

      S型曲线实际就是实现一个加速度的T型变化过程,具体来说就是加速度增加、加速度恒定、将速度减小的过程。在整个速度调节规程中,加速度是连续变化的,而反映到速度的变化就是一条平滑的S型曲线。如下图所示:

      这是比较常见的S曲线的形式,其函数表达式如下:

      这一函数是这类函数的一个特例,其并不具有普遍性。在我们应用中,我们可能会需要根据应用的要求对S型曲线在横轴和纵轴两个方向平移或拉伸。所以这一函数更为普遍的描述如下:

      在这一表达式中,A表示在纵轴方向的平移,B表示在纵轴方向的拉伸,a表示在横轴方向的拉伸,b表示在横轴方向的平移。具体反映到函数图形上就是如下图所示:

      那么究竟如何使用这一S曲线函数来对电机进行调速呢?我们考虑到,所谓电机调速实际就是电机速度与运行时间之间存在一定的函数关系。很显然,纵轴就是电机速度,横轴就是运行时间。于是我们就可以得到电机的S型速度曲线的函数关系如下:

      可能大家会发现,这个速度曲线的函数似乎与前面的数学函数有些许差别。这是为了更好的适应调速的区别。在数学上,数轴都是对称的,但在速度调节过程中,速度和时间都不可能存在负数的情况,所以我们需要对其进行平移。但是平移之后,S曲线的图形就不对称了,所以我们以整个调速过程的调速时间的中间点为轴就是对称的了,所以就有了上述的函数表达式。

    2、设计与实现

      我们已经简单描述了S型速度规划曲线的数学原理及应用表达式。接下来我们来考虑怎么实现它。

      考虑到在同一个驱动器中可能因为应用场景的需要存在多条的速度规划曲线。所以我们以基于对象的思路来考虑它,这样我们在更换不同的曲线就只需要更换不同的曲线实力就可以了。所以我们先来分析一下曲线对象的属性和操作。

      鉴于前面的分析,我们认为作为一个调速曲线对象至少要记录:开始调速时的初始速度、当前速度、目标速度、加速度、最大速度、最小速度、调速时间、调速时间跨度、曲线类型以及S曲线拉伸度等,我们将这些记为对象的属性。据此我们可以定义电机速度曲线的对象类型为:

    /* 定义电机速度曲线对象 */
    typedef struct CurveObject {
      float startSpeed;    //开始调速时的初始速度
      float currentSpeed;   //当前速度
      float targetSpeed;   //目标速度
      float stepSpeed;    //加速度
      float speedMax;     //最大速度
      float speedMin;     //最小速度
      uint32_t aTimes;    //调速时间
      uint32_t maxTimes;   //调速跨度
      SpeedCurveType curveMode;  //曲线类型
      float flexible;     //S曲线拉伸度
    }CurveObjectType;
    

      我们已经定义了一个速度曲线对象类型,接下来我们就来分析如何实现一个S型调速曲线。我们已经描述过,速度其实就是时间的函数,根据我们前面分析的速度时间的函数表达式,我们实现如下:

    void (*pCalCurve[])(CurveObjectType *curve)={CalCurveNone,CalCurveTRAP,CalCurveSPTA};
     
    /* 电机曲线加减速操作-------------------------------------------------------- */
    void MotorVelocityCurve(CurveObjectType *curve)
    {
      float temp=0;
      
      if(curve->targetSpeed>curve->speedMax)
      {
         curve->targetSpeed=curve->speedMax;
      }
      
      if(curve->targetSpeed<curve->speedMin)
      {
         curve->targetSpeed=curve->speedMin;
      }
     
      if((fabs(curve->currentSpeed-curve->startSpeed)<=curve->stepSpeed)&&(curve->maxTimes==0))
      {
         if(curve->startSpeed<curve->speedMin)
         {
           curve->startSpeed=curve->speedMin;
         }
         
         temp=fabs(curve->targetSpeed-curve->startSpeed);
         temp=temp/curve->stepSpeed;
         curve->maxTimes=(uint32_t)(temp)+1;
         curve->aTimes=0;
      }
      
      if(curve->aTimes<curve->maxTimes)
      {
         pCalCurve[curve->curveMode](curve);
         curve->aTimes++;
      }
      else
      {
         curve->currentSpeed=curve->targetSpeed;
         curve->maxTimes=0;
         curve->aTimes=0;
      }
    }
     
    /*S型曲线速度计算*/
    static void CalCurveSPTA(CurveObjectType *spta)
    {
      float power=0.0;
      float speed=0.0;
      
      power=(2*((float)spta->aTimes)-((float)spta->maxTimes))/((float)spta->maxTimes);
      power=(0.0-spta->flexible)*power;
      
      speed=1+expf(power);
      speed=(spta->targetSpeed-spta->startSpeed)/speed;
      spta->currentSpeed=speed+spta->startSpeed;
      
      if(spta->currentSpeed>spta->speedMax)
      {
         spta->currentSpeed=spta->speedMax;
      }
      
      if(spta->currentSpeed<spta->speedMin)
      {
         spta->currentSpeed=spta->speedMin;
      }
    }
    

      在这个实现中,我们出于更普遍的实用性考虑,将各种曲线的相同操作集成在一起,然后将它们差异的部分通过曲线类型属性以回调函数的方式集成。

    3、应用与验证

      我们实现了S型电机速度规划曲线的基本设计与实现。接下来,我们就是用这一调速曲线来实现一个电机调速的实例。我们定义速度规划曲线时,是及与对象的思想来实现的,所以我们先声明一条曲线对象实例。

      CurveObjectType curve; //电机调速曲线

      在声明了这一曲线对象后,我们需要对其初始化赋值才能正确的使用。大多数的属性直接根据应用对象的要求给予初始值就可以了。需要注意的是曲线类型这一属性,这将决定使用什么样的速度规划曲线。该属性为SpeedCurveType枚举,该枚举定义如下:

    /* 定义电机速度曲线类型枚举 */
    typedef enum SpeedCurve {
      CURVE_NONE=0,  //直启
      CURVE_TRAP=1,  //梯形曲线
      CURVE_SPTA=2  //S型曲线
    }SpeedCurveType;
    

      在这里我们需要将曲线类型初始化为T形速度规划曲线。具体操作如下:

      curve.curveMode=CURVE_SPTA;

      初始化完成之后就可以使用曲线对象来实现电机速度的调节了。使用也很简单,只要按一定的时间周期调用我们前面实现的MotorVelocityCurve函数就可以实现整个调速过程。具体如下:

      MotorVelocityCurve(&curve);

      在每次调速开始之前都需要设置取下的开始速度和目标速度,这样函数就会按照设定的起始速度和目标速度实现速度调整。

    4、小结

      S型速度曲线将整个运动过程划分为7个阶段,即加加速度段、匀加速度段、减加速度段、匀速段、加减速度段、匀减速度段和减减速度段,不同阶段速度衔接处加速度是连续的,且加速度的变化率可控,克服了梯形速度曲线中存在的加速度突变的不利影响,这是S型曲线的一大优势。

      但是相比于T型速度曲线,S型曲线的计算量要大很多,实现起来也比T型曲线更为复杂。不过这些在现在的处理系统中都不再是问题。在使用过程中需要关注参数设定,特别是拉伸系数,必须根据应用场合需要仔细调整。如果太小,中间调速过程会变平坦,起始和结束阶段则会相对变化较快;如果太大,其实和结束过程会变得比较平坦,但中间部分会变化较快。具体就要看应用需求了。

    欢迎关注:

    展开全文
  • 以前做运动控制算法分析以及S曲线生成的总结性文档,文中提到的S型曲线计算方法能够生成平稳可靠的S型曲线,借助STM32F4浮点运算平台,算法运行良好,控制性能优良。该算法经过了多个实际产品的考验,运行状态良好。...
  •   电机驱动是很常见的应用,在很多系统中我们都会碰到需要改变电机的速度以实现相应的控制功能,这就涉及到电机速度曲线规划的问题。在这篇中我们就来简单讨论一下电机的梯形曲线规划的问题。 1、基本原理   ...

      电机驱动是很常见的应用,在很多系统中我们都会碰到需要改变电机的速度以实现相应的控制功能,这就涉及到电机速度曲线规划的问题。在这篇中我们就来简单讨论一下电机的梯形曲线规划的问题。

    1、基本原理

      梯形速度曲线控制算法是工业控制领域应用最为广泛的加减速控制策略之一。所谓梯形速度曲线将整个运动过程分为匀加速、匀速和匀减速三个阶段,在变速过程中加速度保持不变。

      从变速过程中加速度保持不变这特点来说,其加减速过程其实是一个线性过程。我们可以采用一个线性函数来描述它。

      这一线性函数,具体到我们的加减速过程中就是速度与时间的函数关系,函数结果就是我们某一时刻的速度,变量就是时间,斜率就是加速度,初始速度就是截距,具体如下:

      这一函数表达的是连续的,但实际使用中我们需要离散化处理,我们必定以一定的时间间隔来处理速度的增加问题。这样实际的速度变化就不可能是连续的,而是阶梯状的,具体如下:

      为了速度的变化尽量平缓,我们需要尽可能地让时间间隔小一些,这其实是我们在考虑编写程序时需要处理的一个参数。

    2、设计与实现

      我们已经简单描述了S型速度规划曲线的数学原理及应用表达式。接下来我们来考虑怎么实现它。

      考虑到在同一个驱动器中可能因为应用场景的需要存在多条的速度规划曲线。所以我们以基于对象的思路来考虑它,这样我们在更换不同的曲线就只需要更换不同的曲线实力就可以了。所以我们先来分析一下曲线对象的属性和操作。

      鉴于前面的分析,我们认为作为一个调速曲线对象至少要记录:开始调速时的初始速度、当前速度、目标速度、加速度、最大速度、最小速度、调速时间、调速时间跨度、曲线类型等,我们将这些记为对象的属性。据此我们可以定义电机速度曲线的对象类型为:

    /* 定义电机速度曲线对象 */
    typedef struct CurveObject {
      float startSpeed;    //开始调速时的初始速度
      float currentSpeed;   //当前速度
      float targetSpeed;    //目标速度
      float stepSpeed;     //加速度
      float speedMax;     //最大速度
      float speedMin;     //最小速度
      uint32_t aTimes;     //调速时间
      uint32_t maxTimes;    //调速跨度
      SpeedCurveType curveMode;  //曲线类型
    }CurveObjectType;
    

     我们已经定义了一个速度曲线对象类型,接下来我们就来分析如何实现一个T型调速曲线。我们已经描述过,速度其实就是时间的函数,根据我们前面分析的速度时间的函数表达式,我们实现如下:

    void (*pCalCurve[])(CurveObjectType *curve)={CalCurveNone,CalCurveTRAP,CalCurveSPTA};
     
    /* 电机曲线加减速操作-------------------------------------------------------- */
    void MotorVelocityCurve(CurveObjectType *curve)
    {
      float temp=0;
      
      if(curve->targetSpeed>curve->speedMax)
      {
        curve->targetSpeed=curve->speedMax;
      }
      
      if(curve->targetSpeed<curve->speedMin)
      {
        curve->targetSpeed=curve->speedMin;
      }
     
      if((fabs(curve->currentSpeed-curve->startSpeed)<=curve->stepSpeed)&&(curve->maxTimes==0))
      {
        if(curve->startSpeed<curve->speedMin)
        {
          curve->startSpeed=curve->speedMin;
        }
        
        temp=fabs(curve->targetSpeed-curve->startSpeed);
        temp=temp/curve->stepSpeed;
        curve->maxTimes=(uint32_t)(temp)+1;
        curve->aTimes=0;
      }
      
      if(curve->aTimes<curve->maxTimes)
      {
        pCalCurve[curve->curveMode](curve);
        curve->aTimes++;
      }
      else
      {
        curve->currentSpeed=curve->targetSpeed;
        curve->maxTimes=0;
        curve->aTimes=0;
      }
    }
     
    /*梯形曲线速度计算*/
    static void CalCurveTRAP(CurveObjectType *trap)
    {
      float slope=0.0;
      
      slope=(trap->targetSpeed-trap->startSpeed)/trap->maxTimes;
        
      trap->currentSpeed=trap->startSpeed+slope*trap->aTimes;
     
      if(trap->currentSpeed>trap->speedMax)
      {
        trap->currentSpeed=trap->speedMax;
      }
      
      if(trap->currentSpeed<trap->speedMin)
      {
        trap->currentSpeed=trap->speedMin;
      }
    }
    

      在这个实现中,我们出于更普遍的实用性考虑,将各种曲线的相同操作集成在一起,然后将它们差异的部分通过曲线类型属性以回调函数的方式集成。

    3、应用与验证

      我们实现了T形电机速度规划曲线的基本设计与实现。接下来,我们就是用这一调速曲线来实现一个电机调速的实例。我们定义速度规划曲线时,是及与对象的思想来实现的,所以我们先声明一条曲线对象实例。

      CurveObjectType curve; //电机调速曲线

      在声明了这一曲线对象后,我们需要对其初始化赋值才能正确的使用。大多数的属性直接根据应用对象的要求给予初始值就可以了。需要注意的是曲线类型这一属性,这将决定使用什么样的速度规划曲线。该属性为SpeedCurveType枚举,该枚举定义如下:

    /* 定义电机速度曲线类型枚举 */
    typedef enum SpeedCurve {
      CURVE_NONE=0,  //直启
      CURVE_TRAP=1,  //梯形曲线
      CURVE_SPTA=2   //S型曲线
    }SpeedCurveType;
    

      在这里我们需要将曲线类型初始化为T形速度规划曲线。具体操作如下:

      curve.curveMode=CURVE_TRAP;

      初始化完成之后就可以使用曲线对象来实现电机速度的调节了。使用也很简单,只要按一定的时间周期调用我们前面实现的MotorVelocityCurve函数就可以实现整个调速过程。具体如下:

      MotorVelocityCurve(&curve);

      在每次调速开始之前都需要设置取下的开始速度和目标速度,这样函数就会按照设定的起始速度和目标速度实现速度调整。

    4、小结

      我们实现了梯形加减速曲线,并使用其实现了具体的应用。总体来说,当我们将参数设置的合适时,所起到的效果也是非常明显的。在我们的实际使用过程中,梯形曲线对大多数的应用基本都合适。不仅是在启动和停车过程,在运行过程中如果速度设定发生改变,也会调用曲线实现加减速过程。

      梯形速度曲线虽说实现简单,在一般的应用场合也能有不错的效果,但实际上还是有一定的问题。梯形速度曲线的加速度是一个常量,这就造成加速度的变化过程并不连续,在加减速阶段和匀速运动阶段的连接部分,加速度会发生突变,而这种突变可能会对控制目标产生冲击,而有些应用场合这种冲击是不允许的。

    欢迎关注:

    展开全文
  • 基于目标距离的S型速度曲线规划 C语言实现 编译环境tubor c++3.0 算法计算由C语言实现 速度规划的数据写入到了mem_v.txt文档内, 可以使用excel将文档内的数据导入,(mem_v.txt内数据的分隔符为逗号‘,’), ...
  • 实现层距稍有差异的11楼层电梯运动S型速度曲线的生成与仿真,以及截梯的实现。四个加加速度可以独立设定,相互之间不存在耦合关系,程序运行结束后,可以用将.txt中的数据导入然后画曲线图,便可以得到S型速度图形,...
  • 速度曲线规划 ---- 梯形速度曲线

    千次阅读 2021-01-21 17:34:41
    在伺服系统以及控制系统的加减速动作中,为了让速度更加平滑,可以引入T型速度曲线规划(T-curve velocity profile),T曲线是工业界广泛采用的形式,它是一种时间最优的曲线。一般情况,曲线加速和减速的过程是对称...

    一、引言

      在伺服系统以及控制系统的加减速动作中,为了让速度更加平滑,可以引入T型速度曲线规划(T-curve velocity profile),T曲线是工业界广泛采用的形式,它是一种时间最优的曲线。一般情况,曲线加速和减速的过程是对称的,设给定速度上限为vmaxv_{max}vmax​。加速度上限为amaxa_{max}amax​,被控对象从A点运动到B点,要求生成的轨迹在这些条件下时间最优

    二、理论分析

    在整体系统高速启动,制动的状态下,可以提高整体系统的性能。每当系统完成一个动作的时候,总共包括三个过程,匀加速,匀速,匀减速,具体如下图所示:

    根据 v 是否到达Vmax,这里通常要分为两种情况来讨论;

    • 第一种:速度到达Vmax,最终速度曲线为梯形
    • 第二种:速度没有到达Vmax​,最终速度曲线为三角形

    下面仅讨论第一种情况;

    这里时间使用 t 加脚标来表示,位置量使用 p 来表示,加速度使用 a 来表示

    • 设加速时间长度为 ta​:t0 - t1​;
    • 因为加速和减速的过程是对称的,所以减速带的时间长度也为 ta:t2 - t3​;
    • 最大速度 Vmax 持续的时间长度为 tm​:t1 - t2​;

    在实际的系统中,梯形曲线通常需要设置三个参数

    1. 最大速度 Vmax;
    2. 加速度 amax​;
    3. 最终位置值 Pfinal​,下面简称为 Pf;

    所以这三个变量可以看做是已知量来处理。

    下面简单推导这三个参数之间的关系:
    设加减速区域经过的位置量为Pa,则:Pa=1/2*am*ta²  

    设最大区域经过的位置量为 Pm​,则:

    所以输出的位置量满足以下关系:

    最终可以通过 P(t) 的关系以及①②③④式编写程序可得到梯形速度曲线规划。

    三、C语言实现

    void sfun_myc_Outputs_wrapper(const real_T *u0,
    			                const real_T *u1,
    			                const real_T *u2,
    			                const real_T *t,
    		                	real_T *y0,
    		                   	real_T *y1,
    			                real_T *y2)
    {
    /* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */
    /* 此示例设置输出等于输入
          y0[0] = u0[0]; 
     对于复杂信号使用: y0[0].re = u0[0].re; 
          y0[0].im = u0[0].im;
          y1[0].re = u1[0].re;
          y1[0].im = u1[0].im;
    */
    
    /* %%%-SFUNWIZ_wrapper_Outputs_Changes_END --- EDIT HERE TO _BEGIN */
        int Am = u0[0];
        int Vm = u1[0];
        int Pf = u2[0];
        int T = t[0];
        
        int Ta = Vm/Am;
        int Tm = (Pf - Am*Ta*Ta)/Vm;
        int Tf = 2*Ta+Tm;
        printf("%d\r\n",Tf);    
        //梯形
        if(Tm>0){
            if(T <= Ta){
                y0[0] = 0.5*Am*T*T;
                y1[0] = Am*T;
                y2[0] = Am;
            }else if(T<=(Ta+Tm)){
                y0[0] = 0.5*Am*Ta*Ta + Vm*(T-Ta);
                y1[0] = Vm;
                y2[0] = 0;
            }else if(T<=(Ta+Tm+Ta)){
                y0[0] = 0.5*Am*Ta*Ta + Vm*Tm + 0.5*Am*(T-Ta-Tm)*(T-Ta-Tm);
                y1[0] = Vm-Am*(T-Ta-Tm);
                y2[0] = -Am;
            }
        }else{
        //三角形
            Ta = sqrt(Pf/Am);
            if(T<Ta){
                y0[0] = 0.5*Am*T*T;
                y1[0] = Am*T;
                y2[0] = Am;
            }else{
                y0[0] = 0.5*Am*Ta*Ta + 0.5*Am*(T-Ta)*(T-Ta);
                y1[0] = Am*Ta - Am*(T-Ta);
                y2[0] = -Am;
            }
        }
    }

    四、总结

    T曲线是工业界广泛采用的形式,在运动控制上,相比较S曲线,它算法的复杂度更低,所占用的系统资源更少,但是在恒加速的拐点会出现过冲,这里S曲线就可以减少这种情况的发生。

     

     

    展开全文
  • 主要为大家详细介绍了python读取文本绘制动态速度曲线,多图同步显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • matlab开发-扭矩速度曲线无刷电机。碳刷直流电机转矩-速度曲线
  • #资源达人分享计划#
  • 矿井提升机在煤矿生产中发挥着至关重要的作用,其运行的特性对煤矿生产工作有着重要影响。尤其是在科技日益发展的今天,对矿井提升...介绍了矿井提升机运行的S型速度曲线模型建立和实现,可以满足人们对提升机的运行要求。
  • 步进电机T型和S型速度曲线

    千次阅读 2019-09-11 08:58:11
    一种用于步进电机加速度的新算法可以实现速度曲线的实时参数化和计算。该算法可以在低端微控制器上运行,只使用简单的定点算术运算并且不使用数据表。它以恒定的加速度和减速度形成线性斜坡时间的准确近似值。 ...
  • 利用achartengine.jar,实现加速度x,y,z三轴曲线图,可自行加线。
  • 不使用bezier库;改进Bizuer,避免在重复输出控制点; 同时将等间隔的Bizuer曲线改进为等间距的Bizuer曲线,避免因为距离过短导致点过于密集;增加速度规划的功能
  • 用matlab绘制汽车的行驶加速度曲线

    千次阅读 2021-05-06 03:44:45
    用matlab绘制汽车的行驶加速度曲线n=600:10:4000;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4;m=3880;g=9.8;nmin=600;nmax=4000;G=m*g;ig=[5.56 2.769 1.644 1.00 0.793]...
  • T型速度曲线 S型速度曲线

    千次阅读 2019-04-04 16:50:44
    我又发现以前的笔记被自己保存成了私密模式,难怪一开始...0.速度曲线介绍 1.梯形速度曲线 2.S型速度曲线 0.速度曲线介绍 1.梯形速度曲线 2.S型速度曲线 参考:多自由度机器人位姿轨迹规划研究 ...
  • 步进电机速度曲线的设计与FPGA实现.pdf
  • 列车运行控制速度曲线.docx
  • 加加速度(加速度的时间变化率)——冲击、乘座舒适性、缓和曲线.pdf
  • Matlab/Admas联合仿真 输入位移时输出速度为0的解决方法 解决方法:将Adams Solver type(求解器类型)由C++改为Fortran就可以解决。
  • 疫情期间,居家隔离,时间不多,只能简单的就S速度曲线的来说,建模,写代码,然后编译,再用MATLAB来查看位置曲线、速度曲线和加速度曲线,以及加加速度曲线。 确当S型速度曲线的速度、加速度和位移公式应该从加加...
  • 基于AlphaZero的地铁列车大量速度曲线自动生成算法.docx
  • ros中rqt_plot画出速度曲线

    千次阅读 2021-02-03 09:23:15
    ros中rqt_plot画出速度曲线欢迎使用Markdown编辑器新的改变前言一、rqt_plot是什么?二、使用步骤1.引入库2.实现:总结 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,821
精华内容 48,728
关键字:

速度曲线

友情链接: kmeans.rar