1. 四轴飞行器系统概述
四轴飞行器作为一种典型的欠驱动系统,其核心控制原理建立在精确的数学模型基础上。这种飞行器通过四个旋翼的差速控制实现六自由度运动,具有结构简单、机动性强等特点,在航拍、巡检等领域有广泛应用。
注意:四轴飞行器的欠驱动特性意味着它仅有四个控制输入(四个电机的转速),却需要控制六个自由度(位置x,y,z和姿态角φ,θ,ψ),这使得其控制算法设计极具挑战性。
2. 数学建模详解
2.1 坐标系定义
首先需要建立两个坐标系:
- 地面惯性坐标系(O-XYZ):固定在地面,Z轴垂直向上
- 机体坐标系(o-xyz):固定在飞行器上,x轴指向机头方向
两坐标系间的转换通过欧拉角(φ,θ,ψ)描述,转换顺序通常为Z-Y-X(偏航-俯仰-滚转)。
2.2 动力学方程推导
2.2.1 平移运动方程
在惯性坐标系下,飞行器受到的总升力F和重力mg共同作用:
code复制m·a = R·F_total - m·g
其中:
- m为飞行器质量
- R为从机体坐标系到惯性坐标系的旋转矩阵
- F_total = [0; 0; ΣFi]^T 为四个旋翼产生的总升力
- g = [0; 0; g]^T 为重力加速度向量
展开后得到:
code复制ẍ = (sinψ·sinφ + cosψ·sinθ·cosφ)·U1/m
ÿ = (-cosψ·sinφ + sinψ·sinθ·cosφ)·U1/m
z̈ = (cosθ·cosφ)·U1/m - g
其中U1 = ΣFi为总升力控制量。
2.2.2 旋转运动方程
根据欧拉方程,角运动满足:
code复制I·ω̇ + ω×(I·ω) = τ
其中:
- I为惯性矩阵
- ω为角速度向量
- τ = [τφ; τθ; τψ]^T 为控制力矩
具体到四轴飞行器,力矩与升力的关系为:
code复制τφ = l(F2 - F4) // 滚转力矩
τθ = l(F1 - F3) // 俯仰力矩
τψ = κ(F1 - F2 + F3 - F4) // 偏航力矩
其中l为力臂长度,κ为反扭矩系数。
2.3 模型线性化
在实际控制中,通常在小角度假设下对模型进行线性化:
- 假设φ,θ≈0 ⇒ sin(·)≈·, cos(·)≈1
- 忽略高阶耦合项
得到简化模型:
code复制ẍ ≈ θ·g
ÿ ≈ -φ·g
z̈ ≈ U1/m - g
φ̈ ≈ U2/Ixx
θ̈ ≈ U3/Iyy
ψ̈ ≈ U4/Izz
3. Simulink仿真实现
3.1 仿真模型架构
完整的仿真模型应包含以下子系统:
- 控制器模块(PID或更高级算法)
- 动力学模型模块
- 环境扰动模块
- 传感器模拟模块
- 可视化模块
3.2 核心模块实现
3.2.1 动力学模块
使用S-Function实现完整的非线性动力学方程:
matlab复制function [sys,x0,str,ts] = quad_dynamics(t,x,u,flag)
switch flag
case 0 % 初始化
sizes = simsizes;
sizes.NumContStat
