|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳·无人机·系列 PID 基础原理 6 \% s* G/ j/ `# o6 e% g+ Z
& ?! [; _ w W, V
, e. l2 Q! g* i' M
2 Y3 W$ y0 V8 U( G ^9 h
3 x- a# Y* }+ z0 B6 I 图1
+ z5 @% @$ W/ I S
& y7 Y' R% l e4 q% _ h( j9 r9 d+ R6 j* ?8 X- W: R- b. X
一、PID 简介
1 `" ~9 N8 L5 u6 J+ a q PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。
5 q' q! ]) P( ?% `% P( r2 f; _. o/ s PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。+ V7 E# {& e2 W* ?4 ?2 `1 O
u1 f |+ v4 {' v0 p4 t8 Q4 y
5 ]' ?' S: K" n. ^+ N- [
图2
- o$ E( h9 f8 c( p# m) ^ 其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。
6 H8 X& ~/ R. F8 L4 t* j 二、PID 控制原理0 i$ l5 Y9 W% A1 H, f4 E2 f
PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。5 g5 }2 J% p8 f: }
这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。* [* L- r, t( _ N. e( Y1 L
如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。
2 w. E- V! t q8 X* S 为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。
5 I8 y! ~. Q$ b* p* }" i" w2 A 也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 110
- i# _+ V" F8 b' A8 f* v$ d; C 步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。# Z6 r }( A2 \& s5 s
微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。
3 ^0 X9 a$ K! e' Q0 X2 t 也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停# B% G& j4 P" J
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
* e: k+ l. R( { K. X9 o6 t, d 前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。4 i ]; y; L( ?/ b: I
1 C, Z/ ]4 O: O$ a
; b/ l# F7 w* ?. v/ r; E S! ^ 表1
) C# b; J5 G9 h0 K2 m9 r/ A9 M/ p: T; Z" V A* T( q7 }
三、PID 代码结构4 O c9 R1 L9 q1 h1 K# b: n6 @
在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
' Q- Z+ D2 f% l. t+ A: j/ r( j! |' A1 k: e' U. ~
' P' B1 Q! J. s" a
& H, S, c( r2 L: l0 q
图3
; _' g* q7 H; l9 ^* d7 F 如下图所示为高度速度环 PID 控制源码。
% M) L' a# _( ?$ H3 r( M
; P7 O$ l, @0 E
% X) V- L; ~& |: @" X 图4
+ R" B" i3 |) d! z4 t 如下图所示为角度环 PID 控制源码。
. r% R5 }( A$ U \ M6 q W0 e" Y. t; `" Y; A6 c! R/ }' c
) D% G+ l/ m: P
图5
2 A$ h( o' y* r/ l 如下图所示为角速率环 PID 控制源码。
" A% @$ B' |3 E7 n
' f' ]+ Z+ \" E1 s4 s$ v5 }
7 |9 B% g; d4 j' |# P' ~$ @6 D9 @ 图66 f: q3 Y: v% l* G
) t" `. p2 O% [7 ?+ k
^( J& s" f2 w; S
& P" @. [2 C/ Q+ Y! |3 F) y3 q
文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 0)
' O2 t7 M& M& ~0 h3 u+ S
! K1 R: m4 T& |& n S" N; U% T |
|