T曲线速度控制与S曲线速度控制

梯形速度控制曲线(T曲线)

所谓梯形速度曲线,也称为直线加减速或T型加减速。 其算法十分简易,规划周期耗时短,有利于缩减系统的连续运行时间,从而提高系统的运动控制速度,实施起来比较易,应用广泛。 但它采用的是匀加减速,使得在加减速阶段的起点和终点处加速度存在突变,加速度曲线不连续,使其加速、匀速和减速过程不能实现平滑过渡,会有顿挫感。
速度曲线示意图:
在这里插入图片描述
因此,在工业中虽然梯形控制曲线被广泛应用,但是对于振动要求较高的场合却是不适合采用该控制模式。

S型速度控制曲线

S型速度曲线控制算法是工业控制领域另一种常用的加减速控制策略,S型曲线很好的克服了T型曲线加速度不连续的问题。S型曲线实际就是实现一个加速度的T型变化过程,具体来说就是加速度增加、加速度恒定、将速度减小的过程。在整个速度调节规程中,加速度是连续变化的,而反映到速度的变化就是一条平滑的S型曲线。如下图所示:
在这里插入图片描述通俗的来讲,S型曲线会将整个速度变化过程进行拆解,通过控制加速度的变化来对速度进行一系列的平滑处理。对于一个长控制周期而言使用S曲线后的速度可以被平滑如下:
在这里插入图片描述
可以看到相对于T曲线的控制,S曲线得到的速度曲线会更加平滑。

两种算法的控制差异

从控制被控量的角度来说,T型控制曲线的被控量是其速度,加速度恒定的情况下根据需要的速度与期望的速度之间按照加速度进行增加或减少。而S型曲线的被控量其实是加加速度(jerk),在S型曲线中加速度是会随着加速周期逐步上升的,初始起步时加速度很小,因此速度变化量很小,不会引起很大的抖动,起步后加速度逐渐增加,则速度变化量随之增加,可以减少速度变化周期,提高实时性,然后到达目标速度前开始下降加速度直到加速度逐渐降到零,此时速度变化量也会比较平稳。

从控制周期的角度来说,T曲线更多考虑的是一个周期的变化,相对而言更加简单。但是S型速度控制曲线考虑的不再是一个控制周期的变化量而是一段周期的控制变化量,举个简单的例子:速度从零启动加到某个特定值,对于T曲线只要考虑一个周期内加速度能否到达这个值,不能则以当前速度+加速度*控制周期,能则直接给到期望值。但是对于S型曲线,不仅需要考虑一个周期内能否加到期望值,还需要考虑到加速度提前下降的问题。比如当前速度0.6,当前加速度0.3,加加速度0.1,期望速度1.0。则在一个周期内无法到达期望速度。但同时如果以当前加速度进行速度调节,则下一周期速度会变为0.9,加速度为0.2,此时速度会存在超调,所以加速度需要提前下降。因此该过程需要考虑到未来多个周期的控制情况。

S速度曲线的简单原理

关于S曲线的控制原理可以参考《自动驾驶】运动规划丨速度规划丨T型/S型速度曲线》一文,这里做简单介绍。

在传统的T曲线控制中,只有加速度的概念,速度根据固定加速度变化:
在这里插入图片描述
而它的加速度是阶跃变化的:
在这里插入图片描述
因此,当系统的加速度从一个值变成另一个值的时候,速度的惯性会使人产生顿挫感。

而相对于T曲线,S曲线增加了控制量加加速度(Jerk),系统的加速度此时变成一个变化量,因此当速度达到期望值时,加速度同时会下降到一个非常低的值,由于速度变化量减小,因此不会产生很大的速度惯性,使系统看起来更平滑:
在这里插入图片描述加速度:
在这里插入图片描述
这里对于S曲线中加速度的处理方法不一,上述图例中采用的一阶加速度。除此之外也有采用二阶加速度的,例如《一文带你学明白神秘的电机S曲线柔性调速算法》;也有指数型的,例如《电机速度曲线规划2:S形速度曲线设计与实现》。但其实不管哪种方法,S型曲线的本质都是控制加速度,使被控物体到达目标速度时加速度降低到一个很小的值以达到一个稳定过渡的效果,同时中间过程又可以使加速度达到一个很大的值使系统具有较好的跟随性,只要理解了这一点基本S曲线就变得比较通俗易懂了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/234173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四元数,欧拉角,旋转矩阵,旋转向量

四元数,旋转矩阵,旋转向量,欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度,默认旋转正向为逆坐标轴逆…

Unity DOTS中的baking(一) Baker简介

Unity DOTS中的baking(一) Baker简介 baking是DOTS ECS工作流的一环,大概的意思就是将原先Editor下的GameObject数据,全部转换为Entity数据的过程。baking是一个不可逆的过程,原先的GameObject在运行时不复存在&#x…

VSCode如何设置Vue前端的debug调试

