Skip to content

Releases: nasa/daidalus

DAIDALUSv2.0.3a

08 Sep 21:49
Compare
Choose a tag to compare

September-8-2023

  • Change to IntegerBands to account for the time between discrete points in the kinematic maneuvers. Should address some 'thread the needle'
    scnerios.
  • Renamed RecoveryInformation::timeToToRecovery to RecoveryInformation::timeToRecovery.

DAIDALUSv2.0.3

01 Sep 19:30
Compare
Choose a tag to compare
  • Added parameter bands_add_time_to_maneuver. By default this parameter is set to false. When set to true, the time to maneuver is considered against alerting time when computing peripheral bands. The latter was the behavior in v.2.0.1 and v1.
  • Fixed numerical instability bug in computing the circular_ in directional bands.

Release DAIDALUSv2.0.2c

27 Jun 15:40
Compare
Choose a tag to compare

June 27, 2022

  • Contact update
  • Fixed remove_traffic to allow removing the first intruder.
  • Change in commented documentation in Daidalus.cpp
  • Hysteresis bugfix
  • Updated Java to be compatible with Java 8
  • Updated README -- Java compatibility
  • Latest DAIDALUS-v2.0.2

DAIDALUSv2.0.2

11 Dec 22:21
Compare
Choose a tag to compare

Release DAIDALUS-v2.0.2

The main difference with v2.0.1 is that alerting time only counts after capturing a value in the calculation of maneuver guidance logic.

  • May 31, 2021

    • IMPORTANT Fixed error where dta_latitude and dta_longitude were exchanged when provided in Euclidean coordinates. Now, they corresponds to X (dta_longitude) and Y (dta_latitude), as expected.
    • Updated to FormalATM-v2.7.5
    • Updated copyright to 2021
    • Updated doc/html
    • Deprecated Daidalus.maxAlertLevel(), use Daidalus.maxNumberOfAlertLevels() instead
    • Added Daidalus.alertLevelAllTraffic()
    • Added ownship and traffic selection to DaidalusFileWaker class
  • January 23, 2021

    • Added DO-365A configurations for completeness.
  • December 11, 2020

    • Added DO-365B configurations
    • Fixed computation of TCPA hazard volume when TTHR*||v|| < DTHR and
      other volumes when relative velocity is zero (these fixes are only for display)
  • October 9, 2020

    • Added performance metrics methods to Daidalus class
    • Fixed bug in Daidalus class, where numberOfAircraft was used instead
      of lastTrafficIndex.
  • September 29, 2020

    • Added documentation (automatically generated from code), updated README.
  • September 24, 2020

    • Alerting time only counts after capture.
    • Added raw resolutions (without persistence)

DAIDALUSv2.0.1

13 Aug 16:11
Compare
Choose a tag to compare

Release DAIDALUS-v2.0.1:

  • January 11, 2021

    • Fixed comment related to SUM setting in Daidalus class
    • Added interface to raw resolutions
  • December 11, 2020

    • Fixed computation of TCPA hazard volume when TTHR*||v|| < DTHR and other volumes when relative velocity is zero (these fixes are only for display)
  • October 9, 2020

    • Added performance metrics methods to Daidalus class
    • Fixed bug in Daidalus class, where numberOfAircraft was used instead of lastTrafficIndex
  • September 29, 2020

    • Added documentation (automatically generated from code), updated README.
  • September 21, 2020
    Fixed error in DaidalusCore copy constructor (DaidalusCore.h and DaidalusCore.cpp). Thanks to V-ALICE

  • August 20, 2020
    Fixed memory leak in non _MSC_VER compiled branch (Util.cpp and util_string.cpp). Thanks to B. Shimanuki

  • August 12, 2020

    • Updated Makefile
    • Removed global variable j_step_ (using instead local parameters target_step and instantaneous) in integer bands and altitude bands
    • Removed parameters B2, T2 using instead 0,T.
  • August 4, 2020
    Implemented hazard zones (for display purposes only)

Pre-Release DAIDALUS-v2.0.g

June 8, 2020

  • DTA logic is fully implemented. When DTA lat,lon, radius, and height
    is provided, DAIDALUS automatically uses dta_alerter accordingly
    to either ownship or intruder centric alerting. When DTA is active,
    special bands are computed when an alert higher than corrective,
    i.e., warning, is issued. The behavior of the special bands is
    controlled by the dta_logic value. When the value is positive,
    vertical bands block the down side. When the value is negative,
    vertical bands block the down side and horizontal direction bands
    saturate. When the value of dta is zero, DTA logic is disabled.

  • DTA can be manually activated by setting the DTA alerter of the
    ownship, when ownship-centric alerting logic, or intruder, when
    intruder-centric alerting logic, to dta_alerter.

  • Winds in v2.0.g are sticky. Once they are set they remain set until
    explicitly set to a different value or the are disable using the
    method setNoWind() in the Daidalus class.

  • Conflict bands, the ones in front of an aircraft, are computed until
    lookahead time. In some encounter, this will provide wider bands.

  • When hysteresis is enabled, e.g., after the first alert of a given
    level, the subsequent alerts and maneuver guidance for the same
    alerting aircraft are computed using early alerting time instead of
    alerting time. Therefore, when ownship implements the resolutions
    bands are still accurate even if the conflict moved beyond the
    alerting time.

