跳至内容

高级提升拖曳 (AVL) 自动化工具

仿真场景Gazebo 高级平面 载具模型使用 高级提升阻力 用于模拟载具升力和阻力行为的插件。通过该工具,您可以计算创建载具升力和阻力模型所需的参数。 高级提升阻力 为自己的特定载具添加插件。

您只需为每个翼片提供几个参数,该工具就会利用这些信息调用雅典娜晶格旋涡(AVL)进行必要的计算。计算结果将自动写入提供的插件模板,然后可以复制粘贴到模型或世界 sdf 文件中。

安装

设置工具

  1. 从以下地址下载 AVL 3.36 https://web.mit.edu/drela/Public/web/avl/.AVL 3.36 版的文件可以在页面的一半处找到。

  2. 下载后,解压缩 AVL 并将其移至主目录:

    苏都 卷烟 -xf avl3.36.tgz
    mv ./Avl /home/
  3. 按照 index.md./Avl 以完成 AVL 的设置过程(这需要您设置 plotlib电子包装 库)。我们建议使用 gfort 编译选项,可能还需要安装 gfort.在 Ubuntu 上可以通过运行

    苏都 适切 更新
    苏都 适切 安装 gfort

    运行 AVL 的 Makefile 时,可能会遇到一个 错误 1 消息,说明缺少一个目录。就我们的目的而言,这并不妨碍 AVL 工作。

一旦完成 AVL README 中描述的过程,即可使用 AVL。AVL 或工具方面无需进一步设置。

如果您想移动 AVL 目录的位置,只需将 --avl_path 标志到 input_avl.py 文件,为标志使用所需的目录位置(别忘了在路径的最后部分后面加上 "/")。在必要时,运行此程序还会自动调整路径。

运行 AVL

提供了一个模板示例,其形式为 input.yml 实现了一架带有两个副翼、一个升降舵和一个方向舵的标准飞机。该示例模板可使用 python input_avl.py --yaml_file input.yml.

为您的飞机运行工具:

  1. 复制示例 input.yml<your_custom_yaml_file>.yml 并将其修改为符合您所需的平面

  2. 在 yml 文件中运行该工具:

    蟒蛇 input_avl.py <;您的自定义 yaml_file>;.yml

    请注意 yaml参数 包必须存在于 Python 环境中。

  3. 该工具会提示您输入一系列载具特定参数,以指定平面的几何形状和物理特性。您可以选择

    • 选择一个已知控制面数量的预定义模型模板(如塞斯纳飞机或 VTOL 飞机),只需修改一些物理特性,或
    • 定义完全自定义的模型

执行脚本后,生成的 .avl, .sdf 以及建议的控制面图可参见 <your-plane-name>; 目录下。sdf 文件是生成的高级升降拖拽插件,可以复制并粘贴到 model.sdf 文件中,然后在 Gazebo 中运行。

功能性

input_avl.py 文件获取用户提供的参数,并从中创建一个 AVL(程序)可以读取的 .avl 文件。这发生在 process.sh 锉刀

AVL 生成的输出将保存在两个文件中: custom_vehicle_body_axis_derivatives.txtcustom_vehicle_stability_derivatives.txt.这两个文件包含填充高级提升拖拽插件所需的参数。

最后 avl_out_parse.py 读取生成的 .txt 文件,并将参数分配给 sdf 中的正确元素。

生成的高级升降拖动插件 (<custom_plane>.sdf) 可以复制到特定的 model.sdf Gazebo 使用的文件。

可用性

目前的实施提供了一个最基本的工作示例。根据所需的偏好调整所选的跨度和弦涡数量,可以获得更精确的测量结果。在这里可以找到一个很好的起点: https://www.redalyc.org/pdf/6735/673571173005.pdf.

使用更多的截面也可以更精确地模拟载具。在当前的 .yml 文件中,每个曲面只定义了左边缘和右边缘,因此只有一个截面,但代码支持将其扩展为任意数量的截面。

