news 2026/5/9 12:43:29

四旋翼滑模控制,simulink仿真,matlab仿真,参数调已经调好,可以自行学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
四旋翼滑模控制,simulink仿真,matlab仿真,参数调已经调好,可以自行学习

四旋翼滑模控制,simulink仿真,matlab仿真,参数调已经调好,可以自行学习,包涵内外环滑模控制器

深夜调参,盯着屏幕上疯狂抖动的姿态曲线,我第N次想把键盘摔了。突然意识到滑模控制的抖振可能不是算法问题——是我参数调得太暴力了。今天就带大家撸个稳如老狗的四旋翼滑模仿真,模型参数都腌入味了,直接上硬菜。

!simulink_model

(别找了,图得自己搭。重点看红框里那俩滑模控制器模块,外环管位置内环控姿态,跟套娃似的层层嵌套)

外环滑模的核心代码长这样:

function [u, s] = outer_smc(x_ref, x_current, d_hat) % 滑模面设计 e = x_current(1:3) - x_ref(1:3); edot = x_current(4:6) - x_ref(4:6); k1 = diag([2.8, 2.8, 4.2]); % 这个对角阵参数别乱动! s = edot + k1*e; % 等效控制部分 M = 1.2; g = 9.8; u_eq = M*(g + k1*edot - d_hat); % 切换控制 k_sw = diag([0.6, 0.6, 0.8]); u_sw = -k_sw * sign(s); u = u_eq + u_sw; end

注意第12行的sign函数,实际跑仿真要换成饱和函数sat(s/Φ),不然抖得亲妈都不认识。比如:

% 把sign改成这个防抖版 phi = 0.05; u_sw = -k_sw * min(max(s/phi, -1), 1);

内环姿态控制更刺激,直接上simulink里的S函数:

function sys = inner_smc(t,x,u,flag) persistent I k2 eta; if flag == 0 I = diag([0.016, 0.016, 0.028]); % 转动惯量矩阵 k2 = [8,8,6]; % 滑模面增益 eta = [12,12,10]; % 切换增益 sys = [3,0,3,3,0,1]; return; end % 滑模面计算 omega_error = u(1:3); % 角速度误差 q_error = u(4:6); % 四元数误差 s = omega_error + k2'.*q_error(1:3); % 控制力矩计算 tau_eq = cross(omega_error, I*omega_error) - I*(k2'.*omega_error); tau_sw = -eta' .* sign(s); tau = tau_eq + tau_sw; sys(1:3) = tau; end

第14行那个叉乘项千万别删!这是科氏力补偿,删了无人机能在仿真里给你表演托马斯回旋。实测当姿态误差超过30度时,把eta参数调大20%能更快收敛。

模型里埋了几个彩蛋:

  1. 在姿态环的Integrator模块里设置了输出限幅,防止电机饱和
  2. 外环的wind disturbance模块可以右键取消注释,体验突风干扰
  3. 数据保存用To Workspace块,跑完直接plot3画三维轨迹超方便

调参玄学时间:当总控制量出现高频振荡时,优先减小切换增益eta;要是跟踪速度慢,先加大k1对角线上对应轴的值。记住滑模控制的精髓——在抖与不抖之间找到那个微妙的平衡点,就像在钢丝上跳街舞。

最后丢个仿真结果:

!trajectory

红色参考轨迹和蓝色实际轨迹基本重合,放大看会有毫米级的抖动——这就对了!真要完全不抖那叫PID控制。代码扔GitHub了,记得把电机模型里的PWM频率从50Hz改成200Hz,现代电调早不吃低频那套了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 12:36:18

S7-200 PLC在物流分拣系统里算是老将了,组态王这上位机软件搭配起来玩自动化控制特别带劲。今天咱们拿个快递包裹分选场景实操,从梯形图到组态画面直接上硬菜

S7-200 PLC和组态王货物分拣快递分拣分选包裹 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面先划重点——IO分配不能乱。比如光电传感器接I0.0检测包裹到位,气缸控制接Q0.1驱动分拣推杆,急停按钮必须用常闭触点…

作者头像 李华
网站建设 2026/5/9 6:04:10

手搓FPGA远程升级:从串口到双冗余防变砖实战

FPGA升级,FPGA远程更新。 使用串口更新x1 QSPI Flash上的用例使用的是串口,理解原理后可更换为其它接口。 带校验,防止变砖和双冗余设计,无需任何ip。Xilinx FPGA 7系列上纯逻辑FPGA实现远程更新,使用串口进行&#xf…

作者头像 李华
网站建设 2026/5/4 4:59:37

PyTorch安装常见错误汇总及镜像解决方案

PyTorch安装常见错误汇总及镜像解决方案 在深度学习项目启动阶段,最让人头疼的往往不是模型设计或数据处理,而是环境配置——尤其是当 torch.cuda.is_available() 返回 False,或者 pip install torch 卡在 0% 的时候。这种“还没开始就结束”…

作者头像 李华
网站建设 2026/5/3 9:21:12

Markdown公式书写:推导PyTorch损失函数数学原理

Markdown公式书写:推导PyTorch损失函数数学原理 在深度学习的实际研发中,一个常见的挑战是——如何让团队成员不仅“跑通代码”,还能真正理解模型背后每一步计算的数学意义? 尤其是像损失函数这样决定训练方向的核心组件&#xff…

作者头像 李华
网站建设 2026/5/9 5:58:02

Diskinfo定期巡检脚本:自动化维护GPU服务器

Diskinfo定期巡检脚本:自动化维护GPU服务器 在人工智能实验室或企业级AI训练平台中,最令人头疼的场景之一莫过于——深夜模型训练正到关键阶段,突然中断,日志里只留下一行模糊的I/O错误。重启后数据读取失败,几天的计算…

作者头像 李华
网站建设 2026/5/1 16:29:13

Java毕设项目推荐-基于SpringBoot的办公管理系统设计与实现员工考勤,工作任务分配、任务进度管理系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华