四旋翼飞行器之PID参数整定

本文原创,作者zzw,转载请注明,版权属于燕骏团队zzw

概述

十几天前,开始和队友一起整自己的四旋翼飞行器。我们买了套飞行器的配件机架使用的是穿越机qv250机架。主控电路板,是自己用AD设计的电路图,然后制作的盘存表电路板,使用的是STM32F103RCT6芯片。上面集成mpu6050、hmc5883l、bmp180、超声波、光流、激光传感器等等。这个飞行器,我们自认为是将主控STM32RCT6芯片的功能,发挥到了极致。

我想做的是一架可以自动飞行的飞行器,学习并理解一些高级算法

辛辛苦苦十来天,整机模块驱动基本完成,姿态解算及PID控制等算法基本搞定。今天(2017.1.3)我和队友在实验室,整定了一天的PID参数,总结了一些规律以及一些经验。记录在博客下面,自己忘记的时候回来看看,也分享给大家和大家一起讨论学习。(若有错误,请点出,谢谢~)

**一篇博客写了好几天,最近几天忙着考试,今天抽空把这篇博客写完吧(2017.1.6)

关于我们这个四旋翼后续的详细资料以及详细制作过程,详细代码,寒假期间,我将陆续发布到自己的博客。我和队友最终的意愿是开源我们自己的飞控源码以及硬件电路。

单级PID整定

这里写图片描述 
e(t)是偏差。 
下面说说今天整定单级PID的一些感悟:(心塞塞啊~),一开始使用的是串级PID,分内环和外环,但是串级PID整定毫无头绪,现象不是特别明显(后续文章我将 分享一下我所理解的串级PID算法)。 
无奈串级PID整定无头绪,又写程序改为单级PID进行整定调试找感觉。。。

下面说说单级PID:输入的是目标角度,输出是PWM增减量。 
这里先默认大家会写单级PID算法,基础知识先自己脑补。 
下面先看看wiki上介绍的PID控制器:(原文链接如下) 
https://en.wikipedia.org/wiki/PID_controller

wiki内容

这里 盗来wiki的几幅图: 
第一幅图:PID各个参数动图大家自己点击链接看吧

https://en.wikipedia.org/wiki/PID_controller#/media/File:PID_Compensation_Animated.gif

Kp比例项参数

第二幅图: 
这里写图片描述 
如图:当Ki,Kd保持为常量时,改变Kp。图上在t = 1s时,给系统一个阶跃信号,然后调节Kp比例项的值。图中红线为Kp = 0.5时候的响应曲线,绿线为Kp = 1.1时候的响应曲线,紫线为Kp = 1.6时的响应曲线。

上升时间 指:这里我们直接认为是 从一开始0% 到第一次达到目标值的时间100%。

从图 上分析: 
红线:当Kp比例项较小时,响应无超调无震荡,上升时间较长,但是稳定时间很长,延时时间长。 
绿线:当Kp比例项增大时,响应有较小超调,上升时间明显缩短,稳定时间缩短。 
紫线:当Kp比例项足够大时,响应曲线超调较大,震荡很多次,上升时间继续缩短,但是稳定时间却增长了。 
如果继续增大Kp值呢??这里图上没有反应,但是我们可以推测一下:上升时间继续减小,超调继续增大,震荡次数增大,最终系统失控发散,系统性能恶化。

所以调PID参数时一定要小心,Kp值不能过大。

Ki积分项参数

第三幅图:KI的影响:

这里写图片描述

大家看图:可能很多人都知道,Ki积分项是用来消除静差的。那么什么是静差??我个人的理解是,如果目标值是 10,经过P或者PD调节之后,系统稳定值为9.5,那么与10是有一定差距,这个就属于静差,这个静差的调节就需要积分项来进行。

继续分析图: 
绿线为基准线:Kp = 1 Ki = 1 Kd = 1 
红线:Ki = 0.5 其他一致 
蓝线:Ki = 2 其他一致

可以看出Ki的特性和Kp类似,和Kp是“正”作用。Ki较大反而会引起系统震荡

Kd微分项参数

