高级提升拖曳 (AVL) 自动化工具
仿真场景Gazebo 高级平面 载具模型使用 高级提升阻力 用于模拟载具升力和阻力行为的插件。通过该工具,您可以计算创建载具升力和阻力模型所需的参数。 高级提升阻力 为自己的特定载具添加插件。
您只需为每个翼片提供几个参数,该工具就会利用这些信息调用雅典娜晶格旋涡(AVL)进行必要的计算。计算结果将自动写入提供的插件模板,然后可以复制粘贴到模型或世界 sdf 文件中。
安装
设置工具
从以下地址下载 AVL 3.36 https://web.mit.edu/drela/Public/web/avl/.AVL 3.36 版的文件可以在页面的一半处找到。
下载后,解压缩 AVL 并将其移至主目录:
吁苏都 卷烟 -xf avl3.36.tgz mv ./Avl /home/
按照 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
.
为您的飞机运行工具:
复制示例
input.yml
至<your_custom_yaml_file>.yml
并将其修改为符合您所需的平面在 yml 文件中运行该工具:
吁蟒蛇 input_avl.py <;您的自定义 yaml_file>;.yml
请注意
yaml
和参数
包必须存在于 Python 环境中。该工具会提示您输入一系列载具特定参数,以指定平面的几何形状和物理特性。您可以选择
- 选择一个已知控制面数量的预定义模型模板(如塞斯纳飞机或 VTOL 飞机),只需修改一些物理特性,或
- 定义完全自定义的模型
执行脚本后,生成的 .avl
, .sdf
以及建议的控制面图可参见 <your-plane-name>;
目录下。sdf 文件是生成的高级升降拖拽插件,可以复制并粘贴到 model.sdf 文件中,然后在 Gazebo 中运行。
功能性
input_avl.py 文件获取用户提供的参数,并从中创建一个 AVL(程序)可以读取的 .avl 文件。这发生在 process.sh 锉刀
AVL 生成的输出将保存在两个文件中: custom_vehicle_body_axis_derivatives.txt 和 custom_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 中的名称 | 高级提升拖拽插件中的名称 | 说明 |
---|---|---|
阿尔法 | 阿尔法 | 攻角 |
Cmtot | Cem0 | 零迎角时的俯仰力矩系数 |
CLtot | CL0 | 零迎角时的升力系数 |
CDtot | CD0 | 零迎角时的阻力系数 |
CLa | CLa | dCL/da(CL-α曲线斜率) |
CYa | CYa | dCy/da(相对于阿尔法的侧向力斜率) |
Cla | 细胞 | dCl/da(相对于阿尔法的滚动力矩斜率) |
Cma | Cema | dCm/da (相对于 aLpha 的俯仰力矩斜率 - 失速前) |
Cna | 塞纳 | dCn/da(相对于 alpha 的偏航力矩斜率) |
CLb | CLb | dCL/dbeta(相对于 beta 值的升力系数斜率) |
CYb | CYb | dCY/dbeta(相对于 beta 的侧向力斜率) |
Clb | 细胞 | dCl/dbeta(相对于 beta 值的滚动力矩斜率) |
Cmb | Cemb | dCm/dbeta(俯仰力矩斜率相对于贝塔值) |
Cnb | Cenb | dCn/dbeta(偏航力矩斜率相对于贝塔值) |
从体轴导数日志文件中提取了以下高级升力阻力插件参数:
AVL 中的名称 | 高级提升拖拽插件中的名称 | 说明 |
---|---|---|
e | 功效 | 机翼效率(三轴机翼的奥斯瓦尔德效率系数) |
CXp | CDp | dCD/dp(相对于滚动率的阻力系数斜率) |
CYp | CYp | dCY/dp(侧向力斜率与滚动率的关系) |
CZp | CLp | dCL/dp(相对于滚动率的升力系数斜率) |
Clp | 手机 | dCl/dp(相对于滚动速率的滚动力矩斜率) |
Cmp | Cemp | dCm/dp(俯仰力矩斜率与滚动率的关系) |
Cmp | Cenp | dCn/dp(相对于滚动率的偏航力矩斜率) |
CXq | CDq | dCD/dq(阻力系数相对于俯仰速率的斜率) |
CYq | CYq | dCY/dq(侧向力斜率与俯仰速率的关系) |
CZq | CLq | dCL/dq(升力系数相对于俯仰速率的斜率) |
Clq | 单元格q | dCl/dq(相对于俯仰速率的滚动力矩斜率) |
Cmq | Cemq | dCm/dq(俯仰力矩斜率与俯仰速率的关系) |
Cnq | Cenq | dCn/dq(相对于俯仰速率的偏航力矩斜率) |
CXr | CDr | dCD/dr(相对于偏航率的阻力系数斜率) |
CYr | CYr | dCY/dr(相对于偏航率的侧向力斜率) |
CZr | CLr | dCL/dr(相对于偏航率的升力系数斜率) |
Clr | Cellr | dCl/dr(相对于偏航率的滚动力矩斜率) |
Cmr | 墓园 | dCm/dr(相对于偏航率的俯仰力矩斜率) |
中心 | Cenr | dCn/dr(相对于偏航率的偏航力矩斜率) |
此外,每个控制面板都有六个自己的参数,这些参数也来自该日志文件。 {i}
下面的范围从 1 到模型中唯一控制面类型的数量。
AVL 中的名称 | 高级提升拖拽插件中的名称 | 说明 |
---|---|---|
CXd | CD_ctrl | 控制面偏转对阻力的影响 |
CYd | CY_ctrl | 控制面偏转对侧向力的影响 |
CZd | CL_ctrl | 控制面偏转对升力的影响 |
Cld | Cell_ctrl | 控制面挠度对滚动力矩的影响 |
指令 | Cem_ctrl | 控制面偏转对俯仰力矩的影响 |
Cnd | Cen_ctrl | 控制面偏转对偏航力矩的影响 |