|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
COCOFLY教程 ——疯壳无人机·系列 PID 基础原理
. x9 g( q1 _+ K. e1 u; G( z/ d; v4 k. H$ C2 r
1 ]9 G% p; n$ E, }5 T
; ~- o0 W0 d( J3 K7 @6 d
图1
B/ _: I) g w. {8 T3 j$ W
2 K+ k. z6 c ~, n! ?$ q0 k4 W k: K3 |8 i$ x7 m; i8 T
一、PID 简介
& J" L/ T# a, C3 V PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主要是为了解决自动控制系统的快、稳、准的问题。
& I8 W4 E) [$ O; ^# z( s! `1 I PID 控制中的 P 指的是 Proportion(比例),即对输入的偏差乘以一个系数; I 指的是 Integral(积分),即对输入偏差进行积分运算;而 D 指的是 Derivative(微分),即对输入偏差进行微分运算。通过比例、积分、微分结合适当的反馈就可以形成一套稳定的闭环调节系统。如下图所示为 COCOFLY 的 PID 控制器的结构图。7 U0 c% f8 t- O* R3 Y7 D8 r
# J( P) ? G9 n. P
+ m3 g1 F$ o$ \9 W5 p
图2
+ D6 F. [% O; U; J 其中期望角度(高度)由遥控器提供,角度环(高度环)以及角速度环(高速度环)由 PID 代码处理,STM32 输出四路 PWM 到无人机的电机控制端口, IMU(惯性测量单元)以及飞行姿态提供反馈值。: x0 G1 g4 w: `
二、PID 控制原理
: ]- m' v# [7 I5 u0 |# H PID 控制的过程,其实是不断纠正偏差的过程,其中的偏差=当前被控对象的反馈值-设定的期望值。9 \( L9 N, U! T5 I4 _, M
这里举一个比较简单又经典的 PID 控制的例子,比如需要控制一个机器人以 PID 的方式向前行走 110 步,然后停下来。此时这个 110 步则是设定的期望值。
6 d9 t" `' M. h& S+ \' ^" g; V. P 如果按照 P 比例控制,也就是控制机器人按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108 步,再走一次的话就超过 110 步了,所以就不走了。从这里可得知 P 比例控制是一种最简单的控制方式,控制器的输出与输入误差信号成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只能走到 108,或者超过 108 步,无论怎样都走不到 110。
3 g3 j- `( G% n) @2 w: { 为了消除稳态误差,在控制器中必须引入“积分项 I”。积分项对误差的影响取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小, 积分项也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差进一步减小,直到等于 0。即在“积分项 I”控制中,控制器的输出与输入误差信号成正比关系,且比例+积分(PI)控制器可以使系统在进入稳态后无稳态误差。3 ~/ L9 w: N; m. \- G
也就是说,如果按照 PI(比例、积分)控制的方式,则是控制机器人按照一定的步伐走到 112 步然后回头接着走,走到 108 步位置时,然后又回头向 110' a' |- g0 u+ u7 s5 f) z& F. V6 ~
步位置走。在 110 位置处来回晃荡几次,最后停在 110 步的位置。3 w# ]% r" W8 f% Q3 S, H. x
微分项,主要用于预判误差变化的趋势从而作出对应的改变。在自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例 P”项往往是不够的, 比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 P+微分 D(PD)控制器能改善系统在调节过程中的动态特性。
7 a+ y" L- v( R& ] 也就是说,如果按照 PD 比例、微分控制的方式,则为控制机器人按照一定的步伐走到一百零几步后,再慢慢地走向 110 步的位置靠近,如果最后能精确停: D6 F! ]: H% [4 E% m* C+ h9 b
在 110 步的位置,就是无静差控制;如果停在 110 步附近(如 109 步或 111 步位置),就是有静差控制。由此得知在微分控制 D 中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
& \8 D) H0 w7 Y& z9 C 前面说到 PID 是为了解决自动控制系统中的快、稳、准的问题的。其中那么他们之间的关系以及对应调节参数是什么呢?如下表所示。
6 ?# p5 b# {. r# x; o
' s* p- T, N. i7 R1 e+ P* j! ?
5 O# }2 S$ v- b- A9 e
+ ^, V4 m0 W r" \ 表1* m5 {/ C# C% w" o
4 N6 S+ d- h% M
三、PID 代码结构
- K, n7 B5 {+ u# F6 v0 |; L 在飞控系统中 PID 是极为重要的一环,在 COCOFLY 飞控系统中也多处应用到了 PID 主要集中在 AltCtrl.c、Ctrl.c 中。如下图所示为高度环 PID 控制源码。
0 S, s# X# G7 m7 `% y2 ]% V7 V" Q8 p- q% n4 e( Z8 Q
- x6 P7 H( `/ G) W% R- H7 r0 v7 \
4 s1 I e; [: K/ J 图3$ G1 X0 D; a/ d
如下图所示为高度速度环 PID 控制源码。) I# A0 E/ o3 o" i% Y
3 K: |& q! y, o2 x- {( W6 {
$ U# k- f0 d3 I W" ^. {5 N A- m 图4
4 C2 @( a' J$ c* f, h 如下图所示为角度环 PID 控制源码。
' m0 Q p- S X! s/ y4 k( Z
0 x8 ^5 w/ ?& D
6 C5 `% L2 j( }5 e r F
图5
9 F% z' j* G" Y- Y3 {- B+ q; h6 ` 如下图所示为角速率环 PID 控制源码。
: g* Z# f' J1 H+ v8 M
+ `5 o; G8 R# R7 @" a0 b% }! f
' b5 B$ R7 z$ {) S7 p6 ^. @1 C( n
图6
0 c! j6 n$ Y3 U: n! R
( N! l0 Z$ m- l l8 L4 B# g b: z# K& J
/ L# t" d- o R& P2 X8 s
$ f- M9 Y8 m8 e4 W
# M, q( v7 l+ `3 Q; C
! V/ N4 i( \/ x, a+ b5 i
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”
2 Q* Y- B- T2 v. W' g8 v+ c& k' n& R; c) t/ o) }) j1 D
文件下载请点击:
【10】PID基础原理.pdf
(764.78 KB, 下载次数: 2)
( [/ K- E3 N3 Y: g) z. k
4 x+ t% C$ a- ~ |
|