下面让我们来看看 Kd:微分项: 
这里写图片描述

这张图中绿线为基准线:(Kp = 1 Ki = 1) 
红线Kd = 0.5较小时,上升时间减小,但是比 Kd = 1.0时超调大一点,上升时间短一点。 
黑线Kd = 2,和Kd = 1时做比较,发现超调量竟然比Kd = 1时大了,上升时间也长了。

所以可以大致总结出:Kd在一定范围内可以起到抑制超调量的作用,但是会延长系统上升时间。

我们自己整定经验总结

下面简单说一下,我们那天调PID参数的情况: 
我们自己利用丝杠 做了一个单轴调节器。(只能一个轴动)使用起来很方便,如下图: 
这里写图片描述

第一个经验

将各个轴分开来,单独调各个轴的PID

第二个经验

先单独调节Kp,Ki = 0和Kd = 0 
调节方法是1,2,4,8,16等2倍数,且每次观察并用手感觉实际情况。(下面是以我们自己的飞行器举例的,先整定的是Y轴的PID各项参数) 
比如 Kp 从1调到4 ,发现飞行器 有左右震荡调节趋势,但是软趴趴的,调节不过去。也就是说Kp比例项小了,力度不够不能调节到稳定位置。于是将Kp加大到8,发现飞行器很有力度了,左右震荡幅度很大。当飞行器手动向左偏得时候,有一个很大的力度让飞行器向右偏,在中间位置左右震荡幅度较大,需要很长时间 才能基本稳定。 
于是我们感觉自己的Kp有点大,于是减小Kp到6.0。发现力道稍微小了点,但是最后还是能基本在中间平衡位置 基本稳定。

就这样感觉Kp差不多了,通过上面分析,我们知道加入Kp虽然能使系统快速达到目标值,但是会使系统超调震荡: 
如下图: 
这里写图片描述 
在目标值上下震荡,也就是我们的飞行器在平衡位置的上下震荡。振幅按理说是减小的。

第三个经验

接着整定Kd微分项参数 
这个时候就应该整定 微分项Kd了,这个参数大小范围实际还是看自己的PID算法实际是怎么写的。不过呢,Kd项参数的作用是一种阻尼作用,阻碍系统变化的。通过微分跟踪上一次状态(我是这么理解的,不知道对不对),调这个参数时,我们也是按照1、2、4、8、16、32这规律 再2分法整定的。比如:8和16之间取 12,然后确定是在12和16还是8和12直接进行二分法寻优。

我们中间做了个实验,只整定Kd其他项为0,目标值为0平衡位置。发现:在一定范围之内,随着Kd的增大,一种阻碍飞行器姿态变化的力逐渐增大。一个字概括为:“硬”。也就是说微分项通过微分,跟踪上一次的状态进行预估下一次的状态,阻碍系统的变化,是一个阻尼作用。

上面说到Kp比例项震荡,需要加入Kd进行调节,加入合适的Kd后,系统能较快稳定。效果还是不错的。

注意点:就我们个人经验,发现加入Kd后,可能之前的Kp项系数也要微调。也就是说各个参数不是死的,不是一个调整好就不需要动了的。而且就我们测试发现好几组PID参数都是基本可以的。

第四个经验

单轴、最后调节Ki,目标值为0度,然后用jlink仿真器进仿真,看看基本稳定后解算出来的姿态,实际角度与我们的目标角度有多大的差值。我们程序中设置了积分分离阈值与积分饱和阈值,积分分离阈值呢,我们设置为5度,也就是说大于5度我们就认为不是系统静差了,就不需要积分项进行作用了,积分饱和呢我们设置了100,也就是积分饱和最大输出100的PWM增量。我们的Ki积分项,参数很小0.0几的样子。

以上 单个轴的PID系数就基本整定出来了,剩下的几个轴重复以上步骤。。

今天先写到这,,后面再补充吧。最后附上队友MATLAB仿真PID

串级PID参数整定

串级PID待我寒假回家研究研究,貌似难调

附录:

队友MATLAB仿真:

参数

这里写图片描述

结果 
这里写图片描述

