为什么需要串级PID控制(结合智能小车,四轴飞行器来解释)
先说四轴飞行器
四轴飞行器中串级PID控制是由角度环与角速度环一起控制的
可以这么简单的理解:
角度环可以可以保证飞机按期望的角度飞行,单环控制时,具有很好的自稳性。但是打舵的时候跟随性就不够完美。可能会出现滞后,失衡的现象。
角速度环可以使飞机尽可能的快速的达到期望值。(将角度环的期望值与角速度环的测量值进行PID控制;角速度是由陀螺仪测出来的,测量值一般不容易受到干扰并且角速度变化的也是比较快的,加快了反应速度)
为什么要引入角速度环?
我们发现,虽然可以用PWM使得电机的转速与输入值成正比,但是飞行器螺旋桨的转速与升力是不成正比关系的。而引入角速度环就是为了改善这个问题
这一点在小一点的四轴的起飞过程中会很好的体现出来(这里想说的意思是小飞机重量较轻,操纵起来更加的灵敏),由于飞行器螺旋桨的转速与升力是不成正比关系的,就拿起飞的过程来说:我们遥控器的油门摇杆的增量与飞行器升力是不成正比关系,所以我们想让飞机停留在一个比较稳定的高度是比较难的。
会出现要油门低时飞不起来,油门高一些会逐渐升高。我们把情况考虑的复杂一些:即使有这么一点,可以使飞行器悬停,随着飞行器电池电压逐渐降低,电机转速下降,飞机也会逐渐下降。那么翻滚,俯仰的控制就更不方便了
回到原题,有了这个角速度闭环,就可以让飞行姿态快速的跟踪期望姿态,从而对升力起到一定的控制;至于有多快,还是要看电机模型和PID参数,但是一定比之前开环控制的效果要好。也就是实时的根据期望姿态迅速调整电机输出。
我们通俗一点来讲,为什么这里理解起来比较困难,其实是角度与角速度控制不明白。
那么我们现在用类比的方法来解释:
以小车到达指定地点为例
小车从A点到B点的过程,调用单级的PID控制,误差:e=x2-x0。
误差e经过PID算法得到输出小车给定速度v
小车给定速度v输入到电机后,对电机输出的转速v^进行积分,获得一段路程,即小车的当前位置x1;
此时的误差为e=x2-x1(注意不再是e=x2-x0了)
选取一组合适的PID参数,我们就可以很好的实现这个任务。根据不同的要求,我们可以找到不同的PID参数以实现快速收敛控制,或者无超调控制。
但是在斜坡的路面,这样单级PID控制的表现就不是那么好了。
原因是在对电机转速v^进行积分时存在误差
v恒等于v^吗?换言之,我叫小车电机以v的速度运行,他会立刻响应并保持在这一速度吗?答案显然否定的
我们实际供给电机的是电压,一定的电压对应一定的转速v,然而电机转速v不是关于电压的单值函数,电机转速v受到很多条件的影响,鉴于电机模型复杂且对于不同种类的电机模型也不尽相似,我们只讨论其中的另一个主要变量:负载转矩。当小车启动制动,走上坡道都会造成负载转矩的变化,从而进一步影响电机转速v。
要解决这个问题就需要对电机Motors环节做一个转速闭环控制:就是将电机转速v^与给定的小车速度v进行PID控制
有了这个闭环,就可以让电机的实际转速v'快速的跟踪给定速度v,至于有多快,还是要看电机模型和PID参数,但是一定比之前开环控制的效果要好。这样就可以改善这个问题(注意是改善,不是解决!)
类比的话,这里小车的位置环相当于无人机的角度环;
而,小车之后又在电机上的转速闭环控制相当于无人机的角速度环。都是使电机的输入理论值与实际的作用效果之间进行误差反馈控制(简而言之:对于小车就是输入电机转速与轮上实际速度之间不断PID控制;对于四轴飞行器而言就是输入电机转速与实际姿态之间不断PID控制)
这样是不是就可以理解无人机的角速度控制环了
最终实现内环先稳定,外环后稳定的效果
参考博文【串级PID】浅谈串级PID作用及意义——快速理解串级PID结构优势(附图)_ReadAir的博客-CSDN博客_串级pid
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!