Aerospace Blockset 教程:从入门到精通
什么是 Aerospace Blockset?
Aerospace Blockset™ 是 MathWorks 公司(MATLAB 和 Simulink 的开发者)推出的一款基于 Simulink 的专业工具箱,它为航空航天领域的系统级建模、仿真和分析提供了预先构建的、经过验证的库和参考应用。

核心价值:
- 模块化建模: 无需从零开始编写复杂的数学方程,可以直接通过拖拽封装好的模块来搭建飞机、火箭、卫星、制导炸弹等航空航天系统的模型。
- 高保真度环境: 包含了大气模型、重力模型、风场模型、坐标系转换、飞行器六自由度动力学等关键模块,能够精确模拟飞行器在真实环境中的行为。
- 标准与规范: 内置了标准的坐标系(如 NED, ECEF, ECI)、单位制和大气模型(如 US Standard 1976),符合行业规范,便于团队协作和模型验证。
- 快速原型设计: 可以快速构建控制律、导航算法、任务规划等算法的模型,并与飞行器动力学模型进行联合仿真,加速开发流程。
- 从设计到测试: 模型可以无缝衔接到其他 MathWorks 工具,如用于代码生成的 Simulink Coder、用于硬件在环测试的 HDL Coder 和 Testbench,以及用于飞行数据分析的 Aerospace Toolbox。
核心概念与库介绍
在开始建模之前,必须理解 Aerospace Blockset 的几个核心概念和常用库。
坐标系
这是航空航天仿真的基石,Aerospace Blockset 提供了强大的坐标系转换功能,几乎所有模块都允许你指定输入和输出的坐标系。
- NED (North-East-Down): 东北天坐标系,原点在飞行器,X指北,Y指东,Z向下,常用于飞机近地飞行。
- ECEF (Earth-Centered Earth-Fixed): 地心地固坐标系,原点在地球质心,随地球自转,常用于全球定位和导航。
- ECI (Earth-Centered Inertial): 地心惯性坐标系,原点在地球质心,不随地球自转,常用于轨道计算和天体力学。
- Body (机体坐标系): 固定在飞行器上,X轴通常沿机身轴线指向前,Y轴右翼,Z轴向下,用于描述飞行器的姿态和角速度。
关键模块:Axes Transformations 库,包含了各种坐标系之间的转换模块,如 ECI to ECF,ECEF to NED,Quat to DCM 等。

大气与重力模型
- 大气模型: 提供了标准大气模型(如
ISA Atmosphere (COESA)),可以根据高度计算空气密度、温度、声速等,对计算升力和阻力至关重要。 - 重力模型: 提供了简单的点质量模型和更精确的
WGS84 Gravity模型,后者考虑了地球的椭球形状,用于精确的轨道和弹道计算。
飞行器动力学
这是最核心的部分,通常使用 六自由度 (6-DOF) 模型 来描述飞行器的运动。
6DOF (Euler Angles): 使用欧拉角来描述姿态,模块直接输出位置、速度、姿态角和角速度,这是最直观的模型,但存在万向节锁问题。6DOF (Quaternion): 使用四元数来描述姿态,避免了万向节锁,是现代航空航天仿真的标准选择,模块输出四元数,需要通过Quat to DCM或Quat to Euler模块转换为姿态角用于显示。
关键模块: 在 Aircraft Dynamics 库中可以找到这些预制好的动力学模块。
传感器与执行器
- 传感器: 模拟真实传感器的特性,如
GPS、IMU (惯性测量单元)、Altimeter、Airspeed Indicator等,这些模块通常会加入噪声和延迟,使仿真更贴近现实。 - 执行器: 模拟舵面、发动机推力等,如
Aerodynamic Forces and Moments、Engine Thrust。
一个完整的建模与仿真工作流程
下面我们通过一个经典案例——“飞机自动着陆”,来演示一个完整的工作流程。
步骤 1:目标定义
我们要仿真一架飞机在进近阶段,如何通过自动驾驶系统跟踪一条预设的下滑道,最终安全着陆。
步骤 2:环境搭建
- 创建新模型: 打开 Simulink,新建一个模型。
- 添加环境模块:
- 从
Aerospace Blockset > Environment库中,拖拽一个ISA Atmosphere (COESA)模块。 - 从
Environment库中,拖拽一个WGS84 Gravity模块。 - 这些模块为整个仿真提供了标准的大气和重力环境。
- 从
步骤 3:飞行器建模
- 添加动力学模型:
- 从
Aerospace Blockset > Aircraft Dynamics库中,拖拽一个6DOF (Quaternion)模块,这是我们的飞机“本体”。
- 从
- 配置动力学模型:
- 双击
6DOF (Quaternion)模块,在弹出的参数对话框中,你需要提供飞机的质量、惯性矩阵、参考面积、翼展等气动参数,这些数据通常来自飞机的设计手册或风洞试验。 - 在 Input 选项卡中,确保输入端口
Aerodynamic forces和Applied forces被勾选,用于接收我们后续计算的气动力和发动机推力。
- 双击
步骤 4:控制律设计
- 建立控制器:
- 使用 Simulink 的基础模块(如
Sum,Gain,PID Controller,Transfer Function)搭建一个简单的 PID 控制器。 - 控制目标: 控制飞机的俯仰角,使其跟踪下滑道所需的下滑角。
- 输入: 飞机的当前高度和速度(可以从
6DOF模块的输出端获取)与期望的高度/航迹角之间的误差。 - 输出: 产生的舵面偏转指令(如升降舵偏角
elevator)和油门指令。
- 使用 Simulink 的基础模块(如
步骤 5:气动与推进系统建模
- 计算气动力和力矩:
- 从
Aerospace Blockset > Aerodynamics库中,拖拽一个Aerodynamic Forces and Moments模块。 - 将控制律输出的舵面偏角和攻角(由
6DOF输出计算得到)连接到该模块的输入端。 - 该模块会根据当前飞行状态(高度、速度、攻角、侧滑角等)和舵面偏角,计算出作用在飞机上的升力、阻力、侧向力和滚转、俯仰、偏航力矩。
- 从
- 计算推力:
- 使用一个简单的
Gain模块或Lookup Table来模拟发动机推力,推力的大小由油门指令控制。
- 使用一个简单的
步骤 6:系统集成与仿真
- 连接模块:
- 将
Aerodynamic Forces and Moments和Thrust模块的输出,连接到6DOF (Quaternion)模块的Aerodynamic forces和Applied forces输入端。 - 将
6DOF模块的输出(位置、速度、姿态、角速度)连接到控制器的输入端,形成一个闭环系统。 - 将
ISA Atmosphere和WGS84 Gravity模块的输出连接到6DOF模块对应的环境输入端。
- 将
- 设置仿真参数:
- 设置仿真时间(300 秒)和求解器(建议使用
ode4 (Runge-Kutta)或ode45)。 - 在
6DOF模块的初始条件中,设置飞机的初始位置(经度、纬度、高度)、初始速度和初始姿态。
- 设置仿真时间(300 秒)和求解器(建议使用
- 运行仿真:
点击“运行”按钮。
步骤 7:结果分析与可视化
- 使用 Scope: 添加
Scope模块,连接到感兴趣的信号,如高度、速度、俯仰角、攻角等,观察其随时间的变化。 - 使用 Aerospace Toolbox 可视化:
这是最强大的可视化方式,确保你安装了 Aerospace Toolbox。
