PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。

PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来,看不懂没关系。

总的来说,当得到系统的输出后,将输出经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统的行为。

PID控制器是一种线性控制器,它主要根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量。

目前,人们通过科学研究获得了诸多具有优异控制效果的算法和理论,但在工程应用领域,基于经典PID的控制算法仍然是最简单、最有效的控制方案。

PID控制器是一种线性控制器,它主要根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量。

目前主流的几款开源飞控中,无一例外地都是采用PID控制算法来实现无人机的姿态和轨迹控制。

PID里的P是Proportion的首字线,是比例的意思,I是Integral的首字线,是积分的意思,D是Differential的首字母,是微分的意思。

那么PID控制器算法能解决什么问题呢?以多旋翼为例,在没有控制系统的情况下,直接用信号驱动电机带动螺旋桨旋转产生控制力,会出现动态响应太快,或者太慢,或者控制过冲或者不足的现象,多旋翼根本无法顺利完成起飞和悬停动作。为了解决这些问题,就需要在控制系统回路中加入PID控制器算法。在姿态信息和螺旋桨转速之间建立比例、积分和微分的关系,通过调节各个环节的参数大小,使多旋翼系统控制达到动态响应迅速、既不过冲、也不欠缺的现象。

下面我们简单的举个例子让大家了解一下PID的作用,我们先以一个自动驾驶的小车来举例子,为什么用小车呢而不用多旋翼来举例子呢?因为用小车举例,可以看到小车的行进轨迹,根据轨迹我们可以很直观的看到PID对控制的影响,便于理解PID的作用。

我们先讲P,比例控制。现在我们想让这个小车沿着绿线向前走,我们给P设置一个固定的值,这个值可以让离开绿线的小车向绿线的方向行驶,离的越远,方向盘打的角度越大,离的越近,方向盘打的角度越小。橙色的箭头表示小车行进的方向

比如这个小车在这个位置,我们设置了一个中等大小的P值,想要沿着绿线走,在比例控制下路径是这样的,因为小车有一定的速度,到达绿线时因为惯性的原因又向前运动了,然后再根据中等P值向回打方向盘,当到达绿线时,同样因为惯性的原因冲过了头,因为小车越接近绿线,方向盘打的越小,所以小车每经过一次绿线,它的偏差就越来越小,所以随着小车多次的往复运动,就能离绿线越来越近,理论上最终能够行驶在绿线上面。

如果我们把P值设置的比较大,它的路径是这样的,因为方向盘打的角度比较大,所以小车比中等P值的时候较早的到达绿线,但同样因为惯性的原因会多次往返绿线的两侧,也是一次比一次接近绿线,因为它方向盘角度打的比较大,所以会比中等P值往返的次数要多,最终经过多次往返,理论上它会离绿线越来越近,最终到达绿线上方。

如果我们把P值设置的比较小,也就是方向盘打的角度比较小,它的路径是这样的,小车会较晚到达绿线,因为惯性会往返绿线两侧,但是因为方向盘角度小,小车可以在较少的往复次数下接近绿线。

所以我们对比一下设置这三种P值的结果,在小车与绿线相同距离的情况下,P值越大,小车的反应越快,P值越小,小车的反应越慢,所以这三个小车第一次到达绿线的时间是不一样的。虽然P值大能够较快的到达绿线,但是反应比较剧烈,总是因为过快冲过了头。相反P值小的反应比较平缓,但是它反应太慢,我们有时候接受不了。

什么样的P值是合理的呢,就是设置后,小车的反应不是很剧烈,反应时间你也能够接受,那这就是一个相对合理的P值。

那有没有一种办法让它反应再快一点,反应又不那么剧烈呢,那就要用到接下来我们要讲的微分控制了。

我们为了不让这个小车冲过头,我们再给它加一个力,这个力就是D,让这个力来起一个作用,就是让小车越接近绿线的时候,接近绿线的速度越慢,小车越远离绿线的时候,接近绿线的速度相对较快,这个接近绿线的速度不是小车前进的速度,是小车与绿线平行线之间的相对速度。这个D大家可以理解为小车靠近绿线的一个阻力。

假设我们设置了一个相对合理的P值,在P值不变的情况下,微分控制中D值的变化会有怎样的结果。比如我们设置了一个比较合适的D值,微分控制(D)让小车在靠近绿线时,接近绿线的速度比较慢,这样比例控制(P)就可以很轻松的让小车到达绿线上方行驶。

如果D值过大,也就是小车靠近绿线的阻力过大,这样会让小车需要比较长的时间才能到达绿线上方。

如果D值设置的过小,也就是小车靠近绿线的阻力过小,那微分控制(D)就不会对比例控制产生大的影响,所以虽然小车能够较快到达绿线,但小车需要多调整几次,在绿线的两侧往复几次后才能到达绿线上方行驶。

那这样看来比例控制(P)和微分控制(D)的配合,貌似已经很完美了。为什么还要有积分控制(I)呢?

