社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

邓小刚院士:战斗机机动飞行仿真新突破:结合机器学习的数值虚拟飞行方法 | 顶刊阅读 PoF

小白学视觉 • 5 月前 • 189 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文由CFD paper发布,探索AI和ML在CFD中的未来应用。关注我们,深入了解科技如何塑造我们的世界。

大家好!今天给大家带来的论文的题目是《Numerical virtual flight investigation for longitudinal maneuver of a generic fighter based on machine learning》,作者包括 Lang Yan, Xinghua Chang, Nianhua Wang, Laiping Zhang, Wei Liu 和 Xiaogang Deng。该论文发表在《Physics of Fluids》期刊上,主要研究了基于机器学习的通用战斗机纵向机动的数值虚拟飞行技术。以下是对论文内容的详细介绍:

背景知识

  • 超机动性是衡量新一代战斗机的标准之一,能够在空战中提供显著优势。但在机动飞行中,攻角、角速度和角加速度的快速变化会导致气动、动力学、结构和控制等多学科的复杂耦合现象,这些现象具有强耦合、非稳态、非线性和难以控制的特点,容易导致飞行中的非指令自激振动等问题,最终可能导致战斗机失控。
  • 虚拟飞行测试的概念由美国的 Arnold Engineering Development Center (AEDC) 在 1990 年代提出,通过风洞设备模拟飞行器的动态飞行过程。但这种方法存在一些限制,如风洞设备的大小限制了只能进行缩比模型测试,风洞壁的干扰与高空无边界的实际飞行不同,支撑机构无法完全保证飞行器的 6 自由度运动等。
  • 数值虚拟飞行(NVF)技术结合了计算流体动力学(CFD)、刚体动力学(RBD)和飞行控制系统(FCS),能够模拟飞行器的机动飞行过程,揭示流场机制和稳定性与控制特性。但目前对于多自由度和多个控制参数下的闭环控制的研究还相对较少。

研究方法

  • 数值方法:论文中采用了标准动力学模型(SDM)作为几何模型,该模型基于 F-16 平台,包括细长的边条三角翼、水平和垂直安定面、腹鳍和封闭的进气道。定义了三个坐标系:地固坐标系、惯性坐标系和体固坐标系。计算网格由背景网格、机身网格和升降舵网格三部分组成,采用重叠网格技术实现升降舵的偏转。使用 MPI 并行计算提高计算性能。
  • 数值虚拟飞行系统:开发了一个集成 CFD、RBD 和 FCS 的 NVF 系统,采用 C++ 编程语言编写。系统架构分为内部和外部组件,内部组件包括数据库、数据容器、并行计算库等,中间层由多个专门模块组成,如 CFD 求解器、网格工厂和 RBD 求解器,顶层负责这些模块的集成框架。外部组件为 FCS 模块,可以与第三方工具集成实现控制算法。采用 Reynolds-averaged Navier–Stokes 方程的任意拉格朗日-欧拉(ALE)形式作为流体流动的控制方程,使用二阶有限体积法离散化,采用 Roe 方案求解无粘通量,中心差分格式计算粘性通量,Green-Gauss 单元基方法求解梯度,Menter 的 k-ω SST 模型模拟湍流流动。
  • 机器学习方法:使用人工神经网络(ANN)进行气动识别和建模,建立战斗机气动系数与飞行状态变量之间的关系。采用深度强化学习(DRL)中的深度确定性策略梯度(DDPG)算法设计战斗机的纵向机动控制律。

A. 几何模型和计算网格

几何模型基于标准动力学模型(SDM),这是一种基于 F-16 平台的通用战斗机配置。该模型包括一个细长的边条三角翼、前缘延伸、水平和垂直安定面、腹鳍以及封闭的进气道。三视图如图 1 所示,关于 SDM 的更多几何信息可以在参考文献 24 中找到。此外,值得注意的是,当前模型与参考信息之间存在一些细微差异。战斗机的质量为 9295 kg,其质心位于距离机头 58.32% 处(即平均气动弦长的 35%)。绕质心的俯仰运动的转动惯量为 85552 kg·m²。

