|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳·无人机·系列 PID 基础原理
5 T+ E5 u/ v- Q: W4 }( e! G/ {3 j* u- L/ t# ^( f8 B) Y* l
& L4 V) W; p% q$ h: G
0 O& _: L( X& Z
, B$ D8 b- V3 h- o( c. e3 u1 m
图1
, b) Y/ o. _9 K! j& ]4 P$ E4 @; ], s H; v/ n: H6 P
: q* E. v4 z" f3 R4 ? 一、PID 简介
$ Q) V0 R1 {( I2 e) ] PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。 B% n" ?4 d" G5 V- x% U* X% k
PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。 q2 d) Z n+ \# n: @6 c# H8 h
, v. X; j, G+ T! E( y
* @* N l- l5 {* L2 W& Q6 \" m
图2, g! U: ?9 a* ~1 m( f7 N
其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。! v7 h- ^9 x2 q: ^$ P
二、PID 控制原理
) H# s" d3 K# m+ ? PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。
: q( I6 h3 h% E1 S 这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。' ~& h/ R/ r) C
如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。- d% a L \6 M B3 ?. ~0 K% y
为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。% Q2 g' h5 t/ ~: i
也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 1100 }- M5 A) o. x* E
步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。
8 e3 A. o( |' |$ R 微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。
7 {+ P' t5 X' j' M l& Z) F 也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停$ {' L p o2 x) C
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
; g+ Q$ @- H1 Y9 X& F* ? 前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。
% Q: M- W4 m. g- F3 K4 X) C1 k7 n4 \ Y# I, w! d1 R: v+ C* V/ `
* S2 ^3 K& S. W; u) C9 P* p9 P 表18 ?) M' ^; I5 O6 ?) b2 f1 d
; X4 p; s' h8 S- A$ v( d& [" j' T
三、PID 代码结构5 c. |8 U. y2 d/ T
在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
) Y' e( H+ o9 u- F+ Q4 N: ]" n4 W" A" P
1 s, G0 `4 P* E8 i {. ?
8 O7 r" {* i* c9 ?: c& z7 q 图3
8 K* l" c. N% v. r! |: h2 E1 p$ G 如下图所示为高度速度环 PID 控制源码。
$ o5 n" x4 C9 P! S0 j7 H* O
' G0 k& S& ^4 I1 m
0 M2 y3 m: W/ k T" }! k+ F
图4$ ^. }8 a2 s) }: {# b8 @
如下图所示为角度环 PID 控制源码。
% ]+ O8 Y3 k/ Q3 G. y9 R' {$ c/ V
) W; B5 ~/ y" h1 ^+ b
+ m0 |) D0 j( d& k) K* y2 k
图5
! W3 G* g, N5 @/ c- G 如下图所示为角速率环 PID 控制源码。# x7 b' m5 z" b) X
3 X: z- j3 ?7 \) h3 W
" f$ a; m8 S# v* R 图6 w6 {& r4 q% R; j- X
% A! x# J" X7 }' _0 L1 ^
1 ?8 N8 `8 _' U, H3 S) q9 T( @
" ]6 ~5 q+ l. g$ Y5 T 文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 0)
, n5 [/ q) [+ F( }# Y$ C) }; u0 g; u! d/ }# L4 u
|
|