基于MATLAB的四旋翼飞行控制与航迹仿真系统
项目简介
本项目是一个基于MATLAB开发的高保真四旋翼无人机(Quadrotor)飞行控制与仿真平台。该系统集成了六自由度(6-DOF)非线性动力学建模、级联PID控制策略以及基于数值积分的航迹仿真功能。
通过本项目,用户可以模拟四旋翼无人机在三维空间中的飞行行为,验证控制算法在轨迹跟踪任务中的有效性,并通过多维度的可视化图表分析系统的动态响应特性。
功能特性
1. 高精度动力学建模
- 六自由度模型:系统基于牛顿-欧拉方程构建,包含位置(x, y, z)、速度(u, v, w)、欧拉角($phi, theta, psi$)及角速度(p, q, r)共12个状态量。
- 物理参数化:支持自定义四旋翼的物理属性,包括质量、机臂长度、三轴转动惯量、电机转子惯量以及推力/力矩系数,能够模拟真实机体的物理特性。
2. 级联控制系统设计
- 双闭环架构:采用经典的位置环(外环)与姿态环(内环)级联结构。
*
外环(位置控制):根据参考轨迹计算期望加速度,并利用PD控制律(结合前馈加速度)生成总推力指令及期望姿态角。
*
姿态解算:通过期望力向量与几何法(旋转矩阵分解)精确反解出期望的滚转(Roll)和俯仰(Pitch)角,避免了小角度假设带来的误差。
*
内环(姿态控制):对姿态角及角速率进行PD控制,计算出机体所需的三轴力矩。
- 电机混控(Control Allocation):根据“十”字型或“X”型机架配置,将总推力与三轴力矩分配解算为四个电机的转速指令。
3. 数值仿真与轨迹跟踪
- ODE45解算:利用MATLAB内置的变步长Runge-Kutta求解器(ode45)对非线性微分方程组进行高精度积分。
- 轨迹生成接口:内嵌轨迹生成器接口,支持螺旋上升、特定航点序列或自定义曲线的实时位置、速度与加速度参考输入。
4. 数据分析与可视化
- 3D航迹复现:在三维坐标系中同时绘制参考轨迹与实际飞行轨迹,并按时间步长动态绘制四旋翼机体姿态,直观展示飞行过程。
- 多维度绘图:
*
位置响应:X/Y/Z轴的位置随时间变化曲线。
*
姿态响应:滚转、俯仰、偏航角的跟踪效果。
*
控制量分析:四个电机的实时转速指令曲线。
*
误差分析:位置跟踪的欧几里得范数(误差模)随时间的变化。
系统要求
- MATLAB R2016b 及以上版本
- 无需额外工具箱(主要使用基础数学库与ODE求解器)
使用方法
直接运行
main.m 脚本即可启动仿真。程序将自动执行以下流程:
- 初始化系统参数与控制器增益。
- 调用
ode45 进行全过程动力学解算。 - 重构控制过程数据(由于求解器仅返回状态,通过二次调用动力学函数恢复控制指令)。
- 弹出多个图形窗口显示仿真结果与分析图表。
核心算法与实现细节
参数初始化
代码首先定义了详尽的物理参数(如重力加速度 $g=9.81$、质量 $m=1.2$ 等)和PID控制器增益。位置环和姿态环分别配置了比例(Kp)、微分(Kd)和积分(Ki)系数,其中位置环主要使用PD控制逻辑配合前馈项。
动力学解算 (ode45)
采用
quad_dynamics 函数作为状态导数描述函数。仿真时间设定为20秒,输出步长为0.05秒。求解器设置了相对误差和绝对误差容限为 $1e-5$,以保证仿真精度。
控制逻辑实现
在
quad_dynamics 函数中,控制律的计算遵循以下步骤:
- 轨迹采样:获取当前时刻 $t$ 的期望位置、速度、加速度和偏航角。
- 位置控制计算:
* 计算位置误差与速度误差。
* 使用虚拟加速度指令:$acc_{des} = K_p cdot e_{pos} + K_d cdot e_{vel} + acc_{ref}$。
* 计算抵消重力并产生目标加速度所需的总推力 $F_{des}$。
- 几何姿态反解:
* 构建期望的机体Z轴向量(沿推力方向)。
* 结合期望偏航角,利用向量叉乘构建目标旋转矩阵 $R_{des}$。
* 从 $R_{des}$ 中提取期望的欧拉角($phi_{des}, theta_{des}$)。
- 姿态控制计算:
* 计算姿态角误差与角速率误差。
* 输出三轴力矩指令 $U2, U3, U4$。
- 电机混控:
* 基于电机几何分布模型,由 $U1$(总推力)和 $U2, U3, U4$(力矩)逆解出四个电机的目标转速平方值。
数据重构与后处理
由于
ode45 仅返回时间序列对应的状态矩阵 $X_{out}$,主程序包含一个后处理循环。该循环遍历所有仿真步长,再次调用动力学函数以恢复并记录“隐藏”的中间变量,包括参考轨迹点、控制输入量(力矩/推力)和电机转速,用于最终的绘图分析。
可视化逻辑
- 3D绘图:使用
plot3 绘制轨迹,并利用 draw_quadrotor(辅助函数)按一定抽样间隔在轨迹上绘制代表机体的几何图形,展示飞行姿态。 - 曲线分析:分别并在不同子图中展示位置、姿态角度、电机转速和位置误差模,便于评估系统的稳定性与鲁棒性。