当前位置: 首页>編程日記>正文

【UAV】串级 PID 控制原理及应用

【UAV】串级 PID 控制原理及应用

文章目录

  • 简介
  • 实现过程
    • 单级 PID
    • 串级 PID
  • 三个问题
  • Ref:

简介

什么是串级PID?顾名思义就是两个串起来的PID,下面是一个双闭环的例子,外环是位置(角度)环,内环是速度(角速度)环,最终的执行器是电机,电机输出产生了速度(角速度)和位置(角度),具体框图如下图所示。

在这里插入图片描述

例如执行器是四轴飞行器时,整体控制过程如下:

  1. 我们在外环给定相应的位置高度,外环 PID 的输出就是内环 PID 的期望值;
  2. 内环 PID 的输出将产生相应的油门大小,最终飞行器会产生上升的速度;
  3. 内环反馈值为速度,控制相应的速度达到外环所需的速度期望值;
  4. 最终外环达到期望的位置。

PID 的算法控制其实是一种无系统模型的控制,可以根据参数经验去调试系统。但是实际的物理对象的模型其实早就确定好了,PID的输入量和输出量的物理意义也会因为实际的被控对象而改变。换句话说,PID的输入基本上和系统的反馈量相关,而实际的反馈量是什么,从一开始就因为系统而确定下来了。

实现过程

单级 PID

在这里插入图片描述
单级 PID 伪代码:
当前角度误差=期望角度−当前角度单环PIDP项=Kp∗当前角度误差\begin{aligned} 当前角度误差 =& 期望角度 - 当前角度 \\ 单环 \red{PID_P} 项 =& Kp * 当前角度误差 \\ \end{aligned}=PIDP=Kp

当前角度误差积分及其积分限幅
单环PIDI项=Ki∗当前角度误差积分\begin{aligned} 单环 \green{PID_I} 项 =& Ki * 当前角度误差积分 \\ \end{aligned}PIDI=Ki

当前角度的微分(原理上为当前角度误差 - 上次角度误差,实际上角度的微分就是角速度,恰好由陀螺仪给出)
单环PIDD项=Kd∗当前角度的微分(直接用陀螺仪输出)单环PID输出=单环PIDP项+单环PIDI项+单环PIDD项\begin{aligned} 单环 \blue{PID_D} 项 =& Kd * 当前角度的微分(直接用陀螺仪输出) \\ 单环 \purple{PID_{输出}} =& 单环 \red{PID_P} 项 + 单环 \green{PID_I} 项 + 单环 \blue{PID_D} 项 \\ \end{aligned}PIDD=PID=KdPIDP+PIDI+PIDD

串级 PID

在这里插入图片描述

给出串级 PID 伪代码:
当前角度误差=期望角度−当前角度外环PIDp项=外环Kp∗当前角度误差\begin{aligned} 当前角度误差 =& 期望角度 - 当前角度 \\ 外环 \red{PID_p} 项 =& 外环 Kp * 当前角度误差 \\ \end{aligned}=PIDp=Kp

当前角度误差积分及其积分限幅
外环PIDI项=外环Ki∗当前角度误差积分外环PID输出=外环PIDP项+外环PIDI项−−−这里来个分割线−−−当前角速度误差=外环PID输出−当前角度(直接用陀螺仪输出)内环PIDP项=内环Kp∗当前角速度误差\begin{aligned} 外环 \green{PID_I} 项 =& 外环 Ki * 当前角度误差积分 \\ 外环 \purple{PID_{输出}} =& 外环 \red{PID_P} 项 + 外环 \green{PID_I} 项 \\ ---&这里来个分割线---\\ 当前角速度误差 =& 外环 \purple{PID_{输出}} - 当前角度(直接用陀螺仪输出) \\ 内环 \red{PID_P} 项 =& 内环 Kp * 当前角速度误差 \\ \end{aligned}PIDI=PID==PIDP=KiPIDP+PIDI线PIDKp

当前角速度误差积分及其积分限幅
内环PIDI项=内环Ki∗当前角速度误差积分\begin{aligned} 内环 \green{PID_I} 项 =& 内环 Ki * 当前角速度误差积分 \\ \end{aligned}PIDI=Ki

当前角速度的微分(本次角速度误差 - 上次角速度误差)
内环PIDD项=内环Kd∗当前角速度的微分内环PID输出=内环PIDP项+内环PIDI项+内环PIDD项\begin{aligned} 内环 \blue{PID_D} 项 =& 内环 Kd * 当前角速度的微分 \\ 内环 \purple{PID_{输出}} =& 内环 \red{PID_P} 项 + 内环 \green{PID_I} 项 + 内环 \blue{PID_D} 项 \\ \end{aligned}PIDD=PID=KdPIDP+PIDI+PIDD

三个问题

如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?

眼看这三个问题是三个不同的问题,其实就原理上讲,他们的原因在绝大多数情况下都是由于加速度计引起的。如果飞机可以垂直起飞,说明你的加速度计放置地很水平,同时也说明你的PID控制算法参数找的不错,既然可以垂直起飞,那么飞行过程中,只要无风,四轴几乎就不会飘,自然而然就可以脱控飞行。由此可见,加速度计是个十分重要的器件。

在姿态解算中,或者说在惯性导航中,依靠的一个重要器件就是惯性器件,包括了加速度计陀螺仪

陀螺仪的特性就是高频特性好,可以测量高速的旋转运动;而加速度计的低频特性好,可以测量低速的静态加速度。无论是何种算法(互补滤波、梯度下降、甚至是Kalman滤波器),都离不开对当地重力加速度 ggg 的测量和分析。

惯性导航利用的就是静态性能好的加速度计去补偿动态性能好的陀螺仪漂移特性,得到不飘并且高速的姿态跟踪算法,因此基于惯性器件的姿态解算,加速度计是老大,它说了算。

首先,为了让四轴平稳的悬停或飞行在半空中,四个电机必须提供准确的力矩。假设力矩与电机PWM输出呈线性关系,也就是必须提供准确的4路PWM。4路PWM由遥控器输入(期望角度)、PID算法及其参数和姿态解算输出(当前角度)组成。

假设遥控器输入不变(类似脱控)、PID算法及其参数也较为准确(PID参数无需十分精确,但只要在某个合理的范围内,控制品质差不了多少),也就是姿态解算的输出必须是十分准确的,可以真实反应飞行器的实际角度,而姿态解算的结果由加速度计和陀螺仪给出,根据前述惯性导航的描述,加速度计补偿陀螺仪,因此要得到精确的姿态解算结果,务必要求加速度输出精确的重力加速度 ggg。这里仅讨论悬停飞行,因此忽略掉额外的线性加速度(事实证明,在四轴强机动飞行过程中,线性加速度必须要考虑并消除),假设加速度计输出重力加速度 ggg,这个重力加速度 ggg 必须十分“精确”。

总结来说就是
精准力矩→精准PWM→精准姿态→加速度计输出“精确”重力加速度g精准力矩 \rightarrow 精准PWM \rightarrow 精准姿态 \rightarrow 加速度计输出“精确”重力加速度 gPWM姿g

Ref:

  1. 到底什么是串级PID?
  2. 四轴飞行器上两种常用的PID算法(单环PID和串级PID)


https://www.fengoutiyan.com/post/15034.html

相关文章:

  • 什么情况用串级控制
  • 串级回路控制原理
  • 串级控制的工作原理
  • 串级控制系统控制功能
  • 串级控制pid参数怎么调节
  • 串级pid控制
  • 双环pid
  • pid超调
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機