- 多旋翼PID调参教程
- 介绍
- 电机带限(Motor Band / Limiting)
- 第1步:准备
- 第2步:: 稳定横滚(ROLL)和俯仰(PITCH)角速度
- 第3步: 稳定横滚和俯仰角
- 第4步: 稳定偏航角速度
- 第5步: 稳定偏航角
多旋翼PID调参教程
官网英文原文地址:http://px4.io/docs/multicopter-pid-tuning-guide/
本教程仅适用于高级用户/专家。如果你不理解PID调参代表什么,很可能导致炸机。
绝不带着碳纤维桨或者增强型碳纤维桨进行多旋翼调参。
绝不使用损坏的桨。
鉴于安全因素,默认的增益都设置成相应的较小的值。在你想要得到控制响应前,必须先增大相应的增益。
这个教程对所有的多旋翼(AR.Drone,PWM 四轴/六轴/八轴飞行器)都有效。比例-积分-微分(PID)控制器是应用最广泛的控制技术。在模型预测控制中有一些效果更好的控制技术(LQR/LQG),但是由于这些控制技术或多或少地需要精确的系统模型,因此没能得到广泛应用。PX4系列飞控板的控制目标就是能在MPC之间尽可能快的切换,因为不是所有支持的系统模型都可用,因此PID调参非常重要(并且PID控制在许多情况下是足够的)。
介绍
PX4中的 multirotor_att_control
应用程序执行外环姿态控制器的外环,取决于以下参数:
- 横滚比例控制 (MC_ROLL_P)
- 俯仰比例控制 (MC_PITCH_P)
- 偏航比例控制 (MC_YAW_P)
同时内环通过三个独立的PID控制器来控制姿态角速度:
- 横滚角速度控制(MC_ROLLRATE_P, MC_ROLLRATE_I, MC_ROLLRATE_D)
- 俯仰角速度控制(MC_PITCHRATE_P, MC_PITCHRATE_I, MC_PITCHRATE_D)
- 偏航角速度控制 (MC_YAWRATE_P, MC_YAWRATE_I, MC_YAWRATE_D)
外环输出的是期望的机体角速度(例如:如果多旋翼应该处于水平,但是当前存在30度的横滚角,那么控制输出就将产生60度每秒的角速度)。内环(即角速度控制环)改变电机的输出以使飞行器按照期望的角速度旋转。
增益实际上有一个直观的意义,例如:如果将MC_ROLL_P增益值设置为6.0并且姿态角存在0.5弧度的偏移(大约30度),那么飞行器将尝试以6倍的角速度来进行补偿,也就是3.0弧度每秒(rad/s)或者约170度每秒(deg/s)。对于内环来说,如果将MC_ROLLRATE_P增益设置成0.1,那么推力对横滚角的输出将会是3*0.1 = 0.3,这意味着飞行器一侧的电机将减速30%,同时另一侧的电机加速,以此来诱导角动量以便是飞行器回到水平状态。
参数MC_YAW_FF反映的是用户输入对偏航速度控制器的前馈比例。值为0代表极慢的响应速度,仅当偏航位置误差出现时,控制器才开始偏航运动;值为1代表响应非常灵敏的控制,但有一些超调,控制器将立刻进行偏航运动并始终保持偏航误差接近零,。
电机带限(Motor Band / Limiting)
如上述所示,在某些条件下,一个电机可能获得高于其最大速度的输入,而另一个电机获得低于零的输入。如果发生这种情况,由电机产生的力将违反控制模型,多旋翼飞行器很可能会翻转。为了防止这种情况发生,PX4上的多旋翼混控器使用了一个带限。如果有一个电机超出了安全范围,系统的总推力会被降低,使得控制器输出的相对百分比能得到满足。因此,多旋翼飞行器可能不会爬升,甚至稍微掉高,但它绝不会翻转。同样对于下侧,即使命令的横滚角度很大,它也将被缩放到一个不超过命令总推力的值,并且飞行器将不会在接近零推力起飞时发生翻转。
第1步:准备
首先将所有的参数都设置为初始值:
- 将所有的MC_XXX_P设置为0(ROLL, PITCH, YAW)
- 除了MC_ROLLRATE_P 和 MC_PITCHRATE_P之外,将所有的MC_XXXRATE_P、 MC_XXXRATE_I、 MC_XXXRATE_D设置为0
- 将MC_ROLLRATE_P和MC_PITCHRATE_P设置为一个比较小的值,例如0.02
- 将MC_YAW_FF设置为0.5
所有的增益都应该缓慢的增加,每次增加20%~30%,在最终微调时甚至应该降至10%。注意,增益太大(即使只比最优增益值大了1.5-2倍)可能会导致非常危险的振荡!
第2步:: 稳定横滚(ROLL)和俯仰(PITCH)角速度
P 增益调节
参数: MC_ROLLRATE_P,MC_PITCHRATE_P
如果飞行器是对称的,那么ROLL和PITCH的值应该是相同的;如果不是——则应该分别进行调节。
用手牢牢抓住多旋翼并将油门推到大约50%,使飞机的重量几乎为零。用手让飞机在横滚或俯仰方向上倾斜,并观察其响应。飞机应该会温和的对抗该运动,但它不会试图回到水平。如果飞机发生了振荡,则需要将RATE_P调低。一旦控制响应变慢但是正确了,则继续增加RATE_P直到飞机再次开始振荡。接下来降低RATE_P直到飞机只有轻微的振荡或者完全没有振荡(降低大约10%),只剩下超调。典型值约为0.1。
D 增益调节
参数:MC_ROLLRATE_D, MC_PITCHRATE_D
假设增益处于多旋翼振荡的状态下,并且RATE_P略微减小。从0.01开始慢慢增加RATE_D,直到消除最后一点振荡。如果电机发生颤抖,那么说明RATE_D太大了,需要将其调低。通过调节RATE_P和 RATE_D的大小,飞机的响应能够达到恰到好处。典型值大约在0.01~0.02之间。
在QGroundControl地面站中,你可以画出横滚和俯仰角速度图(ATTITUDE.rollspeed/pitchspeed)。这里曲线不会振荡,但是有一些超调(10%~20%)是没有关系的。
I 增益调节
如果横滚和俯仰角速度始终达不到设定值,并且存在漂移,从MC_ROLLRATE_P增益值的5%-10%处开始,将MC_ROLLRATE_I和MC_PITCHRATE_I 增益相加
第3步: 稳定横滚和俯仰角
P增益调节
参数 : MC_RATE_P, MC_RATE_P
将MC_ROLL_P以及MC_PITCH_P设置为一个较小的值,例如设置为3。
用手牢牢抓住多旋翼并将油门推到大约50%,使飞机的重量几乎为零。用手让飞机在横滚或俯仰方向上倾斜,并观察其响应。飞机应该会缓慢地回到水平。如果飞机发生振荡,则应该将P调低。一旦控制响应变慢但是正确了,则继续增加P直到飞机再次开始振荡。最优的响应是带有一些超调(大约10%~20%)。在得到稳定的响应之后再次对RATE_P,RATE_D进行微调。
在QGroundControl地面站中,你可以画出横滚和俯仰角示意图 (ATTITUDE.roll/pitch)以及控制输出(ctrl0, ctrl1)。姿态角的超调量应该不超过10-20%。
第4步: 稳定偏航角速度
P增益调节
参数: MC_YAWRATE_P
将MC_YAWRATE_P设置为一个较小的值,例如设置为0.1。
用手牢牢抓住多旋翼并将油门推到大约50%,使飞机的重量几乎为零。用手让飞机在偏航方向上转动,并观察其响应。电机的声音应该会发生改变,同时飞机应该会对抗这个偏航转动。飞机的响应将基本上弱于横滚和俯仰运动,这是正常的。如果飞机发生振荡或者颤抖,则需要将RATE_P调低。如果对于很小的运动(油门到顶vs空转螺旋桨)飞机的响应也非常剧烈,则继续减少RATE_P。典型值大约在0.2~0.3之间。
如果偏航角速度控制非常灵敏或者发生振荡,可能会恶化横滚和俯仰响应。可以通过转向、横滚、俯仰和偏航检查系统的总响应。
第5步: 稳定偏航角
P增益调节
参数: MC_YAW_P
将MC_YAW_P设置为一个较低的值,例如设置为1。
用手牢牢抓住多旋翼并将油门推到大约50%,使飞机的重量几乎为零。用手让飞机在偏航方向上转动,并观察其响应。飞机应该会慢慢地回到初始航向上。如果飞机发生振荡,则需要将MC_YAW_P调低。一旦控制响应变慢但是正确了,则需要增加MC_YAW_P直到响应变得稳定,同时不能有振荡。典型值大约在2~3之间。
可以在QGroundControl地面站中查看ATTITUDE.yaw偏航角曲线。偏航角的超调应该不超过2~5%。
前馈调节
参数:MC_YAW_FF
此参数不是特别重要并且可以在飞行过程中调节,在最坏的情况下,偏航响应将会滞后或者太快。调节前馈参数FF以获得一个舒适的响应。有效范围在0~1之间。典型值为0.8….0.9。(对于航拍视频,为获得平滑的响应,最佳值可能小得多)
可以在QGroundControl地面站中查看ATTITUDE.yaw偏航角曲线。偏航角的超调应该不超过2~5%。