PID算法学习

PID算法介绍

在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。
在这里插入图片描述
位置式 PID 算法
在这里插入图片描述

  • e(k): 用户设定的值(目标值) - 控制对象的当前的状态值
  • 比例P : e(k)
  • 积分I : ∑e(i) 误差的累加
  • 微分D : e(k) - e(k-1) 这次误差-上次误差

P算法讲解

在这里插入图片描述
P算法的意思是比例,如果我们只通过调节比例来达到我们预期的输出结果,这种就是P算法。例如当小车处于起点时,距离终点是100米。此时当前状态(u)是0米,误差(e)是100M。假设Kp为0.1,通过P公式计算出来的是速度,那么当前速度就是10M/s,此时执行器给小车一个10M/s的速度,在很小的时间内执行完后反馈回当前的状态(即当前距离终点的距离)。如此循环反复,不断更新小车的速度,不断获取最新的小车状态,那么等小车到终点的时候,速度也恰好为0M/s。

PI算法讲解

I算法的意思是每次误差的累加,如果我们在原有的P算法基础上添加上I算法,那么我们得到的就是PI算法。PI算法是加P的计算结果以及I的计算结果累加,最后输入到执行器中。例如当无人机位于地面上时,如果想要飞到高于地面100米时悬停,我们需要为它提供对应的升力(升力在这里可以用电机的转速来代替)。在本例子中,当前状态(u)是0米,误差(e)是100米。假设Kp为0.1,P公式算出是10rpm,I公式算出是100rpm,一共得到110rpm。将转速交给执行器,无人机的电机转速改变,飞行高度上上升,更新当前飞行高度。如此循环反复利用公式计算,最终无人机也能正确悬停在对应的高度。

PID算法讲解

D算法的意思是俩次误差的差值乘Kd,这是一个负数。这是为了避免在PI算法的基础上,通过公式得到了一个很大的值,导致初始值过大而带来的不稳定性。通过D算法我们可以根据需要适当的减小初始值的大小。根据需要,我们调节三个可变参数的值,最终实现我们需要的一个稳定的状态。

PID优化方法

抗积分饱和

如果系统总是存在统一的方向偏差,就可能无限累加而进行饱和,极大影响系统性能
所谓积分饱和就是指系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而扩大,从而导致控制器输出不断增大超出正常范围进入饱和区。当系统出现反响的偏差时,需要首先从饱和区退出,而不能对反向的偏差进行快速的响应。

  • 积分分离或者称为去积分算法,其基本思路是当被控量与设定值偏差较大时,取消积分作用;当被控量接近给定值时,引入积分控制,以消除静差,提高精度。
  • 积分限幅,将积分累计量限制上下限,避免积分累计量超过限制值;
  • 微分先行,微分控制作用是与偏差的变化速度成正比的,不论设定值或测量值的突然变化,微分控制作用十分猛烈。因此,采用通常的PD或PID控制算法时,设定值的调整必须比较和缓。为了不受这种限制,可以只对测量值起微分作用,而测量值一般是不会突然变化的

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

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

相关文章

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符,盘符下可以存放目录与文件,而在Ubantu中没有盘符的概念,只有目录结构。实际上不同的目录可能挂载在不同的分区之下,如果想要查看当前目录位于磁盘的哪个分区…

【java数据结构-优先级队列向下调整Topk问题,堆的常用的接口详解】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

递归的层序遍历

最近遇到一个业务需求:一颗依赖树,其实就是一颗递归树,如何一层一层的数据放在一起,可以近似理解为二叉树的层序遍历。 业务理解为递归树的层序遍历 代码示例: public class RecursionErgodic {public static void…

使用Kimi的一些体会

1、https://kimi.cn 这个回答问题还比较专业,感觉比以前chatgpt要好一些 2、Moonshot AI - 开放平台 可以通过注册账号,或微信扫描就可以登录进去 通过postman可以体会一下功能 2.1 POST https://api.moonshot.cn/v1/chat/completions 2.2 授权选择下…

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

docker部署通义千问-7B-Chat的openai-api环境

服务器环境: 显卡驱动:Driver Version: 530.30.02 CUDA版本:CUDA Version: 12.1 显卡:NVIDIA GeForce RTX 3090共4张 注意:最好把显卡驱动升级到530,CUDA版本之前使用11.7有问题。 一、下载模型文件 …

环境配置——Windows平台配置VScode运行环境为远程服务器或虚拟机

1. 远程机需要先安装SSH服务,命令如下 sudo apt install openssh-server 2. 安装好后需要开启SSH服务: sudo service sshd start 3. 查看SSH服务是否有被开启: sudo systemctl status sshd.service 4. 本地Windows需要生成密钥将公钥放…

茴香豆:搭建你的RAG智能助理-笔记三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆:搭建你的 RAG 智能助理】课程 课程视频:https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档:Tutorial/huixiangdou/readme.md at camp2 InternLM/Tutorial GitHub 该课程&…

贪吃蛇撞墙功能的实现 和自动行走刷新地图 -- 第三十天

1.撞墙 1.1最初的头和尾指针要置为空,不然是野指针 1.2 在增加和删除节点后,判断是否撞墙,撞墙则初始话蛇 1.3在撞墙后初始化蛇,如果头不为空就撞墙,得定义临时指针指向头,释放头节点 2.自动刷新地图 2.1…

解决问题:TypeError:unsupported operand type(s) for -: ‘float‘ and ‘decimal.Decimal‘

文章目录 一、现象二、解决方案 一、现象 用Pandas 处理数据的时候,想得到增长率,没想到翻车了? import pandas as pddf pd.read_csv(data.csv)df[增长率] ((df[今年] - df[去年]) / (df[今年]))执行一下语句发现报错 TypeError&#xf…

探秘MySQL主从复制的多种实现方式

欢迎来到我的博客,代码的世界里,每一行都是一个故事 探秘MySQL主从复制的多种实现方式 前言基于语句的复制原理实现方法应用场景及优缺点应用场景优点缺点 基于行的复制原理实现方法优势和适用性优势适用性 基于混合模式的复制混合模式复制的工作原理混合…

【WEB前端2024】开源元宇宙:乔布斯3D纪念馆-第12课-摆件跳转网页

【WEB前端2024】开源元宇宙:乔布斯3D纪念馆-第12课-摆件跳转网页 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…