|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳无人机·系列 PID 基础原理
9 H4 e. M( O1 s, E7 q5 _$ \3 y
7 R2 k4 [: y1 n6 X' R* ~ J! @" U, R7 @: A: |& q
6 Z. v3 e2 \& n- n5 C) R 图18 B3 k- i! B! `
7 e) p7 d! v5 Q" X; y5 E* |! |# K" c
一、PID 简介
* N+ U& M3 H( @/ t% | PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。
4 Q6 I* k( M# _0 |+ `" a PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。. J0 \. m' H" G/ Q: o
M) ~" w# |! \, ~7 ?! O: d& ~
0 r8 F& \8 g X N# X" U/ ]5 x# } 图2
3 L% W1 {2 `' T9 \- F K 其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。& b4 j+ }$ G5 q" z: a: f" X9 J( o
二、PID 控制原理( A; U5 |+ o# T3 L' `& s
PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。1 P2 P& W5 ]' ^; K5 c7 ?9 K5 Z+ I9 n
这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。
9 ?1 }- n0 V& T, h0 a( d 如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。8 [' P3 f) _' @- D( R: N% q
为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。
; A3 d2 e1 [' r- I5 s# [5 r 也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 1108 n o: c! V/ f% }* g1 L; J- p d1 v
步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。. P/ m9 }) b$ j, Z5 L% V
微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。
$ B' n4 \3 v0 P/ c9 ^3 z6 j 也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停4 c; b) F1 X2 x& |% |+ ~* W
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。# v5 t5 m' m4 P
前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。
! d. D+ V/ y* Y6 |" k/ _1 S! j+ i+ ?* @
: A7 W: Y2 l* r0 U, z
: w3 n6 a0 G9 I5 P. C3 e 表1# h) z# R- ? A& a6 x2 {# Z n
/ |0 q3 A- L: J3 b 三、PID 代码结构9 I+ G# n* `7 A
在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
& O$ V: X0 z$ n3 x* K; R1 Y3 a9 b# I
3 w2 q! ~6 f/ b- V5 ~- N
6 j8 U7 a; P6 l* a! O 图3
2 ^$ Z t8 ~ l9 {2 N6 L 如下图所示为高度速度环 PID 控制源码。
0 m S' B; J- K
3 J4 @& h& [) W- }+ `
" Z: u. U) X6 g9 \6 J. F" L \
图4
8 I% f# S+ u+ q$ [ 如下图所示为角度环 PID 控制源码。
+ A. X7 P) h: j2 L" E. w& H8 i2 @% ^- X& }- m7 W, c' [& z
; x5 l& k+ p9 w* f( V2 X& o 图5 0 g! n( T# F8 a3 N. E) S
如下图所示为角速率环 PID 控制源码。) n% t9 {6 z$ c$ v4 N
# b! _4 F p; y$ ~2 d
% x9 |/ U) r( B8 u
图6" G% r" N! I5 {' l
) Z0 W. h8 w+ J# Y# ]& w' p5 h
/ b% E' ]! Z+ a+ w! C" [4 r: R' |& X4 Q9 |( i
* C9 D5 P* p, l! X$ O R- `9 x
, g! C& V2 ~$ B7 c# f( d* j% @; e6 s. q( T2 J
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”
/ t8 K, j# ?: \+ u3 S8 _' J
$ c+ |6 j- A) A0 }+ V) L7 ]# R v- s 文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 2)
; N/ y! f' z0 e" Z" I5 p) c3 t1 f- h" b2 x. z
|
|