基于MATLAB/Simulink的四旋翼无人机PID控制与仿真(3)

本文共分为数篇文章介绍“基于MATLAB/Simulink的四旋翼无人机PID控制与仿真”:

1、前言与四旋翼动力学与控制模型(点此跳转)

2、四旋翼控制系统设计与基于MATLAB/Simulink的仿真模型搭建(点此跳转)

3、系统模型完善与飞行控制测试<<(您在此处)

4、针对正弦输入稳定控制的系统改进(待更新)

5、控制系统的离散化与c++飞控代码导出(待更新)

感谢读者朋友们的支持,建议大家按上述顺序分篇阅读本文~

时隔小半年,终于更新了本系列的第三篇~欢迎大家阅览并提出意见!
————————————————

目录

一、前言

二、初始模型回顾与环节增补

三、飞行控制测试

四、结语


一、前言

1、承上启下

上一篇文章最后,我们已经搭建了基础的四旋翼无人机PID控制系统的数字仿真模型~

需要再次补充说明的是,上一篇最终的模型我们所期望达到的成果是,仿真程序在点击“运行”后能够完整通顺地运行完毕,期间不报红色error错误(跑通即可,不必理会黄色warning警告,无论有多少警告)。

有很多读者朋友私信我或者评论反映,按照文章中的模型进行搭建出了很多问题,没有办法正常跑通,于是在这里进行一下如下的几点说明:

        (1) 【情绪稳定】首先,从写程序到搞仿真,无论是任何工程设计都会出现bug。遇到bug不要着急~首先根据报错的内容进行仔细的研读。在这里,不少读者因为英语水平受限,无法get到所报错误的含义,这就需要加倍耐心~

        (2) 【夯实基础】其次,当然是在完备地掌握程序或仿真系统的基本原理之后,更容易地从原理意义上理解错误并解决。以本篇为例,个人认为,对于本专业领域的读者在具备基本的线性代数理论力学信号与系统自动控制原理知识基础上,能够完全掌握本项目所涉及的全部理论。对于来自其他专业领域的读者,可以简单参考这几门课程的基础内容~

        (3) 【分而治之】对于读者朋友们目前反映的两个主要的系统报错

                1、系统报存在singularity错误,或是sqrt环节存在negative value input等,此时建议在每一个sqrt环节前接入一个scope,检查仿真过程中的信号输入,大概率是出现了负值,解决办法为在sqrt环节前接入sat(saturation饱和)环节,设置信号下限为某一小正值即可;

                2、系统报matrix multiply dimension云云的错误,并且在系统中数个接口处显示问号,此时检查每一个接口的向量或矩阵维数即可,保证每个矩阵乘法和加法都符合最基本的矩阵理论即可。

        上面两个错误都是十分容易解决的错误,如果有读者遇到其他错误也是人之常情,可以评论或私信~

        (4) 【细水长流】最后,上一篇文章结尾所搭建完毕的系统,是本项目的v0版本,也是最基础的版本。鉴于本人在本项目的研究,目前已经更新至v11版本,后面进行了非常多的更新和改进。

本篇作为本文的第三篇,将为大家继续展示并完善v0版本。本文将在前文的基础上,完成控制环节增补、参数设置、测试等工作,在不考虑性能(低超调、快、准等)的前提下,保证系统对于一般输入(阶跃、斜坡)的响应稳定性

如果对于后续版本以及本人研究方向感兴趣的读者,欢迎进一步评论与私信~

2、其他的一些说明

本文适读人群:飞行器控制与导航相关专业,如自动化、电子信息工程、机械工程、仪器科学与技术、控制科学与工程、航空航天工程等专业的本科生及研究生

本文关键词:飞行器控制、多旋翼、动力学系统仿真、控制系统仿真。

主要参考书籍:《多旋翼飞行器-设计与控制》——全权——电子工业出版社

同样地,为了照顾其他专业领域的读者,本文将尽可能详细地讲述操作过程~

【敬告】 如将本文用于毕业设计、论文,或以任何形式转载、转发,均务必声明引用并详注出处!在未经声明的情况下,在毕业设计、论文、互联网或其他任何公开场合使用本文中的语句、段落、仿真模型等内容者,一经发现,本人必然追究版权及学术道德责任

其他的废话不在前言赘述了,下面进入正文~

二、初始模型回顾与环节增补

基于上篇文章搭建的simulink模型,即方才讲到的v0版本系统,在这里进行一下重新展示(具体的搭建过程,见前两篇文章)。

需要注意的是,为了保证仿真输出即控制系统的稳定性,系统进行了一些环节增补和修改,下面会同步进行说明。

1 <系统总览-封装模块与输入接口之间的连接>

v0系统总体模型

2 <位置控制器-PositonController-内部环节设置>

v0系统位置控制器_PositonC
### MATLAB Simulink 四旋翼无人机 PID 控制仿真教程 #### 建立四旋翼动态模型 为了在MATLAB/Simulink环境中实现四旋翼无人机PID控制仿真,首先要构建四旋翼的动力学模型。该动力学模型描述了四旋翼各个状态变量之间的关系,包括位置、速度以及姿态角度等参数的变化规律。 ```matlab % 定义四旋翼物理特性常量 m = 0.5; % 质量 (kg) g = 9.81; % 重力加速度 (m/s^2) % 初始化Simulink环境并加载预设好的四旋翼模型库 sim(&#39;quadrotor_model&#39;); ``` #### 设计PID控制器结构 针对四旋翼的不同运动维度设计独立的PID调节器来分别管理俯仰角(Pitch)、滚转角(Roll)和偏航角(Yaw),从而确保整体飞行稳定性[^1]。 对于每一个轴向上的PID控制器而言,其输入信号来源于期望设定值实际测量值得差值;而输出则作为电机驱动指令的一部分参最终执行动作计算之中: ```matlab % 创建PID对象用于各自由度控制 Kp_pitch = 1; Ki_pitch = 0.1; Kd_pitch = 0.05; pidController_pitch = pid(Kp_pitch, Ki_pitch, Kd_pitch); % 同理可创建其他两个方向的PID控制器... ``` #### 配置传感器反馈回路 利用惯性测量单元(IMU)获取实时的姿态数据,并将其传递给相应的PID控制器完成闭环控制系统搭建工作。这里可以借助于Simulink中的Simscape工具箱来进行IMU行为建模以提高仿真的准确性[^3]。 ```xml <!-- IMU Sensor Block --> <block type="simscape/Driveline/Sensors & Actuators/Angular Velocity Sensor"> <!-- 参数设置 --> </block> ``` #### 实现软着陆功能 当涉及到复杂任务如自动降落时,则可以在原有基础上加入额外逻辑处理机制——即所谓的“软着陆”策略。这通常意味着随着高度降低逐渐减缓下降速率直至平稳接触地面为止,在此过程中同样可以通过调整PID增益系数达到理想效果[^4]。 ```matlab function u = softLandingControl(h_current,h_target,v_desired) persistent prev_h; if isempty(prev_h),prev_h=h_current;end error = h_target-h_current; delta_h = error-(h_target-prev_h); if abs(delta_h)<0.01 && v_desired>0 u=-sign(v_desired)*min(abs(v_desired)^2,0.5); else u=normalPidOutput(error); end prev_h=h_current; end ```
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值