MATLAB实战:四旋翼姿态控制仿真方案
以下是一个基于MATLAB/Simulink的四旋翼姿态控制仿真方案。本方案使用简化姿态动力学模型,并设计PID控制器进行稳定控制。
1. 四旋翼姿态动力学模型
核心方程:I * ω̇ + ω × (I * ω) = τ
其中:
-
I = diag([Ixx, Iyy, Izz])
为转动惯量矩阵 -
ω = [p; q; r]
为机体角速度(滚转、俯仰、偏航) -
τ = [τ_ϕ; τ_θ; τ_ψ]
为控制力矩
简化假设:
-
小角度近似(俯仰/滚转 < 15°)
-
忽略陀螺效应(ω × (I * ω) ≈ 0)
-
解耦三轴动力学
各通道独立模型(二阶系统):
Ixx * ϕ̈ = τ_ϕ
Iyy * θ̈ = τ_θ
Izz * ψ̈ = τ_ψ
2. Simulink模型搭建
关键模块:
-
参考信号:Step/Sine Wave模块生成目标角度
-
PID控制器:三通道独立PID控制(参数可调)
-
力矩分配:将控制输出映射为力矩
-
姿态动力学:积分器链实现角速度/角度计算
-
反馈回路:测量角度并反馈
3. PID控制器设计
控制律:
τ = Kp * e + Ki * ∫e dt + Kd * de/dt
-
e = [ϕ_ref - ϕ; θ_ref - θ; ψ_ref - ψ]
为角度误差 -
参数整定方法:Ziegler-Nichols或试错法
推荐初始参数(以俯仰通道为例):
Iyy = 0.1; % 俯仰惯量 (kg·m²)
Kp = Iyy * 25; % 比例增益 (e.g., 2.5)
Ki = Iyy * 10; % 积分增益 (e.g., 1.0)
Kd = Iyy * 8; % 微分增益 (e.g., 0.8)
4. 完整MATLAB/Simulink实现
参数初始化脚本 (init_params.m
):
%% 物理参数
Ixx = 0.1; % 滚转惯量 (kg·m²)
Iyy = 0.1; % 俯仰惯量 (kg·m²)
Izz = 0.2; % 偏航惯量 (kg·m²)
g = 9.81; % 重力加速度%% PID参数(滚转通道示例)
Kp_phi = Ixx * 25;
Ki_phi = Ixx * 10;
Kd_phi = Ixx * 8;%% 仿真参数
Ts = 0.01; % 采样时间
Tfinal = 10; % 仿真时长
-
完整三轴模型:
-
复制上述结构到滚转/偏航通道
-
添加Scope模块监视角度响应
-
轨迹跟踪示例(添加信号生成器):
% 在MATLAB命令窗口生成圆形轨迹
t = 0:0.1:10;
phi_ref = sin(0.5*t); % 滚转正弦波
theta_ref = cos(0.5*t); % 俯仰余弦波
psi_ref = 0.1*t; % 偏航斜坡
5. 仿真结果分析
悬停控制(初始角度10°):
-
上升时间:< 1.5 s
-
超调量:< 5%
-
稳态误差:≈0°
轨迹跟踪性能:
-
正弦跟踪相位滞后:< 15°
-
稳态跟踪误差:< 2°