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

news2024/11/27 16:45:16

梯形速度控制曲线(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曲线就变得比较通俗易懂了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建linux系统的强有力工具buildroot

目录 01. buildroot简介 1.1简介 1.2 源码下载 1.3 buildroot版本更新介绍 02. 实操演示 2.1 buildroot源码目录层级的简介 2.2 实操演示 03. 结语 01. buildroot简介 1.1简介 Buildroot是一个嵌入式Linux系统的工具链,它用于构建嵌入式设备的根文件系统。…

利用pycharm进行python代码的debug各功能解释

利用pycharm进行python代码的debug各功能解释 利用pycharm进行python代码的debug各功能解释 一 进入debug 1 左键点击代码文件目标行,确定debug节点(可一次选择多个debug节点) 2 鼠标右键,选择debug 二 各功能解读 debug调试…

第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件

信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…

鸿蒙OS应用开发之语句

在程序开发中,已经有上面的运算符和数据类型了,可以满足了大部的需求,但是这些程序还是比较简单的计算和逻辑运算,如果需要复杂的计算和逻辑处理,就需要采用复杂逻辑程序块来处理了,也就是复杂条件语句才能…

Kubernetes里的DNS;API资源对象ingress;Kubernetes调度;节点选择器NodeSelector;节点亲和性NodeAffinity

Kubernetes里的DNS K8s集群内有一个DNS服务: kubectl get svc -n kube-system |grep dns测试: 在tang3上安装bind-utils,目的是安装dig命令 yum install -y bind-utils apt install dnsutils #ubuntu上 解析外网域名 dig 10.15.0.10 www.baidu.com…

C语言笔试例题_指针专练30题(附答案解析)

C语言笔试例题_指针专练30题(附答案解析) 指针一直是C语言的灵魂所在,是掌握C语言的必经之路,收集30道C语言指针题目分享给大家,测试环境位64位ubuntu18.04环境,如有错误,恳请指出,文明讨论!&am…

OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

Android现行的Camera API2机制可以通过onImageAvailable(ImageReader reader)回调从底层获取到Jpeg、Yuv和Raw三种格式的Image,然后通过保存Image实现拍照功能,但是却并没有Api能直接在上层直接拿到实时预览的数据。 Android Camera预览的实现是上层下发…

飞天使-linux操作的一些技巧与知识点

命令行光标移动到行首行尾 ctrl a 跳到首 ctrl e 跳到尾/etc/passwd rpm 包格式 RPM(Red Hat Package Manager)是一种常用的Linux软件包管理系统,它使用特定的命名规则来标识和命名软件包。RPM包的名称格式通常遵循以下规则:…

angular route guards

它的作用 有5种guard 1.先创建一个services的typescript class 这个sivices 实现了 canActive 这个interface (接口) 返回true可以继续执行, 返回false中断执行 2. 在app.module的providers中使用这个services 3.最后在路由文件中使用 路…

一张图解释maxHistory、fileNamePattern、totalSizeCap、maxFileSize之间的关系

文中结合配置和坐标轴的关系进行案例讲解&#xff0c;文中知识针对每个案例情况进行解释&#xff0c;当然也存在其他案例&#xff0c;对比理解即可。 配置案例 <rollingPolicy class"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNam…

配电房无人值守管理系统

配电房无人值守管理系统是一种基于物联网、云计算、大数据等技术的智能化管理系统&#xff0c;依托电易云-智慧电力物联网&#xff0c;旨在实现对配电房的远程实时监控、自动化运行、故障预警和处理等功能&#xff0c;从而实现配电房的无人值守。 实时监测&#xff1a;通过安装…

MATLAB | 官方举办的动图绘制大赛 | 第四周(收官周)赛情回顾

MATHWORKS官方举办的迷你黑客大赛第三期(MATLAB Flipbook Mini Hack)圆满结束&#xff0c;虽然我的水平和很多大佬还有比较大的差距&#xff0c;但所有奖也算是拿满了&#xff1a; 专家评选前三名&#xff0c;以及投票榜前十&#xff1a;~ 每周的阶段性获奖者&#xff1a; 下面…

深入了解Python pydash库

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在数据处理和分析领域&#xff0c;Python一直是一种强大的编程语言。然而&#xff0c;在处理大规模数据集和执行复杂操作时&#xff0c;有时候需要更高效的工具。在本文中&#xff0c;我们将深入探讨pydash库&am…

Docker | 使用Dockerfile制作镜像

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容: DDocker | 使用Dockerfile制作镜像 📚个人知识库: 知识库,欢迎大家访问 1.前言 大家…

Python字典去重竟然比集合去重快速40多倍

这里写目录标题 对比代码结果图代码解析 对比代码 from glob import glob from tqdm import tqdm import time path_listglob("E:/sky_150b/任务组_20231207_2023/*.jsonl") # for two in tqdm(path_list): onepath_list[0]with open(one,"r",encoding&q…

第 9 部分 — 内存增强 Transformer 网络:数学见解

一、说明 在顺序数据处理领域&#xff0c;传统的 Transformer 架构擅长处理短期依赖性&#xff0c;但在需要大量内存和长序列上下文保留的任务中表现不佳。在这篇综合博客中&#xff0c;我打算探索一种新颖的混合方法&#xff0c;将 Transformer 与显式长期记忆模块集成在一起。…

viple模拟器使用(五):Web 2D模拟器中实现两距离局部最优迷宫算法

关于两距离局部最优迷宫算法的原理本文不再赘述&#xff0c;详情请参考&#xff1a;viple模拟器使用&#xff08;四&#xff09;&#xff0c;归纳总结为&#xff1a; 前方有路&#xff0c;则直行&#xff1b; 前方无路&#xff0c;则右转90度&#xff0c;标记右转完成&#xff…

【js】js实现多个视频连续播放:

文章目录 一、效果&#xff1a;二、实现&#xff1a;三、案例&#xff1a; 一、效果&#xff1a; 二、实现&#xff1a; <!DOCTYPE html> <html> <head><title>Video Player</title><style>#progressBar { width: 800px;height: 20px;b…

Botton进一步了解(点击事件)

点击事件和长按事件 监听器&#xff1a;专门监听控件的动作行为。只有控件发生了指定的动作&#xff0c;监听器才会触发开关区执行对应的代码逻辑。按钮控件有两种常用的监听器&#xff1a; 点击监听器&#xff1a;通过setOnClickListener方法设置。按钮被按住少于500ms时会触…