news 2026/6/10 15:50:49

完整的PID和LQR四旋翼无人机Simulink、Matlab仿真:两个SLX文件一个M文件及...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
完整的PID和LQR四旋翼无人机Simulink、Matlab仿真:两个SLX文件一个M文件及...

完整的PID和LQR四旋翼无人机simulink,matlab仿真,两个slx文件一个m文件,有一篇资料与其对应学习。

四旋翼控制算法仿真这玩意儿,说难不难说简单也不简单。最近在Matlab里搭了个包含PID和LQR两种控制方案的仿真框架,两个Simulink模型共用同一个动力学模型,参数配置都放在m文件里。先说PID控制那个slx文件,打开就能看到四个环形嵌套的控制器结构——这可不是为了好看,每个环对应姿态角、角速度、位置和速度四个控制维度。

调PID参数那会儿真是试到怀疑人生,特别是积分项。后来在m文件里搞了个参数矩阵批量测试:

Kp_roll = [0.8 1.2 1.5]; Ki_roll = [0.05 0.1]; for i=1:3 for j=1:2 simOut = sim('Quadcopter_PID'); record_data(:,:,i,j) = simOut.logsout{3}.Values.Data; end end

这段循环把三个P值和两个I值排列组合跑仿真,最后用曲面图找最优解。有意思的是当P值超过1.5之后,系统响应反而变慢——后来发现是执行器饱和导致的非线性问题。

LQR那边就是另一个画风了。动力学模型线性化后得到的状态矩阵A长得像被轰炸过的战场:

A = [0 1 0 0 0 0; 0 0 -9.8 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 0; 0 0 0 0 0 1; 0 0 0 0 0 0];

设计Q矩阵时给高度控制加了10倍权重,结果姿态控制抖得跟筛糠似的。后来改用分块对角矩阵加权,姿态误差项和位置误差项分开处理才算稳住。

仿真时发现个有趣现象:PID在突加干扰时恢复更快,但稳态误差总在±0.1米晃悠;LQR的轨迹平滑得像德芙巧克力,不过计算量大了三倍。后来在slx里把两种控制器输出并联,用switch模块做实时切换,意外发现过渡过程比单一控制器还稳定——这可能就是玄学吧。

最后说说那个m文件里的数据记录功能,用To Workspace模块导出的数据结构比俄罗斯套娃还复杂。写了个解析函数把嵌套的timeseries数据转成三维数组,这才搞定误差统计分析。建议新手别在数据命名上玩花样,保持time、state、input这种直男命名最省事。

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

YOLO与Elasticsearch结合:实现检测记录的全文检索

YOLO与Elasticsearch结合:实现检测记录的全文检索 在智能工厂的监控中心,安全主管正面临一个典型难题:如何从长达数小时的视频流中快速定位“工人未佩戴安全帽”的违规画面?传统方式依赖人工回放或基于时间戳的粗略查找&#xff0…

作者头像 李华
网站建设 2026/6/9 17:28:27

PHP高并发 VS 非高并发

“PHP 高并发 vs 非高并发” 的本质差异,不在代码写法,而在运行模型、资源调度、瓶颈边界。 普通业务用 FPM 足够,高并发需 Swoole/Worker 模型;但若不懂底层,高并发反而更容易崩。一、运行模型:进程 vs 协…

作者头像 李华
网站建设 2026/6/9 19:41:57

编程语言的Link(链接器),Debug(调试器)简介

对于程序员来说,链接器 (Linker) 和调试器 (Debugger) 是继编译器/解释器和包管理器之后,开发工具链中至关重要的组成部分。 下表为你汇总了之前提到的各类编程语言常用的链接器(或同类工具)和调试器,帮助你快速定位&a…

作者头像 李华
网站建设 2026/6/10 14:09:11

IoC、DI入门案例

目录IoC入门案例DI入门案例IoC入门案例 执行: DI入门案例 思路分析 基于IoC管理beanService中使用new形式创建的Dao对象是否保留(否)Service中需要的Dao对象如何进入到Service中?(提供方法)Service与Da…

作者头像 李华