信息

  • AVL 中的控制面总是从左到右定义的。这意味着您需要首先提供曲面的左边缘,然后再提供右边缘。如果反过来做,曲面的定义基本上会颠倒。
  • 该工具在设计上最多只能支持一辆车的两个控制面。如果控制面超过两个,则可能导致错误行为。
  • 还有一点很重要,这些脚本使用了匹配、大小写语法,而 Python 在 3.10 版本中才引入了这种语法。
  • 有关反载具地雷的主要参考资料可在以下网站找到 https://web.mit.edu/drela/Public/web/avl/AVL_User_Primer.pdf.该文件由 AVL 创建者撰写,包含定义控制面时可能需要的所有变量。
  • AVL 无法预测失速值,因此需要以其他方式计算/估计失速值。在当前实施中,默认失速值取自 PX4'Advanced Plane。对于新的/不同的机型,这些默认值自然应该更改。

参数分配

下面列出了输出时如何分配参数以及这些参数取自 AVL 中的哪些文件。高级 Lift Drag 插件包含有关这些参数作用的更多详细信息。

信息

这些参数未经专家验证,因此应在插件中进行检查。

从稳定性导数日志文件中提取了以下高级升力阻力插件参数:

AVL 中的名称高级提升拖拽插件中的名称说明
阿尔法阿尔法攻角
CmtotCem0零迎角时的俯仰力矩系数
CLtotCL0零迎角时的升力系数
CDtotCD0零迎角时的阻力系数
CLaCLadCL/da(CL-α曲线斜率)
CYaCYadCy/da(相对于阿尔法的侧向力斜率)
Cla细胞dCl/da(相对于阿尔法的滚动力矩斜率)
CmaCemadCm/da (相对于 aLpha 的俯仰力矩斜率 - 失速前)
Cna塞纳dCn/da(相对于 alpha 的偏航力矩斜率)
CLbCLbdCL/dbeta(相对于 beta 值的升力系数斜率)
CYbCYbdCY/dbeta(相对于 beta 的侧向力斜率)
Clb细胞dCl/dbeta(相对于 beta 值的滚动力矩斜率)
CmbCembdCm/dbeta(俯仰力矩斜率相对于贝塔值)
CnbCenbdCn/dbeta(偏航力矩斜率相对于贝塔值)

从体轴导数日志文件中提取了以下高级升力阻力插件参数:

AVL 中的名称高级提升拖拽插件中的名称说明
e功效机翼效率(三轴机翼的奥斯瓦尔德效率系数)
CXpCDpdCD/dp(相对于滚动率的阻力系数斜率)
CYpCYpdCY/dp(侧向力斜率与滚动率的关系)
CZpCLpdCL/dp(相对于滚动率的升力系数斜率)
Clp手机dCl/dp(相对于滚动速率的滚动力矩斜率)
CmpCempdCm/dp(俯仰力矩斜率与滚动率的关系)
CmpCenpdCn/dp(相对于滚动率的偏航力矩斜率)
CXqCDqdCD/dq(阻力系数相对于俯仰速率的斜率)
CYqCYqdCY/dq(侧向力斜率与俯仰速率的关系)
CZqCLqdCL/dq(升力系数相对于俯仰速率的斜率)
Clq单元格qdCl/dq(相对于俯仰速率的滚动力矩斜率)
CmqCemqdCm/dq(俯仰力矩斜率与俯仰速率的关系)
CnqCenqdCn/dq(相对于俯仰速率的偏航力矩斜率)
CXrCDrdCD/dr(相对于偏航率的阻力系数斜率)
CYrCYrdCY/dr(相对于偏航率的侧向力斜率)
CZrCLrdCL/dr(相对于偏航率的升力系数斜率)
ClrCellrdCl/dr(相对于偏航率的滚动力矩斜率)
Cmr墓园dCm/dr(相对于偏航率的俯仰力矩斜率)
中心CenrdCn/dr(相对于偏航率的偏航力矩斜率)

此外,每个控制面板都有六个自己的参数,这些参数也来自该日志文件。 {i} 下面的范围从 1 到模型中唯一控制面类型的数量。

AVL 中的名称高级提升拖拽插件中的名称说明
CXdCD_ctrl控制面偏转对阻力的影响
CYdCY_ctrl控制面偏转对侧向力的影响
CZdCL_ctrl控制面偏转对升力的影响
CldCell_ctrl控制面挠度对滚动力矩的影响
指令Cem_ctrl控制面偏转对俯仰力矩的影响
CndCen_ctrl控制面偏转对偏航力矩的影响