|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳无人机·系列 PID 基础原理
. `% ]" O! t( k6 i: P2 j0 c7 B! q/ I/ ^) |2 F$ o/ q
( O* W6 [ z8 E' n
4 Z2 x: I2 d- y+ s( Z$ F" \! y 图1
+ L" M* e: M- u# n3 G' g, c* O- h, d
+ ]/ y8 C: q3 j8 V$ K$ M. M 一、PID 简介
$ b3 q2 m- [3 @5 H, h0 `3 J$ |4 r PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。
2 b! n" I7 ~$ T/ G9 W3 Z8 w PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。3 e4 G! H5 q1 F3 L
+ q" ]. N) _4 |# ^2 W2 Y
/ D- Z# v6 r/ R; U/ e# P, w
图2' o' i$ J& I g7 c' P- t
其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。; W" R: S9 f0 Q1 c/ `. i
二、PID 控制原理! O+ _# J& p# ?& n" d; ~
PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。; ~# {0 e8 ~! X, P `8 w
这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。9 J- ?; r3 O' g; c6 W# j" H
如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。9 a2 ~ b X/ l3 j+ i E1 g( q
为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。
7 |* v4 g% v6 k" l0 Z 也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 1104 i+ P1 ]5 s* n) y0 G1 G" g
步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。; x1 m+ y3 S3 Y
微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。3 g9 T. ^ ]1 I! x: v
也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停4 n' }" G# ]( V1 v9 E# a/ y
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。+ Z; o) V0 ?3 _: v
前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。7 Z* V d$ e7 l1 }
/ V2 g# B1 ^$ ` @4 ]
: s: G# D$ b0 G9 M7 `
( W3 l5 b7 m' o5 J5 f( Z
表1# A( l1 u# l# h3 J
' M: @1 y8 K+ q' A Q& C 三、PID 代码结构
/ `) W: Q' |7 T8 X0 g: n: l2 Y 在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
" y) G& ?( r6 \" ~+ Y1 T# L" W1 ^+ u1 g$ I+ @, A$ N- b, M- ]7 {+ R
e9 k+ {- @3 l5 I
1 m8 G4 u" N* y# l$ v 图3; F6 B$ N: }# K* u
如下图所示为高度速度环 PID 控制源码。
' U" y! c1 N1 _: ~" D. K- e3 f( C1 }7 [: k$ H! A1 Q/ O( [
Q( `! q8 H) w! T/ X9 X( I 图4
7 N0 ^& p* x! v* c0 _ 如下图所示为角度环 PID 控制源码。
5 }& Z6 E/ w1 m/ U5 E' f
! b; b% Y+ ^: \* {; W
1 U9 f9 k$ Y' ^ 图5 ' A8 _& M' q7 M6 m4 a
如下图所示为角速率环 PID 控制源码。
: T' |1 q1 f4 T" M @" u+ j
6 p. t7 z0 x; y+ `! M
. v7 q/ h7 ?4 U2 q
图6 D! y; z0 v" H; g1 R# [+ }# f
( J1 H( V. q/ n: t! K* `7 C
* u3 }8 Q$ F) E7 U5 E
; y, _3 [: l' o6 l8 w
/ X5 M# ^, d P1 s$ S1 S: \
; c; h C+ h! ?# C& A% K0 T1 G5 h( O- g; j! N/ E
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”2 w$ p' d2 _ ?% R6 A. P
8 l0 a+ s* b% o
文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 2)
4 \3 {6 d2 k3 } W( Q
: i$ ?2 U5 C, x p4 \: R
|
|