在本研究中,定义了三个坐标系,如图 2 所示。第一个是地固坐标系,其原点位于地面上的一点,X 轴与战斗机的中心轴平行并指向尾部,Y 轴垂直于水平面并向上指,Z 轴根据右手定则定义,在 XOY 平面上水平向左指。第二个是惯性坐标系,其原点位于战斗机的头部,x 轴水平向前指向来流,y 轴水平向右并垂直于战斗机的对称平面,z 轴同样根据右手定则定义,垂直向下指。第三个是体固坐标系,其原点位于战斗机的质心。在初始时刻,各轴的方向与惯性坐标系相同。当战斗机机动时,体固坐标系随战斗机移动。几何模型、网格和等值线在地固坐标系(O-XYZ)中显示。战斗机的力、位移、姿态角、速度和角速度在惯性坐标系(O-xyz)中跟踪,而力矩则在体固坐标系(O-xbybzb)中考虑。

计算网格由三部分组成:背景网格、机身网格和升降舵网格。背景网格是一个半径扩展到 200 m 的球形区域,以消除远场边界条件的影响。机身网格和升降舵网格由包含它们实体表面的周围区域组成。在从实体表面生成边界层棱柱网格时,第一层的高度为 3.2×10⁻⁶ m,以确保 y⁺ 接近 1。然后,向外推进 35 层,增长因子为 1.25,剩余空间用金字塔形或四面体网格填充。最终网格以重叠的方式组装。当战斗机机动时,采用刚体动态网格方法实现网格随战斗机的运动,而升降舵的偏转则通过重叠网格技术实现。图 3 展示了一些网格的细节。此外,采用消息传递接口(MPI)并行计算进行高性能计算。因此,每个网格被划分为多个子区域,表 I 展示了每个网格的划分信息。最后,网格总共被划分为 1600 个区域,每个区域平均大约有 26000 个网格单元。

B. 数值虚拟飞行系统

战斗机的机动飞行涉及多个学科的耦合,包括气流、刚体运动、飞行控制,甚至结构变形和推进系统。为了实现受控的机动飞行,开发了一个集成 CFD、RBD 和 FCS 的内部 NVF 系统。该系统采用 C++ 编程语言编写,其架构设计如图 4 所示。系统架构分为内部和外部组件。内部组件的基本层包括用于存储计算参数(例如,迭代步数、来流条件)的数据库、用于存储网格数据和流场变量的数据容器,以及支持并行计算的库、数学函数库等。在此基础上,中间层由几个专门模块组成。值得注意的是,CFD 求解器负责模拟非稳态流场并提供必要的气动数据。此外,网格工厂管理网格变形和运动,而 RBD 求解器处理刚体运动的动力学。顶层旨在协调这些模块的集成框架。它通过设置参数解决各种跨学科耦合问题。此外,FCS 模块被归类为外部组件,能够与内部组件接口。其外部指定的原因是使其能够与第三方工具集成以实现控制算法的实施,从而避免与现有系统基础设施的兼容性问题。关于 NVF 系统的更多信息可以在参考文献 27 中找到。在本研究中,流体流动的控制方程是任意拉格朗日-欧拉(ALE)形式的 Reynolds-averaged Navier–Stokes 方程。采用基于单元的二阶有限体积法离散化控制方程。无粘通量采用 Roe 方案求解,而粘性通量则采用二阶中心差分格式计算,Green–Gauss 单元基方法用于获取梯度。此外,采用 Menter 的 k–ω SST 模型模拟湍流流动以获得更准确的结果。时间离散化采用双时间步长方法,其中 LU-SGS 方法用于隐式迭代求解内部步骤。战斗机设定在 5000 m 高度以 0.6 的马赫数机动,因此基于单位长度的雷诺数为 8.7×10⁶。

