PX4四旋翼飞控系统级联控制架构与参数整定实战解析
1. 从零开始理解PX4的级联控制“洋葱模型”当你组装好一架四旋翼无人机看着它静静躺在工作台上心里想的肯定是“赶紧飞起来看看”。但很多新手开发者会直接跳过理论一头扎进参数调整结果往往是飞机要么纹丝不动要么直接“炸机”。我刚开始玩PX4的时候也踩过这个坑后来才明白想调好飞机必须先搞懂它的大脑——也就是那个分层级联的控制架构。你可以把它想象成一个剥洋葱的过程或者更形象地说像是一个俄罗斯套娃一层套一层每一层都有自己明确的任务。PX4的这套控制逻辑从最宏观的“我要飞到那里去”到最微观的“这个电机现在该转多快”一共分了六层。最外层是位置控制它只关心“飞机现在在哪里目标点在哪里”。中间是速度控制和姿态控制负责把“去哪”的指令转化成“身体该怎么倾斜”的动作。最内层是角速率控制它直接指挥电机产生让飞机旋转的力矩。最后电机混控和PWM输出这两个环节就是把“力矩”翻译成四个电机各自的转速指令。这个架构最大的好处就是“责任清晰”外层负责规划内层负责执行内环的响应速度远比外环快这样整个系统才既稳定又灵敏。我常跟新手朋友打比方这就好比你要开车从北京到上海。位置控制层就是你看地图规划走哪条高速路径。速度控制层就是你的脚踩油门和刹车控制车速快慢。姿态控制层就是你打方向盘让车保持在车道内。角速率控制层就更细微了它像是你手臂的肌肉精细地调节方向盘的转动速度和力度。任何一层出了问题车都到不了目的地。理解了这个“洋葱模型”你再去看那些参数就不会觉得是一团乱麻了因为每个参数都只在自己那一层起作用。2. 实战第一步从最内环开始调参——角速率控制器参数整定一定要从最内层开始也就是角速率控制器。这是所有控制的基础它不稳定上面所有层调得再好都是白搭。角速率控制器的输入是“期望的旋转速度”比如每秒转30度输出是“需要施加给飞机的力矩”。它直接读取IMU惯性测量单元里的陀螺仪数据所以响应必须极快PX4里这个控制环的运行频率高达400Hz。那么具体怎么调呢你不需要一开始就动代码完全可以在PX4的地面站软件QGroundControl里完成。连接飞控后找到“参数”页面搜索“MC_RATE_”开头的参数。核心就是三组PID参数分别对应滚转Roll、俯仰Pitch和偏航Yaw三个轴。我个人的习惯是先调滚转和俯仰因为这两个轴动力学对称参数可以设成一样的。偏航轴比较特殊我们放后面说。第一步调P增益MC_ROLLRATE_P和MC_PITCHRATE_P把I和D增益先设为0。找一个安全空旷的场地把飞机用手拿起来记得卸掉螺旋桨。在QGC里切换到“手动”模式轻轻推动遥控器的横滚或俯仰摇杆。你的手会感觉到飞机在“抵抗”你的动作试图回到水平。逐渐增加P值直到你感觉到飞机有明显的、高频率的“嗡嗡”振动这说明P增益太大了系统开始振荡。然后把这个值减小大约20%-30%这就是一个比较合适的P值。一个好的P增益应该让飞机对手指施加的微小角度变化反应迅速且干脆没有拖沓感。第二步调D增益MC_ROLLRATE_D和MC_PITCHRATE_DD增益的作用是阻尼抑制振荡。在有了P增益的基础上慢慢增加D值。你会感觉到飞机的“硬度”增加了抵抗外部扰动的能力更强。但D增益对传感器噪声非常敏感加得太大反而会引入高频抖动。一个实用的判断方法是快速拨动一下摇杆然后回中观察飞机的响应。如果回中后飞机还有一两次轻微的来回晃动说明阻尼不够需要稍微加大D值。如果回中过程非常“死板”或者甚至有点抽搐那就是D值太大了。第三步调I增益MC_ROLLRATE_I和MC_PITCHRATE_I角速率环的I增益主要是为了消除持续的、微小的角速度误差。比如如果飞机有轻微的不平衡或者电机有微小的性能差异会导致飞机在悬停时自己慢慢旋转。这时就需要I增益来修正。这个值通常很小。你可以先设一个很小的值比如0.01然后让飞机实际起飞悬停低空做好保护观察它是否还会缓慢地自旋。如果有再非常缓慢地增加I值直到自旋消失。切记I增益是最后微调的项目且宁小勿大。偏航轴Yaw的特殊性 偏航轴的转动惯量通常和滚转/俯仰轴不同而且电机产生的偏航力矩远小于滚转/俯仰力矩。所以MC_YAWRATE_P的初始值应该设得比滚转的P值小。调试方法类似但注意观察的是飞机绕垂直轴的旋转响应是否跟手。3. 稳住姿态姿态控制器的整定逻辑调好了最内层的角速率环我们就可以放心地剥开下一层姿态控制器。这一层的任务是把期望的飞机姿态角度比如倾斜10度转换成期望的角速度然后交给下层去执行。所以姿态环的“执行机构”其实就是你刚刚调好的角速率环。正因为内环已经稳定且响应迅速外环的调试才会变得相对简单和安全。姿态控制器在PX4里主要使用P和I控制MC_ROLL_P,MC_PITCH_P,MC_YAW_P以及对应的I参数。它的运行频率是200Hz。调试的核心思想是让飞机能快速、准确地到达指令姿态并且稳定保持没有超调和振荡。调试场景与步骤最好的调试方式是进行姿态模式下的飞行测试。找一个开阔无风或微风的环境。P增益调试同样先将I增益设为零。让飞机起飞并悬停。然后向一个方向比如向右轻打一下横滚摇杆并立即回中给飞机一个“阶跃”指令。观察飞机的反应反应迟钝慢慢悠悠地倾斜然后恢复说明P增益太小了。增加MC_ROLL_P值。反应迅速但到达指令角度后像钟摆一样来回晃好几下说明P增益太大了。减小P值。理想状态飞机迅速倾斜到指令角度可能会有一次很小的、几乎察觉不到的过冲超调5%然后立刻稳稳地停在那个角度。回中时也能干净利落地回到水平没有振荡。这就是合适的P增益。I增益调试姿态环的I增益用于消除姿态的稳态误差。比如当你让飞机保持10度倾斜时由于风阻或微小的不平衡飞机可能只能保持9.5度。I增益会累积这个0.5度的误差并输出一个补偿信号。调试时让飞机以固定角度如15度做定姿飞行观察其是否能稳定维持。如果角度慢慢减小则需要适当增加I值。但同样要小心I值过大会引起低速振荡。注意内外环耦合如果你发现无论如何调整姿态环的P值飞机都表现得很“软”或者振荡那问题可能不在本层而是内层的角速率环没调好。这时需要返回去检查角速率环的响应。一个稳固的内环是外环性能的基石。这里有一个非常重要的概念叫带宽。角速率环的带宽响应速度必须远高于姿态环。PX4默认的频率设置角速率400Hz姿态200Hz就保证了这一点。你在调参时实际上是在调整每个环路的带宽。内环带宽高才能快速抵消外环指令带来的扰动。4. 让飞机指哪飞哪位置与速度控制环调试来到了最外两层速度控制和位置控制。这两层决定了你的飞机在“定点”Position模式和“定高”Altitude模式下的飞行表现——能不能稳稳地悬在一个点指令移动时是又快又稳还是摇摇晃晃。很多新手觉得外环最难调其实只要内环扎实外环的调试逻辑非常直观。速度控制器是位置控制的内环。它接收来自位置环的“期望速度”指令结合GPS或视觉等传感器提供的实际速度反馈计算出需要的“期望加速度”进而推导出需要的推力大小和姿态角度。它的参数是MPC_XY_VEL_P水平速度P、MPC_Z_VEL_P垂直速度P等。位置控制器则是最顶层它直接比较期望位置和实际位置来自GPS、光流或视觉里程计产生速度指令。核心参数是MPC_XY_P和MPC_Z_P。调试顺序与实战技巧强烈建议先调垂直方向高度再调水平方向。因为高度控制相对独立且炸机风险更可控可以低空测试。垂直速度与位置环调试在“定高”模式下让飞机悬停。缓慢上下推动油门杆观察飞机上升/下降的速度是否跟手停止推动后飞机是否能迅速稳住高度没有明显的“上冲”或“下掉”。如果响应迟缓增加MPC_Z_VEL_P。如果停止指令后高度来回振荡则减小MPC_Z_VEL_P。位置环参数MPC_Z_P通常不需要大动。如果飞机在定点悬停时高度漂移很慢可以稍微增加一点MPC_Z_P来加快修正。但记住外环P增益过大会导致整个系统变得“神经质”对传感器噪声异常敏感。水平速度与位置环调试在“定点”模式下进行小幅度的前后左右平移测试。推动摇杆让飞机以低速移动观察其移动是否顺畅松开摇杆后能否平滑减速并准确停在原地。MPC_XY_VEL_P影响移动和刹车的“力度”。太小了飞机移动起来有延迟刹车时停不住会过冲。太大了移动和刹车会非常生硬甚至引发水平方向的振荡。MPC_XY_P影响悬停点的“粘性”。太大了飞机在悬停时会不断进行高频微调看起来很“抖”。太小了飞机抗风能力差容易漂移。一个关键技巧水平位置/速度环的调试与最大倾斜角参数MPC_TILTMAX_AIR密切相关。这个参数限制了飞机在水平移动时最大能倾斜多少度。倾斜角越大水平加速度越大移动和刹车就越猛。如果你希望飞机移动更柔和除了调整PID适当减小最大倾斜角也是一个非常有效且安全的方法。参数整定表格参考控制环核心参数示例调试目标增益太小的表现增益太大的表现调试模式角速率MC_ROLLRATE_P快速响应摇杆无振荡反应迟钝感觉“软”高频振动“嗡嗡”声手动/自稳模式离地测试姿态MC_ROLL_P准确到达指令角度稳定保持到达角度慢易受风扰到达角度后像钟摆一样振荡自稳模式速度MPC_XY_VEL_P速度响应跟手刹车平稳加速慢刹车过冲、漂移启停生硬可能引发水平摆动定点模式位置MPC_XY_P悬停稳定抗漂移悬停点漂移抗风差悬停时高频抖动不安静定点模式5. 最后的翻译官电机混控与参数测量前面所有精妙的控制算法最终都要落到四个电机的转速上。这个将“总推力”和“三个力矩”分配到四个电机的过程就是电机混控。对于最常见的X型四旋翼混控矩阵是固定的你通常不需要修改。但是混控计算所依赖的关键物理参数如果测不准前面所有的调试都等于在沙滩上盖楼。必须准确测量或估算的参数有三个飞行器总质量MPC_MASS这个最简单用电子秤称就行。但一定要称整机重量包括电池、相机等所有负载。这个值直接影响推力计算误差过大会导致高度控制根本不准。电机臂长MOT_PA_SCALE或相关参数这是指从飞机中心到电机轴心的水平距离。精确测量这个距离它直接决定了滚转和俯仰力矩的效率。臂长填大了飞控会以为力臂很长给出的力矩指令会偏小导致飞机反应迟钝。填小了则相反飞控会过度控制容易振荡。转动惯量MC_ROLLRATE_FF,MC_PITCHRATE_FF,MC_YAWRATE_FF这是最容易被忽略也最难测量的参数。它描述了飞机绕各个轴旋转的“惯性”大小。一个扁平的机架和一個高大的机架转动惯量差异巨大。PX4中常用“前馈增益”来部分补偿转动惯量的影响。虽然不要求绝对精确但有一个土办法可以估算用手抓住机臂让飞机绕某个轴快速振荡感受它的“重量感”。在调参时如果发现角速率环的P、D调好了但响应还是感觉“肉”或者“飘”可以尝试微调对应轴的FF前馈增益。增加FF增益相当于告诉控制器“我的惯性大需要多给点力”。电机混控的验证在QGC的“执行器输出”页面你可以手动推杆观察四个电机的输出值变化是否符合逻辑推油门增加总推力四个电机输出同步增加。推横滚向右倾斜右侧电机2、3输出减小左侧电机1、4输出增加。推俯仰向前倾斜后方电机3、4输出减小前方电机1、2输出增加。推偏航向右旋转顺时针电机2、4输出减小逆时针电机1、3输出增加。 如果变化规律不对很可能是电机序号或旋转方向在飞控里设置错了需要检查MOT_ORDERING等参数。6. 飞行测试与稳定性终极判据参数调好了最终都要上天见真章。飞行测试不能蛮干要像做实验一样有步骤、有观察、有记录。我习惯准备一个检查清单每次改动参数后都按顺序测试。安全第一的测试流程系留测试用绳子或网兜把飞机拴在安全位置进行离地测试。主要测试电机启动、自检、以及手动模式下对摇杆的基本响应。听电机声音是否平滑有无异常振动。低空悬停测试自稳模式在开阔平整地面让飞机起飞到1-2米高度悬停。这是检验姿态环和角速率环的黄金场景。观察稳态表现飞机是否像被钉在空中一样稳定还是有缓慢的漂移或旋转抗扰动用手或借助安全工具轻轻从侧面推一下飞机它能否在晃动一两下后迅速恢复平稳恢复的过程是干净利落还是拖泥带水来回晃低速机动测试定点模式切换到定点模式进行小范围的平移、旋转。观察指令跟随移动是否跟手刹车是否平稳准确悬停恢复松开摇杆后飞机是否能平滑地回到原来的悬停点会不会 overshoot冲过头再回来动态压力测试进行一些快速的摇杆操作比如快速横滚、俯仰。然后观察飞机在剧烈机动后的恢复情况。一个健康的控制器应该能在剧烈动作后迅速镇定下来而不是引发持续的振荡。稳定性的终极判据光说“稳”太模糊了我们需要更具体的指标。在实际飞行中你可以通过观察和感受来判断超调量飞机响应指令时第一次摆动就达到或略微超过目标值10%是可接受的而不是反复振荡多次才稳定。例如指令它右倾30度它一下子转到33度然后立刻回到30度这是可以的如果转到35度再摆回25度如此反复就是超调过大或阻尼不足。上升时间从发出指令到第一次达到目标值90%的时间。这个时间当然是越短越好但必须与振荡取得平衡。通常角速率环的上升时间应在几十毫秒级姿态环在几百毫秒级。调节时间从发出指令到完全稳定在目标值附近误差2%的时间。好的系统调节时间应该在1-3个振荡周期内。比如一个摆动后第二个周期就基本稳住了。稳态误差在持续指令下如保持10度倾斜飞机姿态与指令值的长期偏差。一个优秀的积分环节I应该能将这个误差减小到几乎为零。最后别忘了环境的影响。同样的参数在无风室内、微风室外和大风天的表现天差地别。我建议以“微风天气”的表现作为基准进行调参这样既能保证性能又有一定的鲁棒性。调参是个需要耐心的过程每次只改动一个或一组相关参数记录下改动前后的飞行表现。慢慢地你就会对飞机和自己的调参手感越来越有把握。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2415376.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!