一个多功能的模型包,用于各种天气环境下的无人机性能。

drone-awe的Python项目详细描述


无人机AWE:无人机在天气环境中的应用

这个储存库的开发是为了在考虑任务规划的情况下,在广泛的天气和电池条件下推进无人机性能预测的最新技术。在http://dronecon.com上可以找到一个交互式的gui。本自述将解释一般用法以及当前实现的所用模型的基本理论。注意,无人机awe是一项正在进行的工作(请参见未来工作)。本文档将解释后者的一般用法,以及幕后工作的工程理论。

安装

drone awe可以通过两种方式使用:使用http://droneecon.com上的gui,或者直接使用源代码。要直接使用源代码,请使用安装

pipinstalldrone_awe

用法

基本用法

基本功能是通过运行以下命令来实现的:

importdrone_awem=drone_awe.model(args)m.simulate()

其中args是包含模拟参数的字典。注意,对于args中未指定的每个参数,都使用默认值。可以通过将空字典传递到drone_awe.model()方法来运行默认模拟:

importdrone_awem=drone_awe.model({})m.simulate()

带有参数示例值的可设置字典键包括以下项:

{"validation":False,"validationcase":"DiFranco2016","dronename":"dji-Mavic2","batterytechnology":"near-future","stateofhealth":90.0,"startstateofcharge":100.0,"rain":False,"dropsize":1.0,"liquidwatercontent":1.0,"temperature":15.0,"wind":False,"windspeed":10.0,"winddirection":0.0,"relativehumidity":0.0,"mission":{"missionspeed":10.0,"altitude":100.0,"heading":0.0,"payload:0.0},"timestep":1,"plot":True,"xlabel":"missionspeed","ylabel":"power","title":"First_test","simulationtype":"simple","model":"abdilla","xvals":[0,1,2,3,4,5],"weathereffect":"temperature","weathervals":[10,20,30,40]}

这些将在设置中进一步解释。在实例化一个无人机模型对象后,可以通过将输入类变量修改为:

m.input['xlabel']='payload'm.input['validationcase']='Stolaroff2018'

然后必须使用以下命令重新运行模拟:

m.simulate()

绘图

可选布尔值可以设置为在运行时通过运行:

m=drone_awe.model({},plot=True)

当一个无人机模型被实例化时。或者,可以随时设置无人机模型的绘图变量:

m.plot=True

设置

以下小节解释了无人机模型对象的各种设置的使用。

'dronename'

'dronename'必须设置为drone数据库中定义的字符串。要访问包含所有受支持的无人机的字典,请使用以下方法:

droneDictionary=drone_awe.drones

如果无人机数据库中不存在无人机或验证案例,则仍可以通过设置自定义字典来使用:

pipinstalldrone_awe
0

其中dronedictionary是具有以下键的字典:

pipinstalldrone_awe
1

请注意,并非所有参数都需要指定,但如果运行的模拟需要未指定的参数,则模型将不会运行。

'validation''validationcase'

要查看drone_awe模型的验证案例,请将'validation'=true'validation case'设置为验证案例数据库中包含的字符串。要访问包含所有支持的验证案例的字典,请运行以下命令:

pipinstalldrone_awe
2

此外,validationcasedictionary是具有以下格式的字典:

pipinstalldrone_awe
3

用于验证案例的数据可在[2,6-10]中找到。

假定规格

有些规范不是显式可用的,或者需要在运行时进行一些调整。请注意,验证案例的'altitude'设置并不总是已知的,并且默认设置为'0''length''width''height'参数不一定设置为几何精确值;相反,它们的设置使得'length''width'结果位于顶部区域,并且'width''height'结果在无人驾驶飞机的前部区域。

'l/d''propulsiveefficiency'

当模拟固定翼无人机时,当前的模型需要inp升阻比('l/d')和推进系统效率('propulsive efficiency')的UT参数。小型无人机的大致估计值分别为10%和30%,尽管这些值在很大程度上取决于无人机的具体几何结构和推进系统。

需要为drones.py中的每个特定固定翼无人机编辑这些参数。

电池参数

"电池技术"

'batterytechnology'必须设置为以下选项之一:'current''near-future',或'far-future''current'将使用drone.params中指定的当前电池容量。'near-future'根据每年3.5%的电池容量增长预测未来五年的容量。"遥远的未来"预测锂空气电池的电池容量,大约是当前锂空气电池容量的10倍。

'stateofhealth''stateofcharge'

'stateofhealth'是指电池在首次使用时相对于初始容量所包含的容量。100%都是新电池。Lipo电池(最常用的无人机电池)通常在其健康状态降至80-85%时退役。在较低的健康状态下,电池容量会降低,循环充电的速度会更快。

'stateofcharge'是指电池的当前容量水平,其中100%已充满电(无论以前使用过多少电池),0%已耗尽。

天气参数

'dropsize''liquidwatercontent''ranfallrate'

这些参数说明了降雨特性。如果模拟中没有雨,请将其设置为0.0。

'dropsize'指雨滴的直径(假设为球形),单位为米。"液态水含量"指给定体积空气中的水量,单位为kg/m^3。'rainfall rate'是以毫米/小时为单位的降雨量,换算成升/立方米/小时。

只需指定'liquidatercontent''ranfallrate'中的一个。

"温度"

温度单位是摄氏度。

"相对湿度"

"相对湿度"指空气中的含水量,范围从0%到100%。

任务参数

'mission'是一本带以下键的字典:

  • 'missionspeed'-无人机的巡航速度,单位为m/s。

  • "高度"-以米为单位。

  • "航向"-无人机的航向角,单位为

  • 'payload'-附加到无人机上的任何Exra有效载荷的质量(例如,摄像机),单位为千克。

绘图参数

'xlabel''ylabel'不仅指定绘图的轴标签,还告诉模拟要解决的问题('ylabel')和循环通过的参数('xlabel')。'ylabel'可以是范围耐久性功率'xlabel'可以是以下列表中的任何变量:

pipinstalldrone_awe
4

'xvals'是一个列表,其中包含模拟将循环通过并为其生成单个数据点的所有x值。

'zlabel'可以指定给要循环通过的'xlabel'参数(请参见上面的列表)使用的任何变量。这将为'zvals'中的每个值生成一条曲线,并将它们绘制在同一个图形上。这对通过weath循环很有用R效应,如温度或相对湿度,以查看它们对有效载荷与射程关系图的影响。

"标题"是显示在绘图顶部的标题,后跟当前日期。目前,标题需要是一个词。多个单词的标题可以用下划线代替空格分隔每个单词。

理论

无人机awe旨在根据现成的规范预测旋转和固定翼无人机的性能参数。为了实现这一点,计算给定飞行机动的功率需求,并用于预测电池耗尽行为。然后,计算射程和耐力等参数。在模拟的每一步都会收集全面的状态数据,提供一个通用的数据集作为研究的输出。

功率

旋转无人机

对于旋转式无人机,功耗预测分两步进行。首先,根据已知的参数,如最大悬停时间和旋翼直径,对模型参数进行标定。然后,利用动量理论预测功耗。

校准 动量理论

根据旋翼动量理论,旋翼机的飞行有五个方程:

  1. $t=\sqrt{w^2+d^2}$
  2. $tan(\alpha)=\frac{d}{w}$
  3. $d=\frac{1}{2}\rho v\infty^2 c\u d a{\bot}$
  4. $v{i=\frac{t}{2 a{rotor}n{rotor}\rho\sqrt{v{infty^2 cos^2(\alpha)+(v{infty sin(\alpha)+v{i^2)}$
  5. $a{\bot}=a{front}cos(\alpha)+a{top}sin(\alpha)$

斯托拉洛夫、萨马拉斯、奥尼尔等人将一组修正后的方程应用于旋转无人机。在〔1〕中。无人机awe通过求解该系统预测旋转无人机的功耗。Gekko是[2]中介绍的一个软件包,用于求解:

  • $t$-每个转子的推力
  • $\alpha$-攻角
  • $d$-拖动
  • $v_i$-转子感应速度
  • $a{\bot}$-无人机垂直于其速度的平面形状区域

假设如下:

  • $W$-有效重量
  • $v\infty$-无人机速度
  • $c_d$-阻力系数
  • $a{rotor}$-转子面积
  • $n{转子}$-转子数
  • $\rho$-空气密度
  • $a{front}$-正面无人驾驶飞机区域
  • $a{top}$-无人机顶部区域

请注意,该模型目前假定阻力系数不随速度和/或攻角变化。

悬停情况下的功率需求根据[1]中的另一个公式计算:

  • $p{hover}=\frac{w^{3/2}{\eta\sqrt{2n{rotor}a{rotor}\rho}$

式中,$\eta$是推进效率,计算如下:

  • $\eta=\frac{p{hover}{p{hover,actual}}

如果$p{悬停,则实际的}$将使用:

  • $p{悬停,实际}=\frac{cv{battery}{e{hover}$

其中,$c$是电池容量,$v{battery}$是电池电压,$t{hover}$是无人机的悬停耐力。理想情况下,每个参数都可以作为发布的无人机建模规范。接下来,$\eta$用于预测非悬停情况下的功耗:

  • $p=\eta t(v_infty sin(\alpha)+v戋i)$

固定翼无人机

固定翼无人机的功率要求见[11],如下所示:

$P=\FRAC{1}{2}\Rho U^3 S C{D U 0}+\FRAC{2W^2 K}{\Rho U S}$

$k=\frac{1}{\pi\times b^2/s\times e}$

其中,$P$是稳定水平飞行所需的功率,$\rho$是空气密度,$U$是无人机速度,$S$是机翼面积,$C{D{U 0}$是无升力阻力系数,$W$是无人机重量,$K$是与压力阻力有关的系数,$B$是机翼跨度,而$E$则是翼展效率,在本模型中估计为0.8。

翼展效率和无升力阻力系数是假定参数,因此德尔还有很大的改进空间。除了动量之外,雨水的影响也很难更新,因为通过编辑升阻比,模型不容易操作。

射程和耐力

耐力是指无人机在空中停留的时间长度。距离是无人机的实际飞行距离。通过将电池能量(容量乘以电压)除以所需功率来计算续航时间:

$t=\frac{c\times v}{p}$

其中,$T$是续航力,$C$是电池容量,$V$是电池平均电压。然后通过将耐力乘以无人机的平均速度来简单地计算距离:

$r=t\乘以u$

其中,$R$是以米为单位的距离,$U$是无人机的平均速度。

天气

温度

根据理想气体定律,$pv=nrt$(适用于标准空气条件),温度与空气密度成反比:

$t\propto\frac{1}{\rho}$

在这个模型中,温度的升高或降低是从15℃开始的,用来计算空气密度的相关变化。反过来,密度直接影响无人机所需的功率。

湿度

湿度对空气密度也有直接影响,空气密度直接影响无人机的功率需求。该模型使用从[3]获得的经验数据,其中记录了不同湿度和温度水平对空气密度的影响。

雨水对无人机的飞行性能有许多影响;然而,很少有甚至没有信息或验证实验来测试雨水对旋转翼无人机的影响。因此,对于本模型中的旋转无人机,只考虑了降雨给无人机带来的向下动量的影响。它并不意味着是全面的,借助于更多的经验数据,它可以被改进和/或显著地改变,以更好地表示降雨的影响。

对于固定翼无人机,除了动量交换,雨已经被证明在所有实际攻击角度都会降低升力和增加阻力。在该模型中,根据从[4]和[5]的图中获得的平均值,升阻比略有降低(升力系数降低6%,阻力系数增加0.01)。

根据用户指定的液滴尺寸和液态水含量计算向下动量产生的力。如果给定的是降雨率,则从[4]中执行以下转换:

$毛毛雨:{lwc=\frac{30000\pi10^{-3}{5.7^4r^{-0.84}}$

$广泛使用:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

$雷暴:=\frac{1400\pi10^{-3}{5.7^4r^{-0.84}}$

其中,$lwc$是以$g/m^3$为单位的液态水含量,$r$是以mm/hr为单位的降雨量。小雨、大范围和雷雨条件是根据R$的值确定的。

单个液滴的力是通过液滴质量乘以碰撞时液滴速度的变化($\Delta V$)得到的。假设每一滴都是一个直径为'dropsize'的球体,则终端速度可以计算为:

$terminal\velocity\v嫒t=\sqrt{\frac{2mg}{c嫒d\rho a}}$

其中,$m$为液滴质量,$g$为重力加速度,$c_d$为阻力系数(在本例中假设为0.5),$rho$为空气密度,$a$为液滴横截面积。这个方程可以通过设置雨滴上的重力和阻力相等来推导。在与无人机的表面碰撞时,部分或全部水滴会粘在表面或飞溅回来。[4]中给出的Criteron根据液滴的韦伯数确定此结果:

$we=\frac{\rho{air}v^2 d}{\sigma}$

其中,$d$是液滴直径,$v_t$是液滴速度,$\sigma$是水面张力(这是根据当前温度)。

假设跌落冲击的结果为:

$WE<;5$:放下木棍;$\delta v=v_t$

$5<;我们<;10$:下跌反弹;$\delta v=2v t$

$10<;我们<;18.0^2 D掼p(\rho{drop}/\sigma)^{1/2}v掼t^{1/4}f^{3/4}$:下降价差;$\delta v=v掼t$

$18.0^2 D撸p(\rho{drop}/\sigma)^{1/2}v撸t^{1/4}f^{3/4}<;we$:drop splashes;$\delta v=v撸t(1+2/\pi)$

每秒落到无人机上的雨滴数量($f$)可以通过将液态水含量(单位为kg/m^3)除以液滴质量,然后乘以无人机面积和液滴速度来确定:

$\次/秒事件数.=\frac{lwc a{drone}u{drop}{m{drop}}$

综上所述,无人机上每秒所有入射雨滴所施加的力是入射雨滴数乘以动量变化,平均雨滴质量乘以平均速度变化:

$f=f*(m{drop}\times\delta v)$

这个力的作用方向与升力相反,升力需要更多的力量才能克服。就发电而言,它有效地增加了无人机的"重量"。

结冰

积冰对无人机的飞行性能有许多不利影响,包括升力的显著损失和阻力的增加。此外,冰给系统增加了更多的重量,这对无人机尤其重要,因为它们的重量一开始就很小。结冰效应甚至会导致过早失速。尽管存在这些危险风险,但如果不使用计算流体力学(CFD),结冰也很难预测,这不在本项目的当前范围内。

在这个模型中,我们不试图预测结冰的影响;但是,在某些条件下,我们会向用户发出警告,说明在这些操作条件下,特别是在温度低、湿度高的情况下,可能会发生结冰。我们鼓励用户参阅我们的文献评论中有关天气对无人机飞行性能影响的结冰部分,以获取更多信息。

单位

属性及其各自的单位在模拟中转换为国际单位,然后再转换回。这些单位是:

  • 容量:毫安时[mah]
  • 电压:伏[v]
  • 电流:安培[a]
  • 电阻:欧姆[Ω]

力学

  • 速度/速度:米每秒[m/s]

  • 功率:瓦[w]

  • 耐力或飞行时间:分钟[min]

  • 海拔:米[m]

  • 质量:千克[kg]

    • 注意,"起飞重量"是以质量单位测量的

其他

  • 温度:摄氏度[℃]

  • 风阻:米每秒[m/s]

    *指无人机的最大额定风速

  • 电池重新充电时间:分钟[min]

functions.py-常用函数

  • getparams读取一个.txt或.csv文件,并输出一个字典,其中包含指定列表中的键和指定参数文件中的值。
  • getxandy()从验证案例中读取数据并将内容保存到x和y的列表中。此函数假定第一行包含标签并忽略它们。
  • interpolate()使用2个x值、2个y值和插值的x值进行简单的线性插值。

测试

  • 测试功率.py
  • 测试无人机.py
  • 测试绘图仪.py

未来工作

本节用于记录由于时间限制而无法立即实施的未来发展想法。

  • 计算专业最大射程和最大续航时间下的脉冲效率,并在两者之间插值
  • 根据天气变化,确定要使用的适当型号
  • 验证固定翼动力模型
  • 实现一个更全面的动力模型,其中可能包括提升线理论
  • 记录风洞数据后再次访问

课程

本节包含每个类的详细说明,都包含在classes.py中。

  • 无人机类

    • 类变量包含:

      • 特定无人机型号(如Mavic 2 Pro)的数据表规范,包括

        • 电池大小
        • 电池类型
        • 特定条件下的范围
        • 固定翼或旋转翼
    • 方法根据可用信息计算某些特征

  • 电池类

    • 类变量描述:

      • 用于模拟其放电特性的特定电池的特性,包括

        • 电池类型
        • 单元格数
        • 低、标称和充电电池电压
      • 用于模拟的实时放电特性,包括

        • 瞬时电压
        • 瞬时电流
        • 瞬时荷电状态
        • 当前健康状况
    • 方法用于使用params/目录中的信息更新类变量

  • 电源

    • 类变量描述

      • 基准功耗
      • 一组"校正"对象,用于根据天气或其他影响(实际上,这些可能是天气影响类)修改功耗类变量。
      • 总功耗
    • 方法用于

      • 更新总功耗类变量
      • 使用addcorrection方法将对象附加到power对象
      • 如果addcorrection试图将时间变量powercorrection对象附加到时间不变的power对象,则抛出错误
      • powercorrection方法
        • 调整无人机的基线功率要求
        • 模拟是时变的还是时不变的
        • 方法执行其他记帐功能
  • 天气类

    • 类变量描述

      • 要建模的每个天气效果的实例
      • 水滴大小(雨)
      • 液态水含量(LWC)(雨)
      • 降雨率(雨)
    • updaterain方法

      • 对于所有类型的无人机,这将根据它们的大小和液态水含量计算雨滴下落给无人机的动量。
    • 方法

      • 根据雨密度、速度、直径和频率计算韦伯数。这是用于在更新主方法中获得动量的。
    • 更新字段方法

      • 是指根据理论部分所述的验证数据,预先确定的升力损失和阻力增加值。仅适用于固定翼无人机。
    • \u getsurfacetension方法

      • 根据当前温度经验插值曲面张力
    • 更新环境温度方法

    • 更新湿度

    • 类变量描述

      pipinstalldrone_awe
      5
    • 阵风类

      • <P>类变量描述

        • 频率
        • 振幅
    • ice

      • 由于建模困难,该类尚未尝试建模结冰效果。它将来可能用于识别是否存在结冰情况。
  • 任务

    • 类变量描述

      • 任务速度
  • 模拟类

    • 类变量描述
      • 开始时间
      • 结束时间
      • 时间步
      • 当前时间步索引
      • 当前时间
      • 方法用于运行和存储模拟信息,包括获取距离和耐力的过程

注:本模型以耗电量为基础,以适应未来发展。power类的设计目的是接收基于天气影响的无限数量的修改

  • 绘图仪

    • 根据用户在settings.txt文件中指定的标签和标题打印结果。方法可以绘制线条或散点图。验证方法在指定的验证数据上绘制结果。

参考文献

  1. Beal,L.D.R.,Hill,D.,Martin,R.A.,和Hedengren,J.D.,Gekko优化套件,流程,第6卷,编号8,2018,DOI:10.3390/PR6080106。
  2. Stolaroff,J.K.,Samaras,C.,O'Neill,E.R.,Lubers,A.,Mitchell,A.S.,和Ceperley,D.(2018年)。商业包装交付用无人机的能源使用和生命周期温室气体排放。自然通讯,9(1),1-13.https://doi.org/10.1038/s41467-017-02411-5
  3. Yue,W.,Xue,Y.,和Liu,Y.(2017年)。通过cfd分析,研究高湿度空气动力对海上风力机翼型/叶片性能的影响。国际旋转机械杂志,2017,1-15。https://doi.org/10.1155/2017/7570519
  4. 曹,Y.,吴,Z.,徐,Z.(2014)。降雨对飞机空气动力学的影响。航空航天科学进展,71,85-127.https://doi.org/10.1016/j.paerosci.2014.07.003
  5. Ismail,M.,Yihua,C.,Wu,Z.,和Sohail,M.A.(2014年)。模拟降雨环境下机翼气动效率的数值研究。《飞机杂志》,51(6),2015-2023年。https://doi.org/10.2514/1.c032594
  6. Abdilla,A.,Richards,A.,和Burrow,S.(2015年)。电池驱动旋翼机的功率和耐久性模型。2015年ieee/rsj智能机器人与系统国际会议(iros)(第675-680页)。IEEE。https://doi.org/10.1109/iros.2015.7353445
  7. Chang,K.,Rammos,P.,Wilkerson,S.A.,Bundy,M.,和Gadsden,S.A.(2016年)。提高无人机飞行性能的锂电池能量研究。R.E.Karlsen,D.W.Gage,C.M.Shoemaker和G.R.Gerhart(编辑)(第9837卷,第98370W页)。国际光学和光子学学会。https://doi.org/10.1117/12.2223352
  8. Di Franco,C.,&Buttazzo,G.(2016年)。考虑能量和分辨率约束的无人机摄影测量覆盖路径规划。智能与机器人系统杂志:理论与应用,83(3-4),445-462。https://doi.org/10.1007/s10846-016-0348-x
  9. Dorling,K.,Heinrichs,J.,Messier,G.G.,和Magierowski,S.(2017年)。无人机交付的车辆路径问题。ieee系统、人和控制论事务:sys英语专业,47(1),70-85.https://doi.org/10.1109/tsmc.2016.2582745
  10. Ostler,J.N.,Bowman,W.J.,Snyder,D.O.,和McLain,T.W.(2009年)。小型电动无人机性能飞行试验(第一卷)。检索自http://journals.sagepub.com/doi/pdf/10.1260/175682909789996177" rel="nofollow">https://journals.sagepub.com/doi/pdf/10.1260/175682909789996177
  11. Traub,L.W.(2011年)。电池驱动飞机的航程和续航时间估计。飞机杂志,48(2),703-707.https://doi.org/10.2514/1.c03127

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在TextView中对齐部分文本   带有iText和eTPKCS11的java PKCS#11签名。dll&SunPKCS11提供程序   java Intellij Idea找不到jar   java Chrome/Firefox和Jetty HTTPS   java我无法打包找不到的JavaFX应用程序模块   多线程Java:排序从异步任务检索的结果   java客户端/服务器socket不能与外部连接一起工作   java如何在单击“下一步”按钮时获取其他详细信息?   java组织。springframework。网状物客户RestTemplate应声明为@Bean,而plain@Autowired抛出错误   java如何绘制javax。摆动将ImageIcon转换为JavaFX。fxml呈现用户界面?   使用for循环的Java跟踪   java如何编码字符串以显示彩色文本(基于字符串中的前缀)   Java保存/打开文件对象   基于java复选框的搜索:使用尽可能多的“”动态生成准备好的语句作为选中复选框的计数   java为什么crawler4j随机挂起?