实用标准文案
先来了解一下P项、I项和D项的基本内容。这里只用通俗语言简单解释,给出一些简单实用的调整方法。有需要深入研究的用户,请自行查阅相关资料。
P项相当于一个变化率,数值越大,变化越快。假设“俯仰到升降通道”的P值为60时,机头从上抬20o到变回水平位置,需要5秒钟时间,那么P值为30时,这个时间就大于5秒(比如10秒),P值为120时,这个时间就小于5秒(比如2.5秒)。 D项相当于一个“阻尼器”,数值越大,阻尼越大,控制越“硬”。如果飞机在水平直飞时,在横滚方向上老是振荡,那么可以调小“副翼通道”的D值,如果飞机在横滚方向上的增稳效果不好(即偏离水平位置后很难再回复到原来状态),那么可以调大该D值。
I项相当于一个“加分器”,使控制量更贴近目标量,但也有可能“加过头”了。例如:如果要使飞机从100米爬升到200米,而飞机只爬到199米就不再爬升,那么,此时需要增大I值;但如果飞机爬到201米才停下来,那么,此时应该减小I值。 下面简单描述一下在试飞调试阶段进行PID参数调整的步骤。
第一步:规划并上传一个矩形航线。高度不要太高,比如50米,这样便于肉眼观察高度变化。第一个航点和最后一个航点距离稍微近点,相邻航点间距离为300米~400米为宜。让飞机在视野范围内压线飞行。
第二步:切入自动模式,让飞机沿着这个航线飞行。 第三步:看增稳控制效果。
先使用默认参数。副翼通道上:P=95,I=5,D=8。俯仰到升降通道:P=95,I=3,D=8。注意到各项目上类似于“P/128”的字样,其中“P”指P项,“128”是可以输入的最大值。此外,每个项目上能填入的最小数值为零。
精彩文档
实用标准文案
横滚和俯仰上的调整方法类似,此处只讲横滚。
如果飞机在横滚方向上左右振荡,那么同时调小P值和D值,I值一般固定不动。 如果飞机在横滚方向上的增稳效果不好,那么同时调大P值和D值,I值一般固定不动。
第四步:试着改变目标高度,看定高效果。
如果飞机爬升或俯冲速度太慢,就增大“高度到俯仰角”的P值,反之减小P值。如果在爬升或俯冲过程中,机头振荡得厉害,就减小“高度到俯仰角”的D值。最后,如果飞机无法爬升到预设高度,就增大“高度到俯仰角”的I值,相反减小I值。
★在这里,调大P值,一般是把初始俯仰角调大,调小P值,一般是把初始俯仰角调小。参考前文关于位置控制的解释,就能理解这里的意思。如果不能理解,就不要深究。 第五步:看飞机在到达航点时的转弯效果。
如果转弯速度太慢,就增到“方向舵通道”的P值,反之减小P值。如果转弯时机头来回振荡,就减小D值,如果转弯时机头上没有阻尼的感觉,就增大D值。
★在这里,调大P值,一般是把初始倾斜角调大,调小P值,一般是把初始倾斜角调小。参考前文关于位置控制的解释,就能理解这里的意思。如果不能理解,就不要深究。 第六步:看飞机的压线效果。
如果飞机切入航线时的速度太慢,就增大“偏侧距”的P值,反之减小P值。如果飞机在航线上左右扭动,就减小“偏侧距”的D值,而如果没有阻尼的感觉,就增大D值。
★在这里,调大P值,一般是把初始夹角调大,调小P值,一般是把初始夹角调小。参考前文关于位置控制的解释,就能理解这里的意思。如果不能理解,就不要深究。
精彩文档
实用标准文案
super_mice的专栏
[原]四旋翼飞行器Quadrotor飞控之 PID调节(参考APM程序)
2014-8-8阅读10860 评论43
做四轴也有一段时间了,最近一直在做PID方面的工作。现在四轴基本可以实现室内比较稳定的飞行,操控手感也可以接受。稍后上试飞视频。在此把一些PID方面的经验总结总结和大家分享一下。 首先介绍一下大概的硬件组成: MCU:Freescale MK60D
传感器(IMU):GY-86模块(MPU6050 + HMC5883L + MS5611) 433MHz数据传输模块 DC-DC可调式开关稳压模块
遥控设备:JR XG7发射机 + JR 611B接收机 机架:普通红白f450机架
电机:朗宇2212kv880高效能电机(黑色) 电调:天行者40A 桨:仿APC1047 电池:DUPU 2200mah 25c
电路很简单用洞洞板搭的简易测试电路。
精彩文档
实用标准文案
软件方面最主要的是姿态解算,最终用的是MPU6050的DMP(Digital Motion Process)输出,遥控器控制的目标姿态也是四元数表示的。为了有较好的线性度,将两者的姿态差转换为欧拉角后再进行PID的控制。
下面进入正题。PID算法很大程度上参考了APM(国外成熟开源飞控项目,官网点击打开链接)的控制算法。它是采用的角度P和角速度PID的双闭环PID算法。角度的误差被作为期望输入到角速度控制器中。双闭环PID相比传统的单环PID来说性能有了极大的提升,笔者也曾经调试过传统的PID控制算法,即便参数经过了精心调整和双环控制算法相比在控制效果上的差距依旧很大。无论是悬停的稳定性,打舵时的快速跟随性和回正时的快速性上都是后者的效果明显优于前者。
大概介绍一下APM算法的大概流程。这个PID控制流程图可以在APM官网找到。笔者参考的是APM3.1.0的代码和图上2.9版本的有一点点出入,不影响大局(控制频率100hz)。
精彩文档
实用标准文案
横滚(Roll)和俯仰(Pitch)的控制算法是一样的,控制参数也比较接近。首先得到轴姿态的角度差(angle error),将这个值乘以角度系数p后限幅(限幅必须有,否则剧烈打舵时容易引发震荡)作为角速度控制器期望值(target_rate)。target_rate与陀螺仪得到的当前角速度作差,得到角速度误差(rate_error)乘以kp得到P。在I值小于限幅值(这个值大概在5%油门)或者rate_error与i值异号时将rate_error累加到I中。前后两次rate_error的差作为D项,值得注意的是加需要入20hz(也可以采用其它合适频率)滤波,以避免震荡。将P,I,D三者相加并限幅(50%油门)得到最终PID输出。
精彩文档