zoukankan      html  css  js  c++  java
  • 等待模板的算法分析

    等待模板的算法分析

    2018-03-31 刘崇军 风螺旋线

    大家好,我是那个把飞行程序算法当业余爱好的刘崇军,今天想跟大家聊一聊等待模板的算法思路。

    先来说明一下 模板 保护区 的区别。模板通常指得是最基础的、未考虑定位容差等因素的保护区。保护区指的是在模板绘制的基础上,考虑了导航设备、定位容差、进入方向、副区大小等因素后绘制的飞行程序活动范围。今天讨论的是等待基础模板,因此,定位容差、进入方向等内容不在今天的讨论范围内。

    等待模板是最常用的一种模板,常见的问题是将模板直接添加副区当成是等待保护区,这样的做法是存在一定风险的。

    等待程序的飞行方法无需多言,直接从等待模板中的风螺旋开始讨论。完整形态下,等待模板中包含了六条风螺旋,如下图中的实心曲线所示:

    以风螺旋的起点来对这六条风螺旋进行命名,可以找到b、c、i1、i2、i3、i4 六条风螺旋。其中,i1至 i4 风螺旋的初始外扩距离较大,距离i1、i4 点较远,但从算法角度来说仍是以i1、i4 为起点来绘制的。

    除了基本的转弯参数(半径、转弯率、风速度、真空速等)外,风螺旋的初始参数有三个:圆心点位置、初始外扩距离(offset)、初始旋转角度(rotation)。这三个参数与风螺旋的切线、公切线计算有非常密切的关系,因此,必须精确掌握每一项初始参数的具体内容。

    六条风螺旋逐个来看:

    b 点风螺旋:从a点开始,飞行员神反应开始操作(反应时间为零秒),经过 5秒的建立坡度时间,到达b点开始转弯,因此,b点风螺旋包含5秒的风速所形成的外扩距离。

     

    c 点风螺旋:从a点开始,飞行员用了 6秒钟才做出反应,之后用了 5秒建立坡度到达c点开始转弯,因此,c点风螺旋包含总计 11秒的风速所形成的外扩距离。

    i1(i3)点风螺旋:从 c 点转弯180°到达 g 点,所以 Wg=Wc+4E45,从g点开始,飞行 t 秒,由于提前了 5秒用来建立(入航转弯的)坡度,因此,共计经过 (t - 5)的直线飞行时间,到达 i1(i3)点。因此,i1(i3)点风螺旋的初始外扩距离为Wc+Gi1+4E45= 11w'+ (t - 5)w'+4E45 = (t+6)w'+4E45

    i2(i4)点风螺旋:从 b 点转弯180°到达 h 点,所以 Wh=Wb+4E45,从h 点开始,飞行 t 秒外加10秒计时误差,以及再次建立坡度时间5秒、共计 (t+15)秒的直线飞行时间,到达 i2(i4)点。可知:

    Wi2 = Wh+(t+15)w' = (t+20)w'+4E45

    若用Wi1来表示,公式可化简为Wi2 = Wi1+(t+14)w' 。g 点与 h 点之间相差 6秒钟的直线飞行时间,规范中,将i2(i4)点用g 点的距离来表示,Gi2=(6+t+15)v=(t+21)v

    (规范中永远只出现上面加粗后的计算结果,对计算过程鲜有说明,幸好5秒的建坡度时间、6秒反应时间、10秒计时误差,通过三个数字的个位数可以对以上分析加以验证,恰好符合计算结果)

    初始位置点及偏移量确定以后,其余的辅助点如d、e、f、g 等均是在此基础之上增加转弯角度得到的。

     

    风螺旋算法最大的优势在于公切线的计算,逐段来看一下切线的位置关系。首先来看出航转弯段的切线关系,如下图所示:

    若按照风螺旋算法计算c点螺旋的起点,将该起点直接与a点相连接,则该线段必过b点风螺旋的起点,并且同时与b点风螺旋、c点风螺旋相切,线段与水平轴线的夹角为DA(偏流角)。原理很简单,直线飞行时(ac段为直线飞行),受偏流影响,最大外扩方向是DA角的方向,从直线运动改为转弯时,运动的曲线必然与前一段的直线互为相切关系。

    上图中,转弯后的Esita1 与 Esita2 之间相差6w' 的风偏移量,水平距离相差6v,夹角等于arcSin(6w'/6v)=DA,因此可知,转弯大于180度时,风螺旋线的公切线与水平轴线夹角同样为DA角。

     

    入航转弯段的公切线是相对简单的一种情况,从风螺旋的起点开始,用(90+DA)E 计算出偏移量,公切线的角度位置就是90+DA,如下图所示:

     

     

    出航直线段的计算是一个 BUG 丛生的地方,之前在45°-180°模板中提到过的5°角裂缝,在等待模板出航段中同样存在,如下图所示:

    由于出航段结束位置的风螺旋起点,是与出航航迹相垂直,并不是与5°外扩的航迹线相垂直,因此,以 Wi1 或 Wi4 绘制弧线时,会看到5°的裂缝角度。这个角度的存在,对于自动化的分析会造成困难。

    通过增大Wi4的大小(增大 12w'-5Esita),可以忽略掉 i1点风螺旋,“彻底”解决此问题,但需要对规范进行调整。

    现阶段可行的方案是直接以i1、i4风螺旋按照风螺旋的公切线方法进行计算,得到的切线效果如下图所示:

    从上图中可以看到,风螺旋可以“穿过”现有规范中的位置点,规范中的位置点并不是最大外扩位置。

     

    入航转弯外边界是另一个问题比较“严重”的地方。简单来说就是N3点对应的弧线并不是转弯外边界的最远点。

    本文最开始的六条风螺旋的图片可以看到,N3点绘制的弧线与 i3 风螺旋相切,切线位于N3 与 N4点之间。i1、i3 风螺旋范围都超过了 N3弧线的范围,而现有规范并未采用这样两条螺旋线。

    从算法角度来说N3 与 N4 的外边界之间若以弧线相连,则该弧线不唯一,首先是因为弧线的圆心没有明确规定、其次弧线的半径也未指定。若以切线来连接,与现有规范不大相似,并且范围明显偏小(上图中的线段 t3t4)。

    通过对比可以发现,i4 风螺旋多数情况下,均能包含N3点的弧线,因此,在i1、i3风螺旋未被考虑的情况下,建议使用 i4 风螺旋做为入航外边界来使用,以N3、N4外边界的公切线做为对照检查来使用,如前图所示。

     

    最终完成的等待保护区模板如下图所示:

    通过以上分析可以知道,现有规范中对模板的部分区域并未充分的展开讨论,主要原因是分段圆弧画法带来的不精确的处理方式所造成。通过完整螺旋线的分析,可以直观的看到转弯外边界的变化趋势,从而做出更合理的判断,为模板的进一步优化打下基础。

     


     

    本文相关论文发表于《中国民航飞行学院学报》2018年第2期,更详细的内容,请参阅论文原文。

    论文的引用格式为:

    [1]刘崇军. 风螺旋线精确算法在等待程序模板中的应用[J]. 中国民航飞行学院学报, 2018(2):13-18.

     

    顺便勘个误,第16页左下角部分,Wi2 优化公式中 多写了一个 4E45,该数据已包含在Wi1中,如下图所示。

     

    学习太辛苦,买点东西鼓励一下自己。常按下面的二维码,微信打开“香雪杂货店”,看到食喜欢的东西尽管带走~~

     

     

     

     

     

     

     
     

    微信扫一扫
    关注该公众号

  • 相关阅读:
    Zookeeper入门:基本概念、5项配置、启动
    Zookeeper入门:基本概念、5项配置、启动
    iOS-入门HelloWorld
    iOS-入门HelloWorld
    Object-C,循环语句for,while,do-while
    Object-C,循环语句for,while,do-while
    Object-C,文件路径API
    Object-C,文件路径API
    HDU 4253 Two Famous Companies
    URAL 1297 Palindrome
  • 原文地址:https://www.cnblogs.com/windspiral/p/8683040.html
Copyright © 2011-2022 走看看