ROS学习笔记(14)拉普拉斯变换和PID

0.前提

近些时间在对睿抗的ROS仿真赛进行小组安排,对小组成员进行了一些安排,也要求他们以本次比赛写下自己的比赛经历博客,他们的培训由我来安排和负责,因此我得加吧油,起码保证我的进度得快过他们,才能安排好本次比赛。好了扯了这么多,进入重点,拉普拉斯变换和PID调节都是能在本科学习期间的自动控制原理当中看到,甚至自控是很多人考研时感到最头疼的科目之一,同时也是为了能更好的调节vesc。

1.拉普拉斯变换

1.拉氏变换概念

公式墙(1)知乎有一个讲的挺好的

在自控中有个弹簧-增块-阻尼器系统,其微分方程如下图:

我简单解释一下这个方程,用牛二可知F=fv(t)+ky(t)+ma(t),根据大学物理知识可知v(t)={y(t)}'a(t)={y(t)}'',而y上面的点代表的就是求导。在时域当中求解这个微分方程是相当麻烦的,而拉普拉斯变换给我们提供了一个将时域系统转变为频域系统的方式。

在复变函数(如果没有复变基础请自己去寻找书籍学习一下)中有一个章节来单独对拉普拉斯变换进行了讲解,不过好像在上复变的时候老师都没讲这一章内容,反倒在自控中老师单独花了时间来讲,在上图的拉普拉斯变换的定义中我们可以看到拉普拉斯积分公式:

反演公式就是拉氏反变换

F(s)=\int_{0}^{+\infty}f(t)e^{-st}dt

\mathfrak{L}(f)=\int_{0}^{\infty}f(t)e^{-st}dt=F(s)

在公式中我们将时域 t 转 变为频域 s。而 f(t) 是 F(t) 的拉氏逆变换,记为:

f(t)=\mathfrak{L}^{-1}[F(s)]

2.常见的拉氏变换

1.阶跃函数

f(t)=\begin{cases} 1&t\geq 0\\ 0& t< 0 \end{cases}     

 \mathfrak{L}[1(t)]=\int_{0}^{\infty}1\cdot e^{-st}dt=\frac{-1}{s}[e^{-st}]_{0}^{\infty}=\frac{1}{s}

2.指数函数

f(t)=e^{at}

\mathfrak{L}[f(t)]=\int_{0}^{\infty}e^{at}\cdot e^{-st}dt=\int_{0}^{\infty}e^{-(s-a)t}dt=\frac{-1}{s-a}[e^{-(s-a)t}]_{0}^{\infty}=\frac{1}{s-a}

3.正弦函数

f(t)=\begin{cases} 0 & \ t<0\\ sin\omega t &\ t\geq 0 \end{cases}

\mathfrak{L}[f(t)]=\int_{0}^{\infty}sin\omega t\cdot e^{-st}dt=\frac{\omega}{s^{2}+\omega ^{2}}

其余的常见拉氏变换我用图片放出来,其实记住上面的定义式\mathfrak{L}(f)=\int_{0}^{\infty}f(t)e^{-st}dt=F(s)都可以自己计算出来,唯一值得注意的就是复变里面的 -1=j^{2} :

3.拉氏变换几个重要性质

在拉氏变换中有几个重要的性质,为了方便我同样只放图片:

2.PID

自控当中有介绍到PID(比例-积分-微分控制器),利用系统误差、误差的微分和积分信号构成控制规律,PID控制器采用不太组合可实现PD,PI,PID这3种矫正方式。

图1

1.P控制(比例控制)和P控制器

1.P控制

这里的P取之英文单词Porportional的首字母译为比例的。

在ros小车循迹中的转向和转向偏差要成比例这就是P比例控制:

图2

小车循迹时,我们希望它的速度是平行于道路的,且始终位于道路中心,但因为误差的原因我们无法保证按照理想运行,因此我们按照比例控制来矫正。

1.核心思想:

e(t)=r(t)-x(t),理论值减实际值得的误差。

误差越大,用于矫正误差的输入就越大。

2.公式:

u(t)=K_{p}*e(t)

2.P控制器

1.核心思想:

图3

当前小车的运动状态如上图蓝线为道路中间线,当我们保证小车速度不变,我们需要的转向角为\theta,我们的目的是要保证小车运动在道路中间y=0\theta =0也就是L*sin(\theta )=0

再结合图2我们就可以得到e(t)=-(y+L*sin(\theta ))

注意:小车的运动方向会影响y\theta的取值,受坐标系构建的影响。

1.左转:y> 0:小车在道路右边——>左转:\theta <0

  L*sin(\theta ):小车左转L米——>左转:\theta <0

2.右转:y< 0:小车在道路左边——>右转:\theta >0

  L*sin(\theta ):小车右转L米——>右转:\theta >0

2.转向角度:

\theta _{p}=K*e(t)=K_{p}*(-y-L*sin(\theta ))   

小车应用P控制器的运动轨迹:

图4

2.D控制(微分控制) 与PD控制器

1.D控制