参数 
这里写图片描述

结果

这里写图片描述

参数 
这里写图片描述

结果 
这里写图片描述

参数

这里写图片描述

结果

这里写图片描述

参数 
这里写图片描述

结果 
这里写图片描述

参数

这里写图片描述

结果

这里写图片描述

参数 
这里写图片描述

结果 
这里写图片描述

  • 5
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 团队长期从事下列领域算法的研究和改进: ### 1 智能优化算法及应用 **1.1 改进智能优化算法方面(单目标和多目标)** **1.2 生产调度方面** 1.2.1 装配线调度研究 1.2.2 车间调度研究 1.2.3 生产线平衡研究 1.2.4 水库梯度调度研究 **1.3 路径规划方面** 1.3.1 旅行商问题研究(TSP、TSPTW) 1.3.2 各类车辆路径规划问题研究(vrp、VRPTW、CVRP) 1.3.3 机器人路径规划问题研究 1.3.4 无人机三维路径规划问题研究 1.3.5 多式联运问题研究 1.3.6 无人机结合车辆路径配送 **1.4 三维装箱求解** **1.5 物流选址研究** 1.5.1 背包问题 1.5.2 物流选址 1.5.4 货位优化 ##### 1.6 电力系统优化研究 1.6.1 微电网优化 1.6.2 配电网系统优化 1.6.3 配电网重构 1.6.4 有序充电 1.6.5 储能双层优化调度 1.6.6 储能优化配置 ### 2 神经网络回归预测、时序预测、分类清单 **2.1 bp预测和分类** **2.2 lssvm预测和分类** **2.3 svm预测和分类** **2.4 cnn预测和分类** ##### 2.5 ELM预测和分类 ##### 2.6 KELM预测和分类 **2.7 ELMAN预测和分类** ##### 2.8 LSTM预测和分类 **2.9 RBF预测和分类** ##### 2.10 DBN预测和分类 ##### 2.11 FNN预测 ##### 2.12 DELM预测和分类 ##### 2.13 BIlstm预测和分类 ##### 2.14 宽度学习预测和分类 ##### 2.15 模糊小波神经网络预测和分类 ##### 2.16 GRU预测和分类 ### 3 图像处理算法 **3.1 图像识别** 3.1.1 车牌、交通标志识别(新能源、国内外、复杂环境下车牌) 3.1.2 发票、身份证、银行卡识别 3.1.3 人脸类别和表情识别 3.1.4 打靶识别 3.1.5 字符识别(字母、数字、手写体、汉字、验证码) 3.1.6 病灶识别 3.1.7 花朵、药材、水果蔬菜识别 3.1.8 指纹、手势、虹膜识别 3.1.9 路面状态和裂缝识别 3.1.10 行为识别 3.1.11 万用表和表盘识别 3.1.12 人民币识别 3.1.13 答题卡识别 **3.2 图像分割** **3.3 图像检测** 3.3.1 显著性检测 3.3.2 缺陷检测 3.3.3 疲劳检测 3.3.4 病害检测 3.3.5 火灾检测 3.3.6 行人检测 3.3.7 水果分级 **3.4 图像隐藏** **3.5 图像去噪** **3.6 图像融合** **3.7 图像配准** **3.8 图像增强** **3.9 图像压缩** ##### 3.10 图像重建 ### 4 信号处理算法 **4.1 信号识别** **4.2 信号检测** **4.3 信号嵌入和提取** **4.4 信号去噪** ##### 4.5 故障诊断 ##### 4.6 脑电信号 ##### 4.7 心电信号 ##### 4.8 肌电信号 ### 5 元胞自动机仿真 **5.1 模拟交通流** **5.2 模拟人群疏散** **5.3 模拟病毒扩散** **5.4 模拟晶体生长** ### 6 无线传感器网络 ##### 6.1 无线传感器定位(Dv-Hop定位优化、RSSI定位优化) ##### 6.2 无线传感器覆盖优化 ##### 6.3 无线传感器通信及优化(Leach协议优化) ##### 6.4 无人机通信中继优化(组播优化)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值