|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳无人机·系列 PID 基础原理 / P8 T. S( ?' H0 x) `
7 }/ M4 j$ V9 A
) Y- R7 F: a" ?! N" _- [0 z
- S* Q4 B# o5 |1 P. o 图1$ g6 O- h) {$ I9 K# p0 a" p p
( b, z3 L4 m, M3 j9 Z
9 \$ c- Y2 p, Y" p
一、PID 简介
, h( `* F* M+ P) D PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。
9 b0 N* {1 U6 ^! [) f5 R* ~2 B' F$ E PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。
n( Q' T1 o& ~6 |/ B8 q6 M% X
3 C* a% | q3 P+ z# F
图2" G0 `: l7 A+ }+ F% d; K
其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。
9 ]+ m, g3 }+ M3 ~ 二、PID 控制原理
. T# J3 T- H/ D# J7 d PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。
, _' m: Q* _7 I5 i 这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。
+ L3 G0 o0 m# w/ e2 `* u" y 如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。 ~$ c2 \3 C; B2 t2 x
为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。
) y8 h! @# D# M8 ^2 ^+ N 也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 1109 b6 {! u! M: R/ {
步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。# d! i+ z2 ^3 ?7 j- q& J, O& z
微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。4 P6 v \0 s2 F/ Z' N
也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停: i+ B5 O# u2 ^0 i5 q
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
; k8 x5 y5 W5 H9 Y/ R4 Y0 F; ?; K 前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。' J3 f7 o5 p2 @! d# T: x3 p4 G' ]# h
% U, ?, K* p0 V1 h D6 g
% y L L+ ?9 @4 ]
% L3 L7 P- j7 B! `$ y% j* @0 h# B
表12 m; E' B- `! [! T [# @
6 S1 {% v: [& c( z' q1 d; ~- k
三、PID 代码结构
& [+ p/ l. L' q3 ?% } 在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
$ [6 K) I( w5 V+ {
# V: z0 \6 u4 Q& `) c: d" H
& @% u# [" G6 ^ U' g- }
7 m3 q1 v v$ Q6 q1 k) }+ ]2 y! `1 T 图3. s0 m/ [% V7 M' o) W
如下图所示为高度速度环 PID 控制源码。* J: B8 P# B8 R$ |. m
5 w+ H" |1 H& @
9 k: r2 U4 m" v a- ~, P) N 图4- ~, T+ r: y. g& n" P4 K; V/ K
如下图所示为角度环 PID 控制源码。
. f3 ~' E! S4 Z+ }! R5 _, D2 C% b r7 ~1 J1 {0 I, Z" R* P2 ]
1 {8 n, l- T$ c1 h, n
图5
4 @8 g% y7 u* w, [; ` 如下图所示为角速率环 PID 控制源码。) L5 |/ k6 q1 W) ^: {, ` O5 a/ Z
" ~* q$ e. B2 J8 R
- @4 I5 Z) d% Z1 j2 Y: `
图68 b2 M& a+ F1 X Z. `+ H9 G+ z
, b% }3 @7 }( h9 F4 N; o7 D
0 ^' |: ]( l5 k+ e0 q
6 p2 |$ K3 s7 y1 x3 [2 J
0 i6 `1 G# @+ Y. L8 _/ M9 j3 g
8 q- m Z. O4 f
' x6 M: n' z+ |3 [更多完整学习资料和对应开源套件,请登陆官网:“疯壳”' K6 m5 F1 o& `' V! \' u
: X- O9 N" o1 J
文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 2)
' ~2 n! M1 v9 Z
2 E4 G0 U/ v4 x |
|