这里的D取之英文单词Derivativel的首字母译为微分的。

观看图4可知道仅引入P控制时,我们的小车会在中心线附近摆动,为了出现这种超调现象,我们需要更快的做出调整反应。这时我们引入了D控制,D控制具有超前矫正的作用。

1.核心思想:

D控制预测反馈误差信号e(t)的变化趋势(预测基于误差的导数增益)。这里的e(t)和P控制里面的e(t)是同一个。

2.公式:

u(t)=K_{p}*\frac{d}{dt}e(t)

2.PD控制器

1.核心思想

D控制和P控制共同组成了PD控制。 

2.转向角度

\theta _{p}=K_{p}*e(t)+K_{p}*\frac{d}{dt}e(t)=K_{p}*(-y-L*sin(\theta ))+K_{p}*\frac{d}{dt}(-y-L*sin(\theta ))

小车PD控制运动轨迹:

  图5    

3.I控制(积分控制)和PID控制器

1.I控制

这里的I取之英文单词Integral的首字母译为积分的。I控制具有滞后和稳定作用。

1.核心思想:

稳态误差随时间积累,I控制提高系统稳定精度。

2.公式:

u(t)=K_{i}\int_{0}^{t}e(t)dt ,这里的e(t)和P控制里面的e(t)是同一个。

2.PID控制器

1.核心思想:

I控制加入PD控制,会得到PID控制

2.转向角度:

\theta _{pi}=K_{p}*e(t)+K_{i}\int_{0}^{t}e(t)dt+K_{p}*\frac{d}{dt}e(t)

误差牺牲e(t)=-(y+L*sin(\theta ))

小车PID控制运动轨迹(红色为PID控制器的运动轨迹,紫色是PD控制器的运动轨迹):

图6

4.结尾

好了本篇博客到此就基本结束了,其实本来还应该有个PI控制器的,但我们的核心是PID控制器嘛,所以能得出PID控制器就好了,现在回头看PID的图1,会不会有新的思考?

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

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

相关文章

图像处理技术与应用(三)

图像处理技术与应用入门 图像信息 切片 from skimage import io # 使用 io.imread() 函数来读取图像 img io.imread(cc.jpg) ] roi img[100:5000, 500:1780] # 显示ROI区域 io.imshow(roi) io.show() # 显示图像 红色文字段定义感兴趣的区域&#xff08;ROI&#xff09…

ArcGIS基础:便捷分享图层包和地图包

1、分享图层包&#xff1a; 首先&#xff0c;选中要分享的数据&#xff0c;右键创建图层包&#xff0c;修改保存路径。 找到项目描述那一栏&#xff0c;将摘要、标签、描述都填写分享图层包的相关内容。 一切设置好之后&#xff0c;点击右上角的【分析】按钮。 点击分析之后…

【PyTorch与深度学习】2、PyTorch张量的运算API(上)

课程地址 最近做实验发现自己还是基础框架上掌握得不好&#xff0c;于是开始重学一遍PyTorch框架&#xff0c;这个是课程笔记&#xff0c;这个课还是讲的简略&#xff0c;我半小时的课听了一个半小时。 1. 张量 1.1 张量操作 &#xff08;1&#xff09;chunk&#xff1a;将一…

蓝桥杯ctf2024 部分wp

数据分析 1. packet 密码破解 1. cc 逆向分析 1. 欢乐时光 XXTEA #include<stdio.h> #include<stdint.h> #define DELTA 0x9e3779b9 #define MX (((z>>5^y<<2)(y>>3^z<<4))^((sum^y)(key[(p&3)^e]^z))) void btea(unsigned int* v…

Linux软件包管理器——yum

文章目录 1.什么是软件包1.1安装与删除命令1.2注意事项1.3查看软件包1.3.1注意事项&#xff1a; 2.关于rzsz3.有趣的Linux下的指令 -sl 1.什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一…

335GB,台北地区倾斜摄影OSGB数据V0.2版介绍!

前几天发布了台北地区倾斜摄影OSGB数据第一个版本(139GB,台北倾斜摄影OSGB数据V0.1版),虽然数据还是一个半成品&#xff0c;完全没想到热度很高&#xff0c;很多读者对这份数据都有比较浓厚的兴趣&#xff0c;在这里首先感谢各位读者的大力支持与鼓励&#xff0c;给了我持续更新…

单路双电源三态控制的电平转换总线收发器AiP74LVC1T45

AiP74LVC1T45框图 AiP74LVC1T45引脚定义 AiP74LVC1T45丝印 概述 AiP74LVCH1T45是一个双电源带三态控制的总线收发器&#xff0c;具有3状态输出&#xff0c;可实现双向电平转换。它们具有两个1位输入输出端口(A和B)&#xff0c;一个方向控制输入(DIR)和双电源引脚(VCC(A)和VCC(…

C语言 | Leetcode C语言题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; #define max(a, b) (((a) > (b)) ? (a) : (b))bool canJump(int* nums, int numsSize){int cover 0;int i;// 只可能获取cover范围中的步数&#xff0c;所以i<coverfor(i 0; i < cover; i) {// 更新cover为从i出发能到达的最大…