Pre-Release DAIDALUS-v2.0.f:

April 3, 2020

  • Fixed bug in DaidalusRealBands, where boolean check
    if (saturated) should have been if (recovery).
  • Fixed resolution and preferred direction persistence logic.

February 27, 2020

  • Implemented hysteresis logic (M of N and persistence) for maneuver
    guidance. Bands persistance was experimentally implemented in v2d.
    The implementation is v2f is different and more consistent with
    alerting persistence.

  • Setting configuration parameters in a Daidalus object resets hysteresis.

  • The method clean() in the class Daidalus resets hysteresis. In older
    versions of DAIDALUS, the method clean() was needed before adding the
    ownship. This is not needed anymore.

  • When SUM parameters are set to 0, the WCV_TAUMOD_SUM detector is
    equivalent to the WCV_TAUMOD detector. In previous versions, a 10% of
    value step error was always added to WCV_TAUMOD_SUM. However, if SUM
    is not required, it's recommended that the WCV_TAUMOD detector is
    used since WCV_TAUMOD_SUM will add a bit of computation overhead.

  • Eliminated CD3Table to avoid overhead.

  • In C++: Daidalus(Detection3D,double,double) constructor changed to
    Daidalus(Detection3D*,double,double) for efficiency reasons. This
    should only affect specialized users of DAIDALUS that use a
    programatic configuration.

  • In C++: The following static methods are now available

CDCylinder::CD3DCylinder()
WCV_TAUMOD::DO_365_DWC_Phase_I()

The return structures that are safe for referencing with & operator

Pre-Release DAIDALUS-v2.0.e:

February 15, 2020

  • Corrected bug in C++, where reserve was used instead of resize. This
    caused a segmentation fault in Visual Studio C++
  • Reorganized examples in directory outside src
  • Updated Makefile

May 19, 2019

  • Fixed issue with intervals of length 0 (i.e, only one point). These
    intervals are now removed from the computations.
  • Fixed issue with getTimeIn and getTimeOut, where in case of
    no-conflict, their return value is undefined. These methods are now guarded
    by conflit predicated. In case of no conflict they return infinite
    values.
  • Fixed issue in WCV_TAUMOD_SUM, where violationSUMAt and detectionSUM
    return inconsistent values when aircraft are at the border of the
    violation area.
  • Better use of cache information in DaidalusCore. Alerting doesn't
    trigger re-computation of banding core information.

Pre-Release DAIDALUS-v2.0.2d:

April 4, 2019

  • Added hysteresis and persistence times

  • Added preferred resolution persistence

  • Added bands persistence

  • Added alerting M of N

  • Changed max_delta_resolution_xxx to persistence_preferred_xxx. A
    preferred resolution persists while the difference between the the
    preferred resolution and the best resolution is less than this parameter.

  • Method setHorizontalSpeedUncertainty is now called
    setHorizontalVelocityUncertainty.

  • Method setVerticalVelocityZScore is now called
    setVerticalSpeedZScore.

  • Method alerting in Daidalus is now deprecated. It has been renamed
    alertLevel.

  • setAboveBelowHorizontalSpeed in DaidalusBands refactored as
    setAboveRelativeHorizontalSpeed and setBelowRelativeHorizontalSpeed.
    Similar changes for setRelativeVerticalSpeedBands and
    setRelativeAltitudeBands.

  • Added configurable parameters for relative bands.

  • Added UNKNOWN bands region in cases where relative bands are
    used.

  • Added hysteresis to alerting, preferred direction, and
    resolution. Configurable through new parameters.

Implemented ownship/intruder centric alerting logic. There is a new
boolean configuration parameter ownship_centric_alerting. By default,
ownship_centric_alerting is set to true.

Programmatically this parameter can be changed through the
methods:

  • setAlertingLogic(boolean ownship_centric)
  • setOwnshipCentricAlertingLogic()
  • setIntruderCentricAlertingLogic()
    The value of the parameter is obtained by the method
    isAlertingLogicOwnshipCentric().

When the logic is ownship centric, an alerter for all traffic
aircraft is set by using

  • setAlerterIndex(0,alerter_idx).

When the logic is intruder centric, individual alerters for each
traffic aircraft (ac_idx) is set by using

  • setAlerterIndex(ac_idx, alerter_idx)

The methods minHorizontalSeparationAtRecovery and
minVerticalSeparationAtRecovery in RecoveryInformation are now called
recoveryHorizontalDistance and recoveryVerticalDistance.

Pre-Release DAIDALUS-v2.0.2b:

October 15, 2018

daa.set_WC_SC_228_MOPS--> daa. set_WC_DO_365
daa.set_Buffered_WC_SC_228_MOPS --> daa. set_Buffered_WC_DO_365

