航空沙盒 ✈️
作者:Peter Sharpe(<pds [at] mit [dot] edu>)
AeroSandbox 是一个 Python 包,可帮助您设计和优化飞机和其他工程系统。
从本质上讲,AeroSandbox 是一个优化套件,它将熟悉的 NumPy 语法的易用性与现代自动微分的强大功能结合在一起。
这种自动微分极大地提高了大型问题的优化性能:具有数万个决策变量的设计问题在笔记本电脑上只需几秒钟即可解决。 AeroSandbox 还附带数十个端到端可微分的航空物理模型,使您可以同时优化飞机的空气动力学、结构、推进、任务轨迹、稳定性等。
保持 AeroSandbox 易于学习和使用是首要任务。复杂性是可选的- 您可以在有帮助的情况下使用 AeroSandbox 的内置物理模型,也可以添加您自己的任意自定义物理模型。
pip install aerosandbox[full]
使用 AeroSandbox 设计和优化整架飞机:
SEAWAY-Mini(太阳能电动、翼展 13 英尺的水上飞机) |
使用 AeroSandbox 支持现实世界的飞机开发项目,从您的第一个草图到您的首次飞行及以后:
2020 年春季 AeroSandbox 中的Dawn(用于气候科学研究的太阳能电动飞机)的初始概念草图 + 尺寸调整 |
(Electra.aero 通过出色的工程设计和协调进行了大量的构建工作!) |
使用 AeroSandbox 探索违反直觉的复杂设计权衡,所有这些都是在概念设计的最早阶段,这些见解发挥最大作用:
探索如果我们添加高度限制,Firefly (一款 0.8 马赫的火箭无人机)的任务范围会如何变化,同时优化飞机设计和轨迹 |
考虑非设计性能,探索航空公司机队需要多少架 LH2 飞机来覆盖市场 |
使用 AeroSandbox 作为纯粹的空气动力学工具包:
在许多其他学科中:
复合材料管梁的结构优化 |
|
轻松地将 AeroSandbox 与所有您喜爱的工具连接:
其他概念设计工具(AVL、XFLR5、XFoil、ASWING、MSES 等) |
通过 STEP 导出的 CAD 工具(SolidWorks、Fusion 360 等) (也支持STL、OBJ等) |
用户提供的模型+代码(用于定制空气动力学、结构、推进力或其他任何东西 - 例如,用于优化通过概率风场的飞行,如下所示) |
或者,完全抛弃所有特定于飞机设计的代码,并使用 AeroSandbox 纯粹作为优化求解器或作为非线性方程组(或 ODE、或 PDE)的求解器:
指定 Falkner Skan ODE(非线性、三阶 BVP),并让 AeroSandbox 自动处理离散化、求解甚至逆求解。 |
还有很多很多。最重要的是,可以任意组合这些工具,而不会损失优化速度,也不需要任何繁琐的导数数学,这一切都归功于 AeroSandbox 的端到端自动微分能力。
简而言之:
-
pip install aerosandbox[full]
完成安装。 -
pip install aerosandbox
用于具有最小依赖性的轻量级(无头)安装。包括所有优化、数值和物理模型,但跳过可选的可视化依赖项。
有关更多安装详细信息(例如,如果您是 Python 新手),请参阅此处。
要开始使用,请查看此处的教程文件夹!所有教程都可以在浏览器中查看,或者您可以通过克隆此存储库将它们作为 Jupyter 笔记本打开。
有关 AeroSandbox 的更详细和理论性的介绍,请参阅这篇论文。
有关 AeroSandbox 模块的更详细的开发人员级别描述,请参阅开发人员自述文件。
有关完整详细的 API 文档,请参阅文档网站。
您可以使用内置help()
函数(例如help(asb.Airplane)
)打印任何 AeroSandbox 对象的文档和示例。 AeroSandbox 代码也在源代码中进行了广泛的记录,并包含数百个单元测试示例,因此检查源代码也很有用。
最后一点需要注意:AeroSandbox 的所有输入和输出均以基本 SI 单位或其派生单位表示(例如,米、千克、秒、N、m/s、J、Pa)。由于该单位制是连贯的,因此可以在没有任何比例因子的情况下转换大量的数量。这提高了可读性并减少了错误的可能性。
SI 无处不在的规则只有两个例外:
-
如果变量名称的后缀中注明了替代单位。例如:
battery_capacity
→ 焦耳battery_capacity_watt_hours
→ 瓦时aircraft_endurance
→ 秒aircraft_endurance_hours
→ 时间
-
根据长期的航空航天惯例,攻角 (
alpha
, α) 和侧滑角 ( , β) 以度为单位。beta
所有其他角度和角速率均使用弧度。
此外,为了防止函数输入和输出的单位出现任何混淆,所有函数文档字符串中都会列出单位。
如果您想使用其他单位,请考虑使用aerosandbox.tools.units
轻松转换。
请随时加入 AeroSandbox 的开发 - 我们始终欢迎贡献!如果您想要进行更改,最简单的方法是提交拉取请求。
该文本文件CONTRIBUTING.md
为开发人员和高级用户提供了更多详细信息。
如果您已经添加了一些内容并希望参与更长期的工作,请给我留言!联系信息可以在本自述文件顶部附近我的名字旁边找到。
如果您喜欢这个软件,请考虑通过 PayPal 或GitHub 赞助商捐赠以支持开发!收益将用于为研究生提供更多咖啡。
请通过创建新问题来报告所有错误!
AeroSandbox 松散地使用语义版本控制,这应该让您了解是否可以从任何给定的更新中获得向后兼容性和/或新功能。
有关更多详细信息,请参阅变更日志。
如果您发现 AeroSandbox 在研究出版物中有用,请使用以下 BibTeX 片段引用它:
@mastersthesis{aerosandbox, title = {AeroSandbox: A Differentiable Framework for Aircraft Design Optimization}, author = {Sharpe, Peter D.}, school = {Massachusetts Institute of Technology}, year = {2021} }
商业用户:如果这个包被证明有帮助,我非常乐意讨论主动 AeroSandbox 支持的咨询工作 - 使用本自述文件标题中的电子邮件地址进行联系。
麻省理工学院许可证适用,完整条款见此处。简而言之:将 AeroSandbox 用于您想要的任何用途(商业或非商业)。 AeroSandbox 发布的目的是希望它有用,但不提供任何适销性保证(无论明示或暗示)。
如果您使用 AeroSandbox,请注明出处。