vscode在调试vue.代码时,如何进行debug? 1.安装Chrome Debug插件。 2.在launch.json中,将url修改成你前端项目的路径: 1 {2 // Use IntelliSense to learn about possible attributes.3 // Hover to view descriptions of existing att…

腾讯再推互动微短剧,游戏的风吹向了短剧

当你看剧时不再拥有上帝视角,处在女主的位置上,你又会做出什么样的选择? 腾讯最新上线的短剧《摩玉玄奇2》在原版之外还推出了互动版,就给出了这样一个新玩法。 《摩玉玄奇2》原版是普通的后宫职场微短剧,互动版则是…

Linux——缓冲区与实现C库的fopen,fwrite,fclose

目录 一.缓冲区 1缓冲区的概念 2.缓冲区存在的意义 3.缓冲区刷新策略 4.什么是刷新? C语言的缓冲区在哪里? ​编辑 仿写C库里的fopen,fclose,fwrite。 mystdio.h mystdio.c main.c(向文件中写入20次msg) 一.缓冲区 1…

protobuf安装教程v21.11

Linux: 1.安装依赖库 下载ProtoBuf前⼀定要安装依赖库:autoconf automake libtool curl make g unzip如未安装,安装命令如下: Ubuntu用户: sudo apt-get install autoconf automake libtool curl make g unzip -y CentOS用户&…

盘点251个Python源码Python爱好者不容错过

盘点251个Python源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 项目名称 链接:https://pan.baidu.com/s/1PikCn61NfHXmEzQiny8kfw?pwd6666 提取码:6666 dailyfreshpython-Dj…

MongoDB中的sort()排序方法、aggregate()聚合方法和索引

本文主要介绍MongoDB中的sort()排序方法、aggregate()聚合方法和索引。 目录 MongoDB的sort()排序方法MongoDB的aggregate()聚合方法MongoDB的索引 MongoDB的sort()排序方法 在MongoDB中,sort()方法是用来对查询结果进行排序的。sort()方法可以用于在查询语句中对指…

[NAND Flash] 1.1 闪存(NAND Flash) 学习指南

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 ​ 回首 漠然回首,从事存储芯片行业已多年,这些年宝贵的青春都献给了闪存。 我刚入行的时候,也是萌新一个,彷佛大学学的都没有和这相…

docker安装部署

1.在线安装Docker 安装Docker依赖库: yum install -y yum-utils device-mapper-persistent-data lvm2添加yum来源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安装Docker: yum install doc…

[香橙派]orange pi zero 3 烧录Ubuntu系统镜像——无需HDMI数据线安装

一、前言 本文我们将介绍如何使用orange pi zero 3 安装Ubuntu系统,本文相关步骤均参考自开发手册。 二、实施准备 根据开发手册中所提到的,我们应该拥有如下配件: 1.orange pi zero 3 开发板 2.TF 卡——最小 8GB 容量的 class10 级或以上的高速闪迪卡。…

@德人合科技 | 数据透明加密防泄密系统\文件文档加密\设计图纸加密|源代码加密防泄密软件系统,——防止内部办公终端核心文件数据/资料外泄!

一款专业的数据防泄密管理系统,它采用了多种加密模式,包括透明加密、半透明加密和落地加密等,可以有效地保护企业的核心数据安全。 PC端访问地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee …

c++新经典模板与泛型编程:标准库容器中元素类型的萃取

通过容器(数组)类型萃取元素类型 用GetEleType类模板进行常规实现 #include <iostream>#include <vector> #include <list>// 泛化版本 template<typename T> struct GetEleType;// 特化版本 template<typename T> struct GetEleType<std::v…

【rabbitMQ】模拟work queue,实现单个队列绑定多个消费者

上一篇&#xff1a; springboot整合rabbitMQ模拟简单收发消息 https://blog.csdn.net/m0_67930426/article/details/134904766?spm1001.2014.3001.5502 在这篇文章的基础上进行操作 基本思路&#xff1a; 1.在rabbitMQ控制台创建一个新的队列 2.在publisher服务中定义一个…

基于JAVA+SpringBoot+Vue的前后端分离的医院信息智能化HIS系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着科技的不断发展&a…

2023.12.3 关于 Spring Boot 拦截器 和 过滤器

目录 引言 Spring 拦截器实现 实例理解 Spring 过滤器实现 实例理解 拦截器和过滤器的区别 出身不同 触发时机不同 底层实现不同 支持的项目类型不同 使用场景不同 引言 原生 Spring AOP 实现统一拦截有两个难点难点一&#xff1a;定义拦截规则表达式 难点二&#…

四. 基于环视Camera的BEV感知算法-DETR3D

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章——基于环视Cam…

arm平台编译so文件回顾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、几个点二、回顾过程 1.上来就执行Makefile2.编译第三方开源库.a文件 2.1 build.sh脚本2.2 Makefile3.最终编译三、其它知识点总结 前言 提示&#xff1a;这…

ES6中的继承,String类型方法的拓展

ES6中的继承&#xff1a; 主要是依赖extends关键字来实现继承&#xff0c;使用了extends实现继承不一定要constructor和super&#xff0c;因为没有的话会默认产生并调用它们。 在实现继承时&#xff0c;如果子类中有constructor函数&#xff0c;必须得在constructor中调用一下s…

我对迁移学习的一点理解——领域适应(系列3)

文章目录 1. 领域适应&#xff08;Domain Adaptation&#xff09;的基本概念2.领域适应&#xff08;Domain Adaptation&#xff09;的目标3.领域适应&#xff08;Domain Adaptation&#xff09;的实现方法4.领域适应&#xff08;Domain Adaptation&#xff09;的可以解决的问题…