设置合适的P值和D值,可以让小车很好的沿着绿线一直走,但路上不是很平坦,会有些坑坑包包,或者其他的一些干扰,路况不好就会让小车的行进路线发生偏移,比如小车在这里遇到了坑坑包包,它的行进路线 就会变成这样,稍微偏离了绿线一点,因为微分控制(D)让小车离绿线越近时,靠近绿线的速度越慢,比例控制(P)让小车在接近绿线时,方向盘又打的比较小,所以小车要走一段路才回到绿线上面。

有没有办法让它更快回到绿线上面呢,所以我们再给它加一个力,这个力就是I,积分控制。我们让积分控制起这样的作用:如果P和D的调节不是很理想的话,就让I帮他俩一把,向P的方向上加一个力,这样可以让小车更快回到目的路径。

设置了I以后,I会根据误差和误差经历的时间进行积分,然后决定施加给目标方向的力的大小,就能够让小车回到目标轨迹上。

一个合适的I值,可以让小车偏离轨迹后,I可以在合适的时间给P一个合适的力,让小车快速的回到绿线上面;

如果I值过大,积分控制(I)调整的力就会比较大,它在帮P的时候会用力过猛,会让小车冲过绿线,下次帮忙的时候还是用力过猛,P表示很无奈,毕竟I也是好心,经过几次调整后,小车终于回到绿线上面,但我们看小车的轨迹线产生了一定的振荡;

如果I值过小,积分控制(I)调整的力就会比较小,就像有一个手无缚鸡之力的柔弱小鲜肉一样,帮不上太大的忙,所以小车回到正确轨迹的时间就会比较长。

说完了PID控制对小车的影响,下面我们再说说PID控制对多旋翼的影响。比如这架多旋翼想要作的是保持机身的水平平稳。

我们先从P开始,如果P值设置的过大,哪怕机身有那么一丁点倾斜,飞行器都会用稍大一些的力去调整,结果用力过猛,又继续向回调整,这样飞行器就会频繁的调整自己的水平状态,导至机身产生振动。

上图中指向左侧的箭头写的是过大不是过人

如果P值设置的过小,飞行器的水平调整就会显得力不从心,比如空气中的微风让飞行器发生了倾斜,飞行器向回调整的力比较小,所以需要长一点的时间才能调平,这样让我们觉得它反应有点慢。

比如我们经过多次测试设置了一个比较合适的P值,可以让飞行器有一个我们能接受的反应时间,但稍有一点过冲,会有一些震荡,接下来再设置D值,让D值消除震荡,如果D值设置过大,会让飞行器恢复平衡时间过长,反应变慢,

如果设置了一个过小的D值,会导致效果不明显,飞行器还是会有震荡。

比如我们又设置了一个合适的D值,可以让飞行器反应不是很慢,也不会有明显的震荡。接下来我们再设置一下I值。

这里的I我们可以这么理解,I根据飞行器的反应时间,适当的帮忙,如果飞行器反应慢了,他就会帮一下,能让它的反应快一点。但是如果值设置的过大,这个帮忙可能会用力过猛,导致过冲。

如果I值设置过小,它的帮忙就没有太大的作用,还是不会让飞行器反应更快。所以设置一个合适的I值需要多次的测试,让它的帮忙起作用,又不会用力过猛。

有些人怕麻烦就不设置I值了,其实也没有太大的影响,只不过离完美还差那么一点。

PID的设置是一个非常复杂的过程,对于一般的使用者来说是非常难的。所以有些厂商也想出了一些办法。

比如3DR的开源飞控APM和PIXHWAK,咱们看它的调参软件中,PID部分有这么多要调的地方,对于一般的用户来说是比较有难度的,所以它加了一个自动调参的功能,就是这个AutoTune[‘ɔ:toʊtən],可以把遥控器上的一个开关设置成自动调参,找一片开阔地让飞行器起飞,然后把遥控器上的自动调参开关打开,飞控就开始自己控制飞行器进行飞行测试,然后根据测试情况自动设置一个比较合适的PID参数。

有些厂商作的就更简单了,直接在调参软件里加了一个感度的配置,这个感度大家可以理解为敏感度 ,数值越大,敏感度越高,不同的轴距都有不同的推荐感度设置。

左面的这个是大疆NAZA飞控的调参软件,调参软件说明书里就有一个不同轴距的推荐感度值,右面的拓攻更简单,直接选择轴距,就能自动设置推荐的感度值。

这些厂商的调参软件里一般都会有姿态感度和基本感度,或者叫稳定感度。姿态感度是指飞行器对遥控指令的敏感程度,基本感度或稳定感度是指飞行器对于外界干扰反应的敏感程度。这样就比PID理解起来要简单的多了。