Daidalus.getMultiKinematicBands() disappeared: The Daidalus object
implements all the functionality of MultiKinematicBands().

The field Daidalus.parameters is not longer available. Daidalus itself
implements all the methods available in DaidalusParameters. Therefore,
something like daa.parameters.getLookaheadTime() is now written
daa.getLookahaedTime();

VERY IMPORTANT List of alerters is now 1-indexed. 0 means none, 1 means first
alerter, 2 means second alerter, etc. More precisely:

  1. Alerters are 1-indexed, i.e., 1 is the index of first alerter
    (e.g., Phase I), 2 is the index of second alerter (e.g., Phase 2), 3 is the index of third alerter, etc.

  2. By default, Ownship is set to alerter 0 (meaning none)

  3. By default, Traffic aircraft is set to alerter 1

  4. If Onwship's alerter is set to 0, then the logic is "intruder-centric" and each aircraft's alerter is used for each aircraft. This is the default behavior.

  5. If Ownship's alerter is set to a value different from 0, then the logic is "ownship-centric" and this is the alerter that is used for every traffic aircraft.

Pre-Release DAIDALUS-v2.0.2a:

October 4, 2018

  • DADIALUS-2 supports multiple alerting structures that can be
    dynamically applied per traffic aircraft.

  • DAIDALUS-2 corrects several misnomers in DAIDALUS-1 (see below).

  • The class AlertLevels is now called Alerter. If daa is an object of
    the class Daidalus, a particular alerter for this aircraft
    can be set using the method:
    daa.setAlerter(ac_idx,arleter_idx);
    or equivalently,
    daa.setAlerter(ac_idx,alerter_id);

In these calls, ac_idx is the index of the aircraft in the traffic
list. The index 0 represents the ownship and the last index is the one
in daa.lastTrafficIndex(). Alerters are collected in a list indexed
from 0 (default alerter) to daa.parameters.numberOfAlerters()-1.

Configuration by File

To configure alerters using a file (same as in DAIDALUS-1):
daa.loadFromFile("configuration_file.txt");

DAIDALUS-2 correctly reads DAIDALUS-1 configuration
files. In this case, only 1 alerter is configured. The configuration
file for multiple alerters is done by configuring a list of alerter identifiers, e.g.,

alerters = Buffered_DWC_Phase_I,DWC_Phase_I

The order in this list is important, the inde...

Read more

DAIDALUSv1.0.2

13 Aug 15:43
Compare
Choose a tag to compare

August 20, 2020

  • Fix memory leak in non _MSC_VER compiled branch (Util.cpp). Thanks to B. Shimanuki

April 21, 2019

  • Fixed bug in the method toIntervalSet of the class KinematicRealBands, where a range of length 0, i.e., a point, is sometimes added to the list of bands due to numerical round-off errors. This zero-length range may yield a recovery bands that is slightly larger than necessary.
  • Fixed bug in the method find_resolution of the class KinematicRealBands, where a track resolution larger than 180 degrees is sometimes returned. The fixed method will return either negative infinity (left) or postive infinity (right) when no resolution exists within 180 of the current track.

DAIDALUSv1.0.1

13 Aug 15:40
Compare
Choose a tag to compare

October 11, 2017

  • Fixed bug in line 635 and 637 of Units.cpp. This bug only affects
    MSVC++ (Thanks to Randal Guendel for reporting this issue).

March 18, 2017

  • Added PVS specifications and proofs of core algorithms.

  • Modified algorithm that projects aircraft trajectories. The
    core detection, alerting, and bands algorithms use an Euclidean
    three-dimensional coordinate system, i.e., a local East, North, Up
    (ENU) Cartesian coordinate system. This coordinate system is based on
    the orthogonal projection of the ownship and traffic geodesic
    coordinates onto a plane tangent to the projected ownship position on
    the surface of the earth. In previous releases, kinematic bands were
    generated by projecting in time aircraft Geodesic states and then
    projecting the resulting states into the Euclidean coordinate system.
    In this release, Geodesic coordinates are projected into the Euclidean
    coordinate system first, and then projected in time. This change
    significantly improves the performance of the bands algorithm.
    CAVEAT: Projected states may not be precise enough for a lookahead
    time larger than 5 minutes.

  • Modified behavior of detection, alerting, and bands algorithms with
    respect to lookahead time. In the previous release, lookahead time was
    expected to be larger than early alerting time, which was expected to
    be larger than alerting time, for all alerting levels. In this release,
    the time horizon for the core algorithms is between current time and
    current time+lookahead time. In other words, no violation, alert, or band is
    computed after lookahead time (relative to current time).

  • Modified algorithm that prints configuration parameters. In this
    release, units from a configuration file are remembered and displayed
    back when the configuration parameters are printed as a string or
    saved into a file. Furthermore, configuration parameters are printed
    in a better organized format.

  • Fixed a bug that caused the region of a conflict band at 180 degrees
    to be incorrectly computed as NONE. The bug was due to numerical error
    where 180 degrees and -180 degrees were not considered to be equal.