固定翼多种PID学习总结

2023-11-01 01:41

本文主要是介绍固定翼多种PID学习总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • PID介绍
    • 位置PID
    • 增量PID
      • 位置和增量PID的关系
    • 串级PID
    • 模糊PID
    • 自适应模糊PID
  • 优化PID方法


前言

固定翼多种PID学习总结
参考如下:
参考一
参考二

PID介绍

位置PID

e(k): 用户设定的值(目标值) - 控制对象的当前的状态值

比例P : e(k)

积分I : ∑e(i) 误差的累加

微分D : e(k) - e(k-1) 本次误差-上次误差

顾名思义,位置PID是通过不同时间下位置的变化量作为误差,通过P,I,D三个比例系数进行控制。

此处重点讲下积分项I:
【1】在位置PID算法中,因为有积分项I的存在,一旦积分饱和,也就是积分累计的误差太大,当你想反向输出时,积分项却让你的系统一直正向输出(因为积分项之前一直在累计正向误差),这就是积分饱和,解决方法是积分分离,后面会讲到。
【2】因此在位置PID中多用PD控制。
【3】适用于舵机快速响应,平衡小车的直立和温控系统的控制。
对于惯性较大的对象,常常希望能加快控制速度, 此时可增加微分作用。
特点:
比例控制对于惯性较大对象,控制过程缓慢,控制品质不佳。比例微分控制可提高控制速度,对惯性较大对象,可改善控制质量,减小偏差,缩短控制时间。
理想微分作用持续时间太短, 执行器来不及响应。实际使用中,一般加以惯性延迟,称为实际微分。
PD 调节以比例调节为主,微分调节为辅,PD调节是有差调节被调量与设定值之间将产生不可避免的偏差)。
PD 调节具有提高系统稳定性、抑制过渡过程最大动态偏差的作用。
PD 调节有利于提高系统响应速度。
PD 调节抗干扰能力差,一般只能应用于被调参数 变化平稳的生产过程。
微分作用太强时,容易造成系统振荡。

增量PID

比例P : e(k)-e(k-1) 本次误差-上次误差
积分I : e(i) 误差
微分D : e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差
增量式PID根据公式可以很好地看出, 一旦确定了 KP、TI 、TD,只要使用前后三次测量值的偏差, 即可由公式求出控制增量
而得出的控制量▲u(k)对应的是近几次位置误差的增量,而不是对应与实际位置的偏差 没有误差累加

【1】算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果;
【2】计算机每次只输出控制增量,即对应执行机构位置变化量这里不理解的可以自己设一个期望值和三个渐变的实际值举例子看一下),故机器发生故障时影响范围小、不会严重影响生产过程;
【3】 手动—自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换。

位置和增量PID的关系

【1】位置式的PD控制相当于增量式PID的PI控制
位置式的D为偏差e(t),而增量式的I也为偏差e(t)
【2】位置式需引入初始阀位值,增量式不需要
【3】位置式需防积分饱和,增量式不会产生积分饱和(因为增量式没有累加关系,这个地方可能会与位置式的积分混淆。
【4】只有存在偏差时,增量式才会有输出
【5】增量式容易实现从手动到自动的切换
【6】位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;
【7】增量式存在稳态误差

串级PID

在这里插入图片描述
【这是在网上能找到可以很好表达串级PID的一张图片】
以固定翼控制为例:

角度环:*******************加速环
期望值 实际值 *************期望值 *********实际值
打舵量 欧拉角 *************角度环输出值 陀螺仪输出

使用串级PID的原因:
【个人理解】比如只用位置pid控制舵机,那么输出值就是所要转动的角度值。感觉很合理,就是你让舵机转多少度嘛,但是仔细分析下舵机转动这个过程,物体做运动(舵机转动),现有加速度,再有速度,再有角度,所以当角度为零的时候,角速度和角加速度不一定为零,这样就可能产生误差。

模糊PID

自适应模糊PID

优化PID方法

这篇关于固定翼多种PID学习总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319599

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流