PID控制有物理含义吗

PID控制有物理含义吗

一、背景

对于PID的初学者,经常会有疑惑,为什么位置的误差通过PID就变成了期望速度?他们之间有什么物理关系吗?还有对于无人机,为什么期望升力,又是期望加速度,又是期望油门,这个输出的量纲到底是什么?

其实,产生这个疑问的根本原因是没有区分开环控制和闭环控制。在实际控制系统中,我们经常用到开环控制和闭环控制的组合。开环控制其实就是前馈,闭环控制是反馈。接下来将以一个简单例子,说明这种这两种控制的关系。

二、关于开环与闭环控制

对于平面上一个木块,质量为 m = 0.5 k g m= 0.5 \rm kg m=0.5kg,木块的加速度 a a a 能够瞬间达到设置的值 a d a_d ad,现在希望木块达到速度 v d = 1 m / s v_d= 1 \rm m/s vd=1m/s,请问需要设置怎样的加速度 a d ( t ) a_d(t) ad(t)

2.1 开环控制

使用高中物理知识,容易想象,施加如下加速度

a d ( t ) = { 1 , t ≤ 1 0 , t = 0 a_d(t) = \begin{cases} 1, \quad t \leq 1 \\ 0, \quad t = 0 \end{cases} ad(t)={1,t10,t=0

可以使得木块在 1 s 1 \rm s 1s 时达到期望的速度 v d v_d vd。其实,这就是一个开环控制,在理想环境中可以成立,但是在实际环境中并不可行。实际的问题有:施加的加速度有点噪声,或者不能精确地达到 1 m / s 2 1 \rm m/s^2 1m/s2,或者小物块的受到微小的空气阻力,这些都将会导致 a ( t ) ≠ a d ( t ) a(t) \neq a_d(t) a(t)=ad(t),积分后速度无法刚好达到 1 m / s 1 \rm m/s 1m/s。再考虑几分钟,几小时甚至几天之后,让这 1 m / s 1 \rm m/s 1m/s 的速度维持下去几乎是不可能的事情。

2.2 闭环控制

为了解决这个问题,一个直观的思路就是来一个实时的控制,如果偏移了 v d v_d vd,就施加个反方向的加速度,也就是

a d ( t ) = K ( v d − v ) a_d(t) = K ( v_d - v) ad(t)=K(vdv)

其中, K K K 为一个正的常数。如果 v < v d v < v_d v<vd ,那么 a d > 0 a_d>0 ad>0 ,让木块加速度;如果 v > v d v > v_d v>vd ,那么 a d < 0 a_d < 0 ad<0 ,让木块减速。这样,一个比例控制就横空出世了。通过这样一个实时的反馈,我们有信心让这个木块几天后还保持着 1 m / s 1 \rm m/s 1m/s 的速度。控制器Simulink仿真如图1所示,效果如图2所示。

对比开环控制与闭环控制,开环控制是有明确的物理关系的,这个加速度大小与施加的时间符合运动学规律。但是闭环控制并没有这样的物理等式(但是具备物理关系),速度的误差乘以一个系数显然不等于加速度,况且这个系数还可以随意调节。

图1 控制器框图

图2 线性与非线性控制

再如,控制率完全可以改为

a d ( t ) = K arctan ⁡ ( v d − v ) a_d(t) = K \arctan(v_d - v) ad(t)=Karctan(vdv)

一个非线性控制就诞生了,一样能让速度达到期望值,这更显然没有确定的物理等式。控制器Simulink仿真如图1所示,效果如图2所示。

注意区分控制器与被控对象。前面说反馈控制没有明确的物理等式,但是被控对象还是有明确的等式关系的,加速度积分是速度。如果被控对象不具备明确的物理等式,例如 x x x 轴的加速度与 y y y 轴的速度,那么这个系统不可控,不可控的系统也就没有设计控制器一说了。

三、关于量纲

现在假设不能直接控制木块的加速度,而是能够直接控制施加的外力。显然

F d = m a d = 0.5 a d F_d = m a_d = 0.5 a_d Fd=mad=0.5ad

如果使用开环控制,那么

F d ( t ) = { 0.5 , t ≤ 1 0 , t = 0 F_d(t) = \begin{cases} 0.5, \quad t \leq 1 \\ 0, \quad t = 0 \end{cases} Fd(t)={0.5,t10,t=0

如果使用闭环控制

F d ( t ) = K ′ ( v d − v ) F_d(t) = K' ( v_d - v) Fd(t)=K(vdv)

此时,理论上 K ′ = 0.5 K K'=0.5 K K=0.5K

在实际工程中,我们把PID参数随意调大调小,输出是加速度还是力并不重要,这个量纲的转化已经包含在参数中了。

这就解释了为什么无人机中期望的升力为什么又变成期望油门。其实不用在意这个量纲,只要是升力和油门是一个正比例关系,把PID对应调大调小就完成了量纲变化。而名称根据业内习惯称呼即可。

上面说的量纲变化只针对线性关系(准确说只针对正比例关系)。如果两者有非线性关系,就不是直接调节PID大小这么简单了,可能需要设计对应的非线性控制率。如果有微积分关系,控制器结构都需要做出对应的调整。

四旋翼课程链接

1、基于PX4实现的四旋翼建模与控制[理论+源码+实战]:https://ebzbf.xetslk.com/s/3jYSUf
2、零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]: https://ebzbf.xet.tech/s/3OMs38
3、[硬件+代码]御风250-四旋翼无人机(基于PX4):https://ebzbf.xetslk.com/s/14S0P4

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

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

相关文章

DFS(排列数字、飞机降落、选数、自然数的拆分)

注&#xff1a;1.首先要知道退出条件 2.还原现场 典型&#xff1a;全排列 题目1&#xff1a; 代码&#xff1a; #include<bits/stdc.h> using namespace std; int a[1005],p[1005],v[1005]; int n; void dfs(int x) {//此次dfs结束条件,即搜到底 if(xn1){for(int i1;i&…

多线程代码设计模式之单例模式

目录 设计模式引入 饿汉模式 懒汉模式 单例模式总结 设计模式引入 1.1.什么是设计模式 &#xff08;1&#xff09;设计模式就是一种代码的套用模板。例如&#xff1a;一类题型的步骤分别有哪些&#xff0c;是可以直接套用的。 &#xff08;2&#xff09;像棋谱&#xff…

java对象是怎么在jvm中new出来的,在内存中查看java对象成员变量字段属性值

java对象是怎么在jvm中new出来的 查看java对象字段属性在内存中的值 java 对象 创建 流程 附上java源码 public class MiDept {private int innerFiled999;public MiDept() {System.out.println("new MiDept--------------");}public String show(int data) {Sy…

Python学习之-魔术方法

前言&#xff1a; Python 中的魔术方法&#xff08;Magic Methods&#xff09;&#xff0c;也称作特殊方法&#xff08;Special Methods&#xff09;&#xff0c;是那些被双下划线包围的方法&#xff0c;例如 init。这些方法在 Python 中有特殊的含义&#xff0c;它们并不需要…

(免费分享)基于springboot,vue问卷调查系统

用户注册、用户登录、创建调查问卷、编辑问卷问题和选型&#xff08;支持题型&#xff1a;单选、多选、单行文本、多行文本、数字、评分、日期、文本描述&#xff09;、保存和发布问卷、停止问卷调查、游客填写调查问卷&#xff08;一个IP地址只能填写一次&#xff09; 技术&a…

Adobe After Effects 2024 v24.3 (macOS, Windows) - 后期特效

Adobe After Effects 2024 v24.3 (macOS, Windows) - 后期特效 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请…

支持编写任何类型的爬虫:基于 Golang 的优雅爬虫框架 | 开源日报 No.216

gocolly/colly Stars: 21.5k License: Apache-2.0 colly 是 Golang 的优雅爬虫和爬虫框架。 该项目提供了一个清晰的接口&#xff0c;用于编写任何类型的爬虫/抓取器/蜘蛛。Colly 可以轻松从网站中提取结构化数据&#xff0c;可用于数据挖掘、数据处理或存档等各种应用。 其主…

如何把学浪app的视频保存本地

如何把学浪app里面的视频保存到本地&#xff0c;其实很简单&#xff0c;只需要用到一个工具&#xff0c;那就是小浪助手.exe 这里我已经把小浪助手.exe打包好了&#xff0c;有需要得话自己下载 链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提…

在线视频教育平台|基于Springboot的在线视频教育平台系统设计与实现(源码+数据库+文档)

在线视频教育平台目录 基于Springboot的在线视频教育平台系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 2、后台 用户功能模块 教师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&a…

如何在Python中将HTML实体代码转换为文本

在处理HTML数据时&#xff0c;有时会遇到HTML实体代码&#xff0c;这些代码是为了在HTML中表示特殊字符而使用的。例如&#xff0c;<表示小于符号(<)&#xff0c;>表示大于符号(>)&#xff0c;&表示和符号(&)等等。那么当我们在实际操作中可能会遇到下面的…

Centos7使用docker安装Jenkins(含pipeline脚本语句)

一、下载Jenkins docker pull jenkins/jenkins:lts 二、启动Jenkins docker run \-u root \--rm \-d \-p 8081:8080 \-p 50000:50000 \-v /root/docker/jenkins/var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr…

初学者也能轻松使用的原型设计工具

原型是之前所有 UX 设计工作的合并&#xff0c;是一种单一、可视、功能的产品&#xff0c;用于验证假设和测试设计。作为产品经理或设计师&#xff0c;原型设计工具是必不可少的合作伙伴。目前网站原型设计中可以使用的工具有很多&#xff0c;比如 Axure、Sketch、XD、Figma 等…

Vue2 —— 学习(一)

目录 一、了解 Vue &#xff08;一&#xff09;介绍 &#xff08;二&#xff09;Vue 特点 &#xff08;三&#xff09;Vue 网站 1.学习&#xff1a; 2.生态系统&#xff1a; 3.团队 二、搭建 Vue 开发环境 &#xff08;一&#xff09;安装与引入 Vue 1.直接引入 2.N…

微信小程序认证,备案,域名,证书,上线全流程

1.微信公众平台完成小程序认证和备案。 配置服务类目&#xff1a; 2.购买域名并完成域名实名认证和备案&#xff0c;公安备案。 3.购买https证书。 下载证书&#xff1a; 4.创建目录 mkdir -p /home/app/exam/ssl。上传证书到该目录下。 5.创建nginx配置文件: vim /usr/local…

09 Python进阶: JSON 数据解析、日期和时间

JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 Python3 中可以使用 json 模块来对 JSON 数据进行编解码&#xff0c;它包含了两个函数&#xff1a; json.dumps(): 对数据进行编码。 json.loads(): 对数据进行解码。 Python 编码为 JSON …

Hugging Face入门(一)

简介 本文主要内容&#xff1a; Hugging Face介绍环境搭建敲两个例子 Hugging Face介绍 Hugging Face 是一家法美合资公司&#xff0c;总部位于纽约市&#xff0c;成立于2016年。它由法国企业家Clment Delangue、Julien Chaumond和Thomas Wolf在纽约市创立&#xff0c;最初是…

精品丨PowerBI负载测试和容量规划

当选择Power BI作为业务报表平台时&#xff0c;如何判断许可证的选择是否符合业务需求&#xff0c;价格占了主导因素。 Power BI的定价是基于SKU和服务器内核决定的&#xff0c;但是很多IT的负责人都不确定自己公司业务具体需要多少。 不幸的是&#xff0c;Power BI的容量和预期…

HiveSQL如何生成连续日期剖析

HiveSQL如何生成连续日期剖析 情景假设&#xff1a; 有一结果表&#xff0c;表中有start_dt和end_dt两个字段&#xff0c;&#xff0c;想要根据开始和结束时间生成连续日期的多条数据&#xff0c;应该怎么做&#xff1f;直接上结果sql。&#xff08;为了便于演示和测试这里通过…

golang slice总结

目录 概述 一、什么是slice 二、slice的声明 三、slice的初始化、创建 make方式创建 创建一个包含指定长度的切片 创建一个指定长度和容量的切片 创建一个空切片 创建一个长度和容量都为 0 的切片 new方式创建 短声明初始化切片 通过一个数组来创建切片 声明一个 …

C++可变参数模板

可变参数模板 一个可变参数模板就是一个接受可变数目参数的模板函数或模板类。 可变数目的参数被称为参数包。 存在两种参数包&#xff1a; 模板参数类&#xff0c;表示零个或多个模板参数&#xff1b;函数参数包&#xff0c;表示零个或多个函数参数。 我们用一个省略号来…