图 5 是 CFD/RBD/FCS 耦合 NVF 系统的流程图。首先,需要生成初始网格并完成重叠网格的组装。然后,模拟初始稳态流场,随后进行 CFD/RBD/FCS 耦合的动态非稳态计算过程。在动态非稳态计算过程中,RBD 求解器负责确定战斗机的位置和姿态。此信息随后传递给网格工厂。在实施反馈控制的情况下,此信息还必须传递给 FCS 模块。接收到此信息后,网格工厂负责更新战斗机及其相关部件(如升降舵)的计算网格。这是通过根据动态网格方法移动网格来实现的。一旦生成了刷新的计算网格,CFD 求解器就开始新一轮的流场计算。然后,将结果以气动力和力矩的形式传递给 RBD 求解器,以启动另一个耦合计算周期。对于 FCS 模块,在从 RBD 求解器接收信息和控制命令后,根据控制律做出响应。最后,将由此响应得出的控制动作传递给网格工厂,以促进反馈控制的实施。此外,对于 CFD/RBD 耦合计算,可以使用松耦合和强耦合方法。图 6 展示了这两种耦合方法的数据交换过程。松耦合方法涉及在一个时间步长内显式推进 CFD 和 RBD 求解器,并在每一步后通过数据交换更新战斗机的运动信息[图 6(a)]。强耦合方法涉及在每一步内使用子迭代方案隐式推进两个求解器,并进行多次信息交换[图 6(b)]。对于战斗机飞行,两种耦合方法都可以满足计算要求。在本研究中,采用二阶隐式欧拉耦合方法进行计算。以下是论文中“C. Machine learning methods”部分的翻译:

C. 机器学习方法

为了在本研究中实现战斗机纵向机动的闭环控制,首先需要通过识别气动数据建立模型,然后基于建立的模型设计闭环控制律。采用人工神经网络(ANN)进行气动识别和建模,而深度强化学习(DRL)用于控制律设计。以下是这两种方法的简要介绍。

ANN 是一种模拟生物神经网络的计算模型,由大量节点或神经元以及连接它们的边组成。每个神经元接收来自其他神经元的输入信号,并通过激活函数将这些信号转换为输出信号,然后传递给其他神经元。通过不断调整神经元之间的连接权重,ANN 可以学习输入和输出之间的映射关系,从而实现分类、预测和识别等任务。在本研究中,利用 ANN 强大的拟合能力建立战斗机气动系数与其状态变量之间的关系。

DRL 是一种结合了深度学习和强化学习强大能力的先进技术,使智能体能够独立学习和做出决策。这种方法利用深度学习算法促进强化学习,使智能体能够持续从环境中收集反馈,并利用此信息调整动作和优化决策结果。本质上,DRL 使用深度神经网络近似值函数或策略函数,使智能体能够在最复杂的环境中进行建模和决策。与传统强化学习算法相比,DRL 具有更高的灵活性和适应性,更擅长处理复杂任务和环境。因此,DRL 已被广泛应用于从游戏智能到机器人控制再到自动驾驶等多个领域。提出了多种高效的 DRL 算法,在本研究中,采用深度确定性策略梯度(DDPG)算法。DDPG 算法的伪代码如算法 1 所示,参考文献 34 提供了更多关于 DDPG 的详细信息。

实验与结果

  • 验证和验证:通过 ONERA M6 翼模型测试案例评估 CFD 求解器的性能,通过翼-梁-挂架分离测试案例测试 CFD/RBD 耦合计算的能力。结果表明,计算结果与实验数据吻合良好,验证了 NVF 系统的可靠性。
  • 气动数据收集:通过强制运动收集战斗机的非稳态气动数据。设计了战斗机的俯仰角和升降舵偏转角的强制运动规律,通过非稳态计算获得不同俯仰角和升降舵偏转角下的战斗机俯仰力矩系数。
  • 基于人工神经网络的气动识别和建模:ANN 输入参数包括俯仰角、升降舵偏转角和俯仰角速度,输出参数为俯仰力矩系数。训练结果显示,ANN 模型能够正确拟合气动力矩系数,没有过拟合现象。
  • 基于深度强化学习的纵向机动控制:在 ANN 模型的基础上进行训练,完成后将控制律转移到 CFD 环境中进行验证。设计了战斗机的俯仰控制律,包括升降舵控制和升降舵与开环推力矢量控制、升降舵与闭环推力矢量控制等不同情况。结果表明,基于 DRL 设计的控制律具有良好的泛化特性,能够在不同的环境中处理不同的情况。

关键结论

  • 该研究展示了机器学习方法在航空器设计和研究中的潜力,尤其是在气动建模和控制方面。通过数值虚拟飞行技术,可以在不进行实际飞行测试的情况下,模拟飞行器的机动飞行过程,大大减少了时间和经济成本,为新型飞行器的研发提供了技术支持。未来的工作将考虑在自由飞行中,使用升降舵、方向舵和副翼控制的战斗机的俯仰、偏航和翻滚机动。

声明

本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/177309
 
189 次点击