无人机控制中的模糊控制:一维与二维模糊控制及其实现要点
无人机 控制方面 模糊控制 有一维模糊和二维模糊两种文字说明资料已遗失数学模型可以根据仿真图推导直接运维simulink会报错是因为没有导入模糊规则在运行simulink之前需要在命令窗口输入workreadfis work.fis ,这样才不会报错飞友们搞无人机悬停/定高的时候有没有踩过PID调参调到怀疑人生的坑上周翻旧项目硬盘刚好看到个2年前做的入门级模糊定高仿真文字说明全丢了只剩一堆Scope图硬啃啃出点一维和二维模糊控制的区别还有大家容易踩的那个Simulink大坑——先分享大坑再讲干货吧毕竟谁没经历过刚拖好模块兴冲冲点运行弹一大片红的崩溃先敲那个救命代码% 先确认work.fis文件在当前工作目录或者加绝对路径比如D:/UAV_workspace/work.fis work readfis(work.fis);别省空格也别打引号错顺序当年我第一次把引号敲成中文的红框框里飘“语法错误”飘得我以为模块坏了后来拍大腿才发现是输入法的锅。那为什么必须读这个fis因为模糊控制的核心——隶属度函数形状、输入输出论域、模糊规则库——全在这个文件里Simulink拖的Fuzzy Logic Controller模块默认是空壳子没规则就像人没大脑根本转不起来肯定报错。好坑填完说说当年啃Scope图反推的一维二维模糊定高的区别吧旧项目的Scope图有两个对比组一个是误差e期望值高度减当前高度做一维输入的一个是e误差变化率ec这一帧减上一帧的e做二维输入的。先回忆下模糊控制的大概流程没文字也没关系经典嘛输入→模糊化转成模糊语言比如“太大了”“小误差正在变小”→模糊推理按规则输出模糊量→解模糊转成精确的PWM油门增量/高度控制器输出量。无人机 控制方面 模糊控制 有一维模糊和二维模糊两种文字说明资料已遗失数学模型可以根据仿真图推导直接运维simulink会报错是因为没有导入模糊规则在运行simulink之前需要在命令窗口输入workreadfis work.fis ,这样才不会报错一维模糊的反推过程很简单看Scope里的输入论域是[-1,1]m假设期望10m当前9.5→9.8→9.9→10→10.1这种小波动大了肯定论域调宽当年做的是悬停微调隶属度函数用了5个三角型高斯型混合中间0附近是高斯“刚好”两边是三角“稍低”“太低”“稍高”“太高”输出油门增量论域是[-5,5]%隶属度函数也是5个“大幅减油”“减点油”“不动”“加点油”“大幅加油”规则库反推了几句Scope里波动能看出来如果e太低→大幅加油e稍低→加点油e刚好→不动e稍高→减点油e太高→大幅减油。当年拖的一维模糊仿真图大概是这样的纯脑补模块敲点伪结构Simulink模型伪一维链期望高度10m → Sum模块1期望 - 当前→ e输出→ Fuzzy Logic Controller关联刚才读的work_1d.fis→ 油门增量输出→ 无人机高度传递函数Scope图反推大概是个二阶欠阻尼当年无人机重量大概1kg忽略风干扰纯理想模型→ Sum模块2当前高度历史增量积分→ 伪高度测量→ 当前高度连回Sum1再拖个Scope看e和当前高度看反推的一维模糊悬停Scope图确实有问题超调有点大超过10.3m收敛速度慢大概8秒才稳在±0.1m内而且如果风干扰加个小阶跃假设当年后来偷偷加了1m/s²的上升气流1秒不过文字没标稳回来要更久。为什么因为它只有“现在差多少”的信息没有“差正在往哪里变、变快变慢”的预判比如当前高度已经从10.2往10.1降了但一维模糊只看到e0.1是“稍高”还在减点油结果就容易晃悠像新手开车踩油门刹车没数。二维模糊就好很多当年的另一个对比组Scope图反推ec的论域是[-0.2,0.2]m/s因为是微调高度变化率不会太大隶属度函数用了3个高斯“下降快”“稳定”“上升快”然后输入就是e还是刚才的5个ec3个规则库一下就多了当年反推的经典预判句比如模糊规则小片段伪中文当年FIS里应该是英文1. If e is 稍低 AND ec is 下降快 → 大幅加油差得不算特别多但还在往下掉得赶紧补油拉回来2. If e is 稍低 AND ec is 上升快 → 不动/加一丢丢差在往好的方向走别瞎补油过了3. If e is 刚好 AND ec is 上升快 → 减点油预判要超了提前刹车二维模糊的仿真伪链只比一维多了个Derivative微分模块把Sum1输出的e再连个微分器→ ec输出→ 拖个Mux模块把e和ec捆起来→ 再连Fuzzy Logic Controller关联work_2d.fis。当年看二维Scope图无干扰的话超调几乎没有最高10.08m收敛速度3秒就稳在±0.05m内加了刚才脑补的上升气流稳回来也只要5秒左右体验感直接拉满——就像老司机开车看到前面红灯提前松油门看到要变绿提前踩一点点稳得一批。最后再提醒一遍那个救命的readfis步骤还有别把FIS文件名写错隶属度函数和规则库自己调的时候别太极端比如一维别只有“大幅加减”两个规则不然晃得更厉害。对了当年为什么文字说明全丢了因为旧硬盘摔过一次恢复出来只有图片和模型mat文件和mdl的注释都没了——血泪教训飞友们搞项目一定要云端本地双备份别像我一样啃Scope图啃到凌晨两点
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2455662.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!