飞行控制PID算法——无人机飞控相关推荐

  1. 什么是pid控制算法_飞行控制PID算法——无人机飞控

    PID控制应该算是应用非常广泛的控制算法了.小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制.这里我们从原理上来理解PID控制. PID(proportion in ...

  2. stm32直流电机控制—PID算法篇

    stm32直流电机控制-PID算法篇 一.常用的控制算法 1.控制系统的基本结构: 2.常用控制算法:位式控制 ①二位式控制算法 ②.具有回差的二位式控制算法 ③三位式控制算法 ④小结 二.PID控制 ...

  3. 无人机飞控三大算法汇总

    无人机飞控三大算法:捷联式惯性导航系统.卡尔曼滤波算法.飞行控制PID算法. 一.捷联式惯性导航系统 说到导航,不得不说GPS,他是接受卫星发送的信号计算出自身位置的,但是当GPS设备上方被遮挡后,G ...

  4. 无人机飞控技术最详细解读

    已剪辑自: https://zhuanlan.zhihu.com/p/64519280 [导读]被称作是"飞行器的大脑"的飞控到底是什么? 以前,搞无人机的十个人有八个是航空.气动 ...

  5. 某无人机飞控系统的原理、组成及各传感器的作用

    总结飞控系统:飞行姿态控制和导航系统. 以前,搞无人机的十个人有八个是航空.气动.机械出身,更多考虑的是如何让飞机稳定飞起来.飞得更快.飞得更高.如今,随着芯片.人工智能.大数据技术的发展,无人机开始 ...

  6. 无人机飞控--科普贴

    详细解析无人机飞控技术 原贴地址: http://www.elecfans.com/d/719442.html 飞控是什么? 飞行控制系统(Flight control system)简称飞控,可以看 ...

  7. 【openMV与机器视觉】四旋翼飞行控制背景下的PID控制与摄像头算法简介

    文章目录 声明 1.四旋翼飞行控制简介 2.飞行控制算法 2.1.接收机PWM生成 2.2.PID算法 位置PID 速度PID 3.摄像头算法 3.1.图像处理 3.2.霍夫曼变换 3.3.巡线算法 ...

  8. 四旋翼无人机飞控系统设计(PID控制算法)

    PID控制算法   PID控制器是一个结构简单并且成熟稳定的控制器,在工业上应用广泛.包括比例(Proportion).积分(Integral).微分(Differential)三个控制元素,三者是对 ...

  9. 【电机应用控制】——直流有刷电机驱动板/编码器介绍PID算法实操代码思路

    目录 前言 一.电机简介 二.直流有刷电机 1.基本知识 2.直流有刷驱动板 3.编码器介绍 三.PID算法 四.实操思路 1.单环控制 2.双环控制 3.三环控制 拓:闭环死区 总结 前言 声明:学 ...

  10. 无人机飞控开发平台培训理论课程——飞行原理

    四旋翼无人机组成 机架属于承载系统 电池.螺旋桨和电机控制属于动力系统 姿态采集.姿态解算和姿态控制属于飞控 操控系统(遥控器)如果是自动巡航或者自动寻迹则操控系统非必须 课程体系 动力原理--螺旋桨 ...

最新文章

  1. 翻译:MariaDB RENAME TABLE语句
  2. JavaScript 面向对象 (prototype 原型模式)
  3. 重磅!GitHub 全部源代码被泄露?
  4. 情人节——微信朋友圈浓浓爱意的9张拼图(HTML版本)
  5. 探讨程序员如何学习你不熟悉的技术,以及用什么样的方法去学习.
  6. POJ 3268 Silver Cow Party (最短路径)
  7. 深入理解java虚拟机_深入理解Java类加载
  8. 华为Mate 40系列预热海报颠覆传闻:这个设计手机圈独树一帜
  9. mac ---- 安装nginx
  10. vos3000下载java_昆石VOS3000_2.1.4.0完整安装包及安装脚本
  11. 如何确认IAR软件有没有激活
  12. 2寸的照片长宽各是多少_2寸照片的高和宽是多少像素?
  13. 大数据应用场景和大数据职业发展需要掌握的技术技能构成
  14. 视频贴片广告有哪些形式,视频贴片广告展示形式如何?
  15. Flink Forward Asia Hackathon (2021) 回顾
  16. 一个电商网站设计方案
  17. dlang,不必要串插件的类型提升.
  18. Android 实现图片倒影效果
  19. 互联网时代创业推荐三本书
  20. 配置文件工具类【ConfigTools】

热门文章

  1. gmsk的matlab仿真,MSKGMSK 导师传给我的关于MSK和GMSK的一些相关MATLAB仿真源码 - 下载 - 搜珍网...
  2. 基础篇必看,史上最全的iOS开发教程集锦,没有之一
  3. mysql字典_mysql常用字典表(完整版)
  4. android删除无用资源文件,android删除无用资源文件的python脚本
  5. 大学计算机基础知识课本,大学计算机基础 教材简介
  6. android_root后的玩机:magisk模块root隐藏/lsposedxposed框架的使用/MIUI小窗多开
  7. python画图颜色种类_Python Matplotlib Boxplot颜色
  8. ESS 控制台之访问控制篇
  9. IDEA的类注释模板
  10. Python爬取网易云音乐评论