idea No versioned directories to update were found

idea如何配置svn以及svn安装时需要注意什么 下载地址&#xff1a;https://112-28-188-82.pd1.123pan.cn:30443/download-cdn.123pan.cn/batch-download/123-820/3ec9445a/1626635-0/3ec9445a25ba365a23fc433ce0c16f34?v5&t1714358478&s171435847804276f7d9249382ba512…

Linux:浏览器访问网站的基本流程(优先级从先到后)

浏览器访问网站的基本流程&#xff08;优先级从先到后&#xff09; 首先查找浏览器是否存在该网站的访问缓存 其次查找本机的域名解析服务器 windows&#xff1a;C:\Windows\System32\drivers\etc\hostsLinux&#xff1a;/etc/hosts 使用外部的域名解析服务器解析&#xff…

LMDeploy 量化部署 LLM-VLM 实践 学习笔记

视频链接 https://www.bilibili.com/video/BV1tr421x75B/?vd_sourcea1ce254b4a97f9f687a83e661793cb2c 什么是模型部署 部署指的是已经开发好的大模型投入使用&#xff0c;要把模型部署到服务器或者移动端里&#xff0c;如何在有限的资源里加载大模型&#xff1f; 比如你好不…

网络安全 SQLmap-tamper的使用

目录 使用SQLmap Tamper脚本 1. 选择合适的Tamper脚本 2. 在命令行中使用Tamper脚本 3. 组合使用Tamper脚本 4. 注意和考虑 黑客零基础入门学习路线&规划 网络安全学习路线&学习资源 SQLmap是一款强大的自动化SQL注入和数据库取证工具。它用于检测和利用SQL注入漏…

计算机网络之传输层TCP\UDP协议

UDP协议 用户数据报协议UDP概述 UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能 UDP的主要特点&#xff1a; UDP是无连接的&#xff0c;减少开销和发送数据之前的时延 UDP使用最大努力交付&#xff0c;即不保证可靠交付&#xff0c;可靠性由U…

关于google search console工具提交sitemap.xml无法抓取的问题解决办法

其实这个问题很好解决。 第一种情况&#xff1a;利用工具为我们的网站自动生成静态的sitemap.xml文件。这种可以检查下是否完整&#xff0c;然后上传到根目录下去&#xff0c;再去google search console提交我们的网站地图。 第二种情况&#xff1a;同样利用工具自动生成动态s…

AI图书推荐:AI驱动增长—ChatGPT和Bard 用于企业流程自动化

这本书《AI驱动增长—ChatGPT和Bard 用于企业流程自动化》&#xff08;ChatGPT and Bard for Business Automation: Achieving AI-Driven Growth&#xff09;由Tom Taulli撰写&#xff0c;主要探讨了ChatGPT和Bard两种人工智能技术在商业自动化中的应用&#xff0c;以及如何通过…

逆向案例三十——webpack登录某游戏

网址&#xff1a;aHR0cHM6Ly93d3cuZ205OS5jb20v 步骤&#xff1a; 进行抓包分析&#xff0c;找到登录接口&#xff0c;发现密码有加密 跟栈分析&#xff0c;从第三个栈进入&#xff0c;打上断点&#xff0c;再次点击登录 明显找到password,它由o赋值&#xff0c;o由a.encode(…

格瑞威特 | 邀您参加2024全国水科技大会暨技术装备成果展览会

—— 展位号&#xff1a;A13 —— 企业介绍 北京格瑞威特环保设备有限公司成立于2009年&#xff0c;是专业从事设计、研发、销售智能加药计量泵、在线水质分析仪表、便携式水质分析仪表、流量计、液位计、阀门、搅拌机、烟气报警仪、加药装置等各类水处理设备及配件的OEM供服…

ZISUOJ 高级语言程序设计实训-基础C(部分题)

说明&#xff1a; 有几个题是不会讲的&#xff0c;我只能保证大家拿保底分。 题目列表&#xff1a; 问题 A: 求平均数1 思路&#xff1a; 送分题…… 参考题解&#xff1a; #include <iostream> #include <iomanip> using std::cin; using std::cout;int main(…

leetcode-包含min函数的栈-93

题目要求 题目思路 1.设计上两个栈&#xff0c;第一个栈s1里面正常存储插入进来的数据&#xff0c;s2里面只存储s1里面最小的那个数据。 2.对于push函数&#xff0c;所有新来的value都需要在s1中插入&#xff0c;s2中&#xff0c;如果s2为空&#xff0c;那么也直接插入&#x…

动手学大模型LLM应用开发之个人知识库助手项目

目录 一、前言二、项目架构三、项目搭建运行四、RAG过程五、参考资料 一、前言 本项目由datawhale成员开发&#xff0c;主要实现了基于 Datawhale 的现有项目 README 的知识问答&#xff0c;使用户可以快速了解 Datawhale 现有项目情况。 项目地址 二、项目架构 ① LLM 层主要…