ICAROUS
All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Modules Pages
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
larcfm::KinematicMultiBands Class Reference

#include <KinematicMultiBands.h>

Inheritance diagram for larcfm::KinematicMultiBands:
larcfm::ErrorReporter larcfm::GenericStateBands larcfm::GenericBands larcfm::KinematicBands

Public Member Functions

 KinematicMultiBands (const KinematicBandsParameters &parameters)
 
 KinematicMultiBands ()
 
 KinematicMultiBands (const KinematicMultiBands &b)
 
KinematicMultiBandsoperator= (const KinematicMultiBands &b)
 
TrafficState const & getOwnship () const
 
void setOwnship (const TrafficState &own)
 
void setOwnship (const std::string &id, const Position &p, const Velocity &v)
 
void setOwnship (const std::string &id, const Position &p, const Velocity &v, double time)
 
void setOwnship (const Position &p, const Velocity &v)
 
void setTraffic (const std::vector< TrafficState > &traffic)
 
std::vector< TrafficState > const & getTraffic () const
 
bool hasOwnship () const
 
bool hasTraffic () const
 
void addTraffic (const TrafficState &ac)
 
void addTraffic (const std::string &id, const Position &pi, const Velocity &vi)
 
void addTraffic (const Position &pi, const Velocity &vi)
 
void setAlertor (const AlertLevels &alertor)
 
void setKinematicBandsParameters (const KinematicBandsParameters &parameters)
 
double getRecoveryStabilityTime () const
 
double getRecoveryStabilityTime (const std::string &u) const
 
void setRecoveryStabilityTime (double t)
 
void setRecoveryStabilityTime (double t, const std::string &u)
 
double getMinHorizontalRecovery () const
 
double getMinHorizontalRecovery (const std::string &u) const
 
void setMinHorizontalRecovery (double val)
 
void setMinHorizontalRecovery (double val, const std::string &u)
 
double getMinVerticalRecovery () const
 
double getMinVerticalRecovery (const std::string &u) const
 
void setMinVerticalRecovery (double val)
 
void setMinVerticalRecovery (double val, const std::string &u)
 
bool isEnabledCollisionAvoidanceBands () const
 
void setCollisionAvoidanceBands (bool flag)
 
void enableCollisionAvoidanceBands ()
 
void disableCollisionAvoidanceBands ()
 
double getCollisionAvoidanceBandsFactor ()
 
void setCollisionAvoidanceBandsFactor (double val)
 
const TrafficStategetMostUrgentAircraft () const
 
void setMostUrgentAircraft (const TrafficState &ac)
 
void setMostUrgentAircraft (const std::string &id)
 
bool isEnabledConflictCriteria () const
 
void setConflictCriteria (bool flag)
 
void enableConflictCriteria ()
 
void disableConflictCriteria ()
 
bool isEnabledRecoveryCriteria () const
 
void setRecoveryCriteria (bool flag)
 
void enableRecoveryCriteria ()
 
void disableRecoveryCriteria ()
 
void setRepulsiveCriteria (bool flag)
 
void enableRepulsiveCriteria ()
 
void disableRepulsiveCriteria ()
 
void setRecoveryBands (bool flag)
 
void enableRecoveryBands ()
 
void disableRecoveryBands ()
 
double getLeftTrack ()
 
double getLeftTrack (const std::string &u)
 
double getRightTrack ()
 
double getRightTrack (const std::string &u)
 
void setLeftTrack (double val)
 
void setLeftTrack (double val, const std::string &u)
 
void setRightTrack (double val)
 
void setRightTrack (double val, const std::string &u)
 
void setMinMaxTrack (double min, double max)
 
void setMinMaxTrack (double min, double max, const std::string &u)
 
double getTrackStep () const
 
double getTrackStep (const std::string &u) const
 
void setTrackStep (double val)
 
void setTrackStep (double val, const std::string &u)
 
double getBankAngle () const
 
double getBankAngle (const std::string &u) const
 
void setBankAngle (double val)
 
void setBankAngle (double val, const std::string &u)
 
double getTurnRate () const
 
double getTurnRate (const std::string &u) const
 
void setTurnRate (double val)
 
void setTurnRate (double val, const std::string &u)
 
bool isEnabledRecoveryTrackBands () const
 
void setRecoveryTrackBands (bool flag)
 
double getMinGroundSpeed ()
 
double getMinGroundSpeed (const std::string &u)
 
void setMinGroundSpeed (double val)
 
void setMinGroundSpeed (double val, const std::string &u)
 
double getMaxGroundSpeed ()
 
double getMaxGroundSpeed (const std::string &u)
 
void setMaxGroundSpeed (double val)
 
void setMaxGroundSpeed (double val, const std::string &u)
 
void setBelowAboveGroundSpeed (double below, double above)
 
void setBelowAboveGroundSpeed (double below, double above, const std::string &u)
 
double getGroundSpeedStep () const
 
double getGroundSpeedStep (const std::string &u) const
 
void setGroundSpeedStep (double val)
 
void setGroundSpeedStep (double val, const std::string &u)
 
double getHorizontalAcceleration () const
 
double getHorizontalAcceleration (const std::string &u) const
 
void setHorizontalAcceleration (double val)
 
void setHorizontalAcceleration (double val, const std::string &u)
 
bool isEnabledRecoveryGroundSpeedBands ()
 
void setRecoveryGroundSpeedBands (bool flag)
 
double getMinVerticalSpeed ()
 
double getMinVerticalSpeed (const std::string &u)
 
void setMinVerticalSpeed (double val)
 
void setMinVerticalSpeed (double val, const std::string &u)
 
double getMaxVerticalSpeed ()
 
double getMaxVerticalSpeed (const std::string &u)
 
void setMaxVerticalSpeed (double val)
 
void setMaxVerticalSpeed (double val, const std::string &u)
 
void setBelowAboveVerticalSpeed (double below, double above)
 
void setBelowAboveVerticalSpeed (double below, double above, const std::string &u)
 
double getVerticalSpeedStep () const
 
double getVerticalSpeedStep (const std::string &u) const
 
void setVerticalSpeedStep (double val)
 
void setVerticalSpeedStep (double val, const std::string &u)
 
double getVerticalAcceleration () const
 
double getVerticalAcceleration (const std::string &u) const
 
void setVerticalAcceleration (double val)
 
void setVerticalAcceleration (double val, const std::string &u)
 
bool isEnabledRecoveryVerticalSpeedBands ()
 
void setRecoveryVerticalSpeedBands (bool flag)
 
double getMinAltitude ()
 
double getMinAltitude (const std::string &u)
 
void setMinAltitude (double val)
 
void setMinAltitude (double val, const std::string &u)
 
double getMaxAltitude ()
 
double getMaxAltitude (const std::string &u)
 
void setMaxAltitude (double val)
 
void setMaxAltitude (double val, const std::string &u)
 
void setBelowAboveAltitude (double below, double above)
 
void setBelowAboveAltitude (double below, double above, const std::string &u)
 
double getAltitudeStep () const
 
double getAltitudeStep (const std::string &u) const
 
void setAltitudeStep (double val)
 
void setAltitudeStep (double val, const std::string &u)
 
double getVerticalRate () const
 
double getVerticalRate (const std::string &u) const
 
void setVerticalRate (double val)
 
void setVerticalRate (double val, const std::string &u)
 
double getHorizontalNMAC () const
 
double getHorizontalNMAC (const std::string &u) const
 
double getVerticalNMAC () const
 
double getVerticalNMAC (const std::string &u) const
 
void setHorizontalNMAC (double val)
 
void setHorizontalNMAC (double val, const std::string &u)
 
void setVerticalNMAC (double val)
 
void setVerticalNMAC (double val, const std::string &u)
 
bool isEnabledRecoveryAltitudeBands ()
 
void setRecoveryAltitudeBands (bool flag)
 
void clear ()
 
std::vector< TrafficState > const & conflictAircraft (int alert_level)
 
Interval const & timeIntervalOfViolation (int alert_level)
 
int trackLength ()
 
void forceTrackBandsComputation ()
 
Interval track (int i)
 
Interval track (int i, const std::string &u)
 
BandsRegion::Region trackRegion (int i)
 
int trackRangeOf (double trk)
 
int trackRangeOf (double trk, const std::string &u)
 
BandsRegion::Region regionOfTrack (double trk)
 
BandsRegion::Region regionOfTrack (double trk, const std::string &u)
 
double lastTimeToTrackManeuver (const TrafficState &ac)
 
double timeToTrackRecovery ()
 
std::vector< TrafficState > const & peripheralTrackAircraft (int alert_level)
 
double trackResolution (bool dir, int alert_level)
 
double trackResolution (bool dir, int alert_level, const std::string &u)
 
double trackResolution (bool dir)
 
double trackResolution (bool dir, const std::string &u)
 
bool preferredTrackDirection (int alert_level)
 
bool preferredTrackDirection ()
 
int groundSpeedLength ()
 
void forceGroundSpeedBandsComputation ()
 
Interval groundSpeed (int i)
 
Interval groundSpeed (int i, const std::string &u)
 
BandsRegion::Region groundSpeedRegion (int i)
 
int groundSpeedRangeOf (double gs)
 
int groundSpeedRangeOf (double gs, const std::string &u)
 
BandsRegion::Region regionOfGroundSpeed (double gs)
 
BandsRegion::Region regionOfGroundSpeed (double gs, const std::string &u)
 
double lastTimeToGroundSpeedManeuver (const TrafficState &ac)
 
double timeToGroundSpeedRecovery ()
 
std::vector< TrafficState > const & peripheralGroundSpeedAircraft (int alert_level)
 
double groundSpeedResolution (bool dir, int alert_level)
 
double groundSpeedResolution (bool dir, int alert_level, const std::string &u)
 
double groundSpeedResolution (bool dir)
 
double groundSpeedResolution (bool dir, const std::string &u)
 
bool preferredGroundSpeedDirection (int alert_level)
 
bool preferredGroundSpeedDirection ()
 
int verticalSpeedLength ()
 
void forceVerticalSpeedBandsComputation ()
 
Interval verticalSpeed (int i)
 
Interval verticalSpeed (int i, const std::string &u)
 
BandsRegion::Region verticalSpeedRegion (int i)
 
int verticalSpeedRangeOf (double vs)
 
int verticalSpeedRangeOf (double vs, const std::string &u)
 
BandsRegion::Region regionOfVerticalSpeed (double vs)
 
BandsRegion::Region regionOfVerticalSpeed (double vs, const std::string &u)
 
double lastTimeToVerticalSpeedManeuver (const TrafficState &ac)
 
double timeToVerticalSpeedRecovery ()
 
std::vector< TrafficState > const & peripheralVerticalSpeedAircraft (int alert_level)
 
double verticalSpeedResolution (bool dir, int alert_level)
 
double verticalSpeedResolution (bool dir, int alert_level, const std::string &u)
 
double verticalSpeedResolution (bool dir)
 
double verticalSpeedResolution (bool dir, const std::string &u)
 
bool preferredVerticalSpeedDirection (int alert_level)
 
bool preferredVerticalSpeedDirection ()
 
int altitudeLength ()
 
void forceAltitudeBandsComputation ()
 
Interval altitude (int i)
 
Interval altitude (int i, const std::string &u)
 
BandsRegion::Region altitudeRegion (int i)
 
int altitudeRangeOf (double alt)
 
int altitudeRangeOf (double alt, const std::string &u)
 
BandsRegion::Region regionOfAltitude (double alt)
 
BandsRegion::Region regionOfAltitude (double alt, const std::string &u)
 
double lastTimeToAltitudeManeuver (const TrafficState &ac)
 
double timeToAltitudeRecovery ()
 
std::vector< TrafficState > const & peripheralAltitudeAircraft (int alert_level)
 
double altitudeResolution (bool dir, int alert_level)
 
double altitudeResolution (bool dir, int alert_level, const std::string &u)
 
double altitudeResolution (bool dir)
 
double altitudeResolution (bool dir, const std::string &u)
 
bool preferredAltitudeDirection (int alert_level)
 
bool preferredAltitudeDirection ()
 
int alerting (const TrafficState &ac, int turning, int accelerating, int climbing)
 
std::string toString () const
 
std::string outputStringInfo ()
 
std::string outputStringAlerting ()
 
std::string outputStringTrackBands ()
 
std::string outputStringGroundSpeedBands ()
 
std::string outputStringVerticalSpeedBands ()
 
std::string outputStringAltitudeBands ()
 
std::string outputStringLastTimeToManeuver ()
 
std::string outputString ()
 
std::string toPVS (int precision)
 
void linearProjection (double offset)
 
bool hasError () const
 
bool hasMessage () const
 
std::string getMessage ()
 
std::string getMessageNoClear () const
 
double getLookaheadTime () const
 
double getLookaheadTime (const std::string &u) const
 
virtual void setLookaheadTime (double t)
 
void setLookaheadTime (double t, const std::string &u)
 
bool isLatLon () const
 
- Public Member Functions inherited from larcfm::GenericBands
virtual double getMaxGroundSpeed (const std::string &unit) const =0
 
virtual double getMaxVerticalSpeed (const std::string &unit) const =0
 

Public Attributes

KinematicBandsCore core_
 
KinematicTrkBands trk_band_
 
KinematicGsBands gs_band_
 
KinematicVsBands vs_band_
 
KinematicAltBands alt_band_
 

Protected Member Functions

void reset ()
 

Protected Attributes

ErrorLog error
 

Private Member Functions

bool check_thresholds (const AlertThresholds &athr, const TrafficState &ac, int turning, int accelerating, int climbing)
 

Detailed Description

Objects of class "KinematicMultiBands" compute the conflict bands using kinematic single-maneuver projections of the ownship and linear preditions of (multiple) traffic aircraft positions. The bands consist of ranges of guidance maneuvers: track angles, ground speeds, vertical speeds, and altitude.

An assumption of the bands information is that the traffic aircraft do not maneuver. If the ownship immediately executes a NONE guidance maneuver, then the new path is conflict free (within a lookahead time of the parameter). If the ownship immediately executes a NEAR/MID/FAR guidance maneuver and no traffic aircraft maneuvers, then there will corresponding alert within the corresponding alerting level thresholds.

If recovery bands are set via setRecoveryBands() and the ownship is in a violation path, loss of separation recovery bands and recovery times are computed for each type of maneuver. If the ownship immediately executes a RECOVERY guidance maneuver, then the new path is conflict-free after the recovery time. Furthermore, the recovery time is the minimum time for which there exists a kinematic conflict-free maneuver in the future.

Note that in the case of geodetic coordinates this version of bands performs an internal projection of the coordinates and velocities into the Euclidean frame (see Util/Projection). Accuracy may be reduced if the traffic plans involve any segments longer than Util.Projection.projectionConflictRange(lat,acc), and an error will be logged if the distance between traffic and ownship exceeds Util.Projection.projectionMaxRange() at any point in the lookahead range.

Disclaimers: The formal proofs of the core algorithms use real numbers, however these implementations use floating point numbers, so numerical differences could result. In addition, the geodetic computations include certain inaccuracies, especially near the poles.

The basic usage is

KinematicMultiBands b = new KinematicMultiBands();
...
b.clear();
b.setOwnship(position of ownship, velocity of ownship);
b.addTraffic(position of (one) traffic aircraft, velocity of traffic);
b.addTraffic(position of (another) traffic aircraft, velocity of traffic);
...add other traffic aircraft...

for (int i = 0; i < b.trackLength(); i++ ) {  
   intrval = b.track(i);
   lower_ang = intrval.low;
   upper_ang = intrval.up;
   regionType = b.trackRegion(i);
   ..do something with this information..
} 

...similar for ground speed and vertical speed...

When any "parameter" to this class is set (separation distance, lookahead time, positions in latitude/longitude, etc.), all previous bands information is cleared, though unlike instantaneous-maneuver bands, ownship and traffic state data is preserved in KineamaticBands unless explicitly cleared.
For more complete example usage see the file Batch.java.

Kinematic bands also have a set of "step size" parameters that determine the granularity of the search. TrackStep indicates the maximum track resolution, GroundSpeedStep for ground speed, and VerticalSpeedStep for vertical speed. These determine the output granularity, for example, if TrackStep is set to 1 degree, bands will be in 1 degree increments.

If the detection calculations discover a maneuver will cause the ownship to enter an intruder's protected zone (e.g. a loss of separation, RA), then all further maneuvers in that direction will be marked with a "near" band. An example of this is if the ownship is moving with a track of 20 deg, and a turn to the right would cause a loss of separation at the 50 deg point, then the "near" bands for track will at least contain the range of approximately 50-200 degrees (current track +180 deg, +/- the trackStep).

Note that Bands outputs hold within a given (constant) frame of reference, with the default being against a stationary Earth (i.e. GPS coordinates and velocities). This means that if bands are instead given wind-oriented input data (airspeed and yaw-heading) for all aircraft, then the output maneuvers will be in the same frame of reference: "groundSpeed" bands should then be read as "airSpeed" bands, and "track" should be read as "heading".

Altitude bands assume assume an immediate maneuver to a given vertical speed, with a level off maneuver to various altitudes (based on altitudeStep, for example, every 500 ft). "NONE" bands here indicate no conflict during or immediately following such a maneuver, assuming all traffic aircraft continue at a constant velocity. "NEAR" bands indicate either a loss of separation during the climb/descent or a conflict after leveling off to that altitude.

Constructor & Destructor Documentation

◆ KinematicMultiBands() [1/3]

larcfm::KinematicMultiBands::KinematicMultiBands ( const KinematicBandsParameters parameters)

Construct a KinematicMultiBands object with initial parameters and an empty list of detectors.

◆ KinematicMultiBands() [2/3]

larcfm::KinematicMultiBands::KinematicMultiBands ( )

Construct a KinematicMultiBands object with the default parameters and an empty list of detectors.

◆ KinematicMultiBands() [3/3]

larcfm::KinematicMultiBands::KinematicMultiBands ( const KinematicMultiBands b)

Construct a KinematicMultiBands object from an existing object. This copies all traffic data.

Member Function Documentation

◆ addTraffic()

void larcfm::KinematicMultiBands::addTraffic ( const std::string &  id,
const Position si,
const Velocity vi 
)
virtual

Add a traffic aircraft to this set of the conflict prevention bands. No traffic aircraft can be added until the ownship is set (see setOwnship()). The coordinate frame of the traffic position must be the same as that of the object.

Parameters
siposition of the traffic
vivelocity of the traffic

Implements larcfm::GenericStateBands.

◆ alerting()

int larcfm::KinematicMultiBands::alerting ( const TrafficState ac,
int  turning,
int  accelerating,
int  climbing 
)

Computes alerting level beteween ownship and aircraft. The number 0 means no alert. A negative number means that aircraft index is not valid. When the alertor object has been configured to consider ownship maneuvers, i.e., using spread values, the alerting logic could also use information about the ownship turning, accelerating, and climbing status as follows:

  • turning < 0: ownship is turning left, turning > 0: ownship is turning right, turning = 0: do not make any turning assumption about the ownship.
  • accelerating < 0: ownship is decelerating, accelerating > 0: ownship is accelerating, accelerating = 0: do not make any accelerating assumption about the ownship.
  • climbing < 0: ownship is descending, climbing > 0: ownship is climbing, climbing = 0: do not make any climbing assumption about the ownship.

◆ altitude() [1/2]

Interval larcfm::KinematicMultiBands::altitude ( int  i)
Returns
the i-th interval, in internal units [m], of the computed altitude bands.
Parameters
iindex

◆ altitude() [2/2]

Interval larcfm::KinematicMultiBands::altitude ( int  i,
const std::string &  u 
)
Returns
the i-th interval, in specified units [u], of the computed altitude bands.
Parameters
iindex
uunits

◆ altitudeLength()

int larcfm::KinematicMultiBands::altitudeLength ( )
Returns
the number of altitude band intervals, negative if the ownship has not been set.

◆ altitudeRangeOf() [1/2]

int larcfm::KinematicMultiBands::altitudeRangeOf ( double  alt)
Returns
the range index of a given altitude specified internal units [m]
Parameters
alt[m]

◆ altitudeRangeOf() [2/2]

int larcfm::KinematicMultiBands::altitudeRangeOf ( double  alt,
const std::string &  u 
)
Returns
the range index of a given altitude specified in given units [u]
Parameters
alt[u]
uUnits

◆ altitudeRegion()

BandsRegion::Region larcfm::KinematicMultiBands::altitudeRegion ( int  i)
Returns
the i-th region of the computed altitude bands.
Parameters
iindex

◆ altitudeResolution() [1/4]

double larcfm::KinematicMultiBands::altitudeResolution ( bool  dir)

Compute altitude resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current altitude

Returns
altitude resolution in internal units [m] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ altitudeResolution() [2/4]

double larcfm::KinematicMultiBands::altitudeResolution ( bool  dir,
const std::string &  u 
)

Compute altitude resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current altitude @parameter u units

Returns
altitude resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ altitudeResolution() [3/4]

double larcfm::KinematicMultiBands::altitudeResolution ( bool  dir,
int  alert_level 
)

Compute altitude resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current altitude

Returns
altitude resolution in internal units [m] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ altitudeResolution() [4/4]

double larcfm::KinematicMultiBands::altitudeResolution ( bool  dir,
int  alert_level,
const std::string &  u 
)

Compute altitude resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current altitude @parameter u units

Returns
altitude resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ check_thresholds()

bool larcfm::KinematicMultiBands::check_thresholds ( const AlertThresholds athr,
const TrafficState ac,
int  turning,
int  accelerating,
int  climbing 
)
private

Return true if and only if threshold values, defining an alerting level, are violated.

◆ clear()

void larcfm::KinematicMultiBands::clear ( )
virtual

Clear ownship and traffic data from this object.

Implements larcfm::GenericBands.

◆ conflictAircraft()

std::vector< TrafficState > const & larcfm::KinematicMultiBands::conflictAircraft ( int  alert_level)

Return list of conflict aircraft for a given alert level. Note: alert level are 1-indexed.

◆ disableCollisionAvoidanceBands()

void larcfm::KinematicMultiBands::disableCollisionAvoidanceBands ( )

Disable collision avoidance bands.

◆ disableConflictCriteria()

void larcfm::KinematicMultiBands::disableConflictCriteria ( )

Disable repulsive criteria for conflict bands.

◆ disableRecoveryBands()

void larcfm::KinematicMultiBands::disableRecoveryBands ( )

Disable recovery bands for track, ground speed, and vertical speed.

◆ disableRecoveryCriteria()

void larcfm::KinematicMultiBands::disableRecoveryCriteria ( )

Disable repulsive criteria for recovery bands.

◆ disableRepulsiveCriteria()

void larcfm::KinematicMultiBands::disableRepulsiveCriteria ( )

Disable repulsive criteria for conflict and recovery bands.

◆ enableCollisionAvoidanceBands()

void larcfm::KinematicMultiBands::enableCollisionAvoidanceBands ( )

Enable collision avoidance bands.

◆ enableConflictCriteria()

void larcfm::KinematicMultiBands::enableConflictCriteria ( )

Enable repulsive criteria for conflict bands.

◆ enableRecoveryBands()

void larcfm::KinematicMultiBands::enableRecoveryBands ( )

Enables recovery bands for track, ground speed, and vertical speed.

◆ enableRecoveryCriteria()

void larcfm::KinematicMultiBands::enableRecoveryCriteria ( )

Enable repulsive criteria for recovery bands.

◆ enableRepulsiveCriteria()

void larcfm::KinematicMultiBands::enableRepulsiveCriteria ( )

Enable repulsive criteria for conflict and recovery bands.

◆ forceAltitudeBandsComputation()

void larcfm::KinematicMultiBands::forceAltitudeBandsComputation ( )

Force computation of altitude bands. Usually, bands are only computed when needed. This method forces the computation of altitude bands (this method is included mainly for debugging purposes).

◆ forceGroundSpeedBandsComputation()

void larcfm::KinematicMultiBands::forceGroundSpeedBandsComputation ( )

Force computation of ground speed bands. Usually, bands are only computed when needed. This method forces the computation of ground speed bands (this method is included mainly for debugging purposes).

◆ forceTrackBandsComputation()

void larcfm::KinematicMultiBands::forceTrackBandsComputation ( )

Force computation of track bands. Usually, bands are only computed when needed. This method forces the computation of track bands (this method is included mainly for debugging purposes).

◆ forceVerticalSpeedBandsComputation()

void larcfm::KinematicMultiBands::forceVerticalSpeedBandsComputation ( )

Force computation of vertical speed bands. Usually, bands are only computed when needed. This method forces the computation of vertical speed bands (this method is included mainly for debugging purposes).

◆ getAltitudeStep() [1/2]

double larcfm::KinematicMultiBands::getAltitudeStep ( ) const
Returns
step size for altitude bands in internal units [m]

◆ getAltitudeStep() [2/2]

double larcfm::KinematicMultiBands::getAltitudeStep ( const std::string &  u) const
Returns
step size for altitude bands in specified units [u].

◆ getBankAngle() [1/2]

double larcfm::KinematicMultiBands::getBankAngle ( ) const
Returns
bank angle in internal units [rad].

◆ getBankAngle() [2/2]

double larcfm::KinematicMultiBands::getBankAngle ( const std::string &  u) const
Returns
bank angle in specified units [u].

◆ getCollisionAvoidanceBandsFactor()

double larcfm::KinematicMultiBands::getCollisionAvoidanceBandsFactor ( )
Returns
get factor for computing collision avoidance bands. Factor value is in (0,1]

◆ getGroundSpeedStep() [1/2]

double larcfm::KinematicMultiBands::getGroundSpeedStep ( ) const
Returns
step size for ground speed bands in internal units [m/s].

◆ getGroundSpeedStep() [2/2]

double larcfm::KinematicMultiBands::getGroundSpeedStep ( const std::string &  u) const
Returns
step size for ground speed bands in specified units [u].

◆ getHorizontalAcceleration() [1/2]

double larcfm::KinematicMultiBands::getHorizontalAcceleration ( ) const
Returns
horizontal acceleration for ground speed bands to value in internal units [m/s^2].

◆ getHorizontalAcceleration() [2/2]

double larcfm::KinematicMultiBands::getHorizontalAcceleration ( const std::string &  u) const
Returns
horizontal acceleration for ground speed bands to value in specified units [u].

◆ getHorizontalNMAC() [1/2]

double larcfm::KinematicMultiBands::getHorizontalNMAC ( ) const
Returns
horizontal NMAC distance in internal units [m].

◆ getHorizontalNMAC() [2/2]

double larcfm::KinematicMultiBands::getHorizontalNMAC ( const std::string &  u) const
Returns
horizontal NMAC distance in specified units [u].

◆ getLeftTrack() [1/2]

double larcfm::KinematicMultiBands::getLeftTrack ( )
Returns
left track in radians [0 - pi] [rad] from current ownship's track

◆ getLeftTrack() [2/2]

double larcfm::KinematicMultiBands::getLeftTrack ( const std::string &  u)
Returns
left track in specified units [0 - pi] [u] from current ownship's track

◆ getLookaheadTime() [1/2]

double larcfm::KinematicMultiBands::getLookaheadTime ( ) const
Returns
lookahead time in seconds.

◆ getLookaheadTime() [2/2]

double larcfm::KinematicMultiBands::getLookaheadTime ( const std::string &  u) const
virtual
Returns
lookahead time in specified units [u].

Implements larcfm::GenericBands.

◆ getMaxAltitude() [1/2]

double larcfm::KinematicMultiBands::getMaxAltitude ( )
Returns
maximum altitude for altitude bands in internal units [m]

◆ getMaxAltitude() [2/2]

double larcfm::KinematicMultiBands::getMaxAltitude ( const std::string &  u)
Returns
maximum altitude for altitude bands in specified units [u].

◆ getMaxGroundSpeed() [1/2]

double larcfm::KinematicMultiBands::getMaxGroundSpeed ( )
Returns
maximum ground speed for ground speed bands in internal units [m/s].

◆ getMaxGroundSpeed() [2/2]

double larcfm::KinematicMultiBands::getMaxGroundSpeed ( const std::string &  u)
Returns
maximum ground speed for ground speed bands in specified units [u].

◆ getMaxVerticalSpeed() [1/2]

double larcfm::KinematicMultiBands::getMaxVerticalSpeed ( )
Returns
maximum vertical speed for vertical speed bands in internal units [m/s].

◆ getMaxVerticalSpeed() [2/2]

double larcfm::KinematicMultiBands::getMaxVerticalSpeed ( const std::string &  u)
Returns
maximum vertical speed for vertical speed bands in specified units [u].

◆ getMessage()

std::string larcfm::KinematicMultiBands::getMessage ( )
inlinevirtual

Return a string representation of any errors or warnings. Calling this method will clear any messages and reset both the error and warning status to none.

Returns
error and warning messages. If there are no messages, an empty string is returned.

Implements larcfm::ErrorReporter.

◆ getMessageNoClear()

std::string larcfm::KinematicMultiBands::getMessageNoClear ( ) const
inlinevirtual

Return a string representation of any errors or warnings. Calling this method will not clear the error or warning status (i.e., hasError() will return the same value before and after this call.)

Returns
error and warning messages. If there are no messages, an empty string is returned.

Implements larcfm::ErrorReporter.

◆ getMinAltitude() [1/2]

double larcfm::KinematicMultiBands::getMinAltitude ( )
Returns
minimum altitude for altitude bands in internal units [m]

◆ getMinAltitude() [2/2]

double larcfm::KinematicMultiBands::getMinAltitude ( const std::string &  u)
Returns
minimum altitude for altitude bands in specified units [u].

◆ getMinGroundSpeed() [1/2]

double larcfm::KinematicMultiBands::getMinGroundSpeed ( )
Returns
minimum ground speed for ground speed bands in internal units [m/s].

◆ getMinGroundSpeed() [2/2]

double larcfm::KinematicMultiBands::getMinGroundSpeed ( const std::string &  u)
Returns
minimum ground speed for ground speed bands in specified units [u].

◆ getMinHorizontalRecovery() [1/2]

double larcfm::KinematicMultiBands::getMinHorizontalRecovery ( ) const
Returns
minimum horizontal separation for recovery bands in internal units [m].

◆ getMinHorizontalRecovery() [2/2]

double larcfm::KinematicMultiBands::getMinHorizontalRecovery ( const std::string &  u) const

Return minimum horizontal separation for recovery bands in specified units [u]

◆ getMinVerticalRecovery() [1/2]

double larcfm::KinematicMultiBands::getMinVerticalRecovery ( ) const
Returns
minimum vertical separation for recovery bands in internal units [m].

◆ getMinVerticalRecovery() [2/2]

double larcfm::KinematicMultiBands::getMinVerticalRecovery ( const std::string &  u) const

Return minimum vertical separation for recovery bands in specified units [u].

◆ getMinVerticalSpeed() [1/2]

double larcfm::KinematicMultiBands::getMinVerticalSpeed ( )
Returns
minimum vertical speed for vertical speed bands in internal units [m/s].

◆ getMinVerticalSpeed() [2/2]

double larcfm::KinematicMultiBands::getMinVerticalSpeed ( const std::string &  u)
Returns
minimum vertical speed for vertical speed bands in specified units [u].

◆ getMostUrgentAircraft()

const TrafficState & larcfm::KinematicMultiBands::getMostUrgentAircraft ( ) const
Returns
most urgent aircraft.

◆ getOwnship()

TrafficState const & larcfm::KinematicMultiBands::getOwnship ( ) const

Ownship and Traffic

◆ getRecoveryStabilityTime() [1/2]

double larcfm::KinematicMultiBands::getRecoveryStabilityTime ( ) const
Returns
recovery stability time in seconds. Recovery bands are computed at time of first green plus this time.

◆ getRecoveryStabilityTime() [2/2]

double larcfm::KinematicMultiBands::getRecoveryStabilityTime ( const std::string &  u) const
Returns
recovery stability time in specified units. Recovery bands are computed at time of first green plus this time.

◆ getRightTrack() [1/2]

double larcfm::KinematicMultiBands::getRightTrack ( )
Returns
right track in radians [0 - pi] [rad] from current ownship's track

◆ getRightTrack() [2/2]

double larcfm::KinematicMultiBands::getRightTrack ( const std::string &  u)
Returns
right track in specified units [0 - pi] [u] from current ownship's track

◆ getTrackStep() [1/2]

double larcfm::KinematicMultiBands::getTrackStep ( ) const
Returns
step size for track bands in internal units [rad].

◆ getTrackStep() [2/2]

double larcfm::KinematicMultiBands::getTrackStep ( const std::string &  u) const
Returns
step size for track bands in specified units [u].

◆ getTurnRate() [1/2]

double larcfm::KinematicMultiBands::getTurnRate ( ) const
Returns
turn rate in internal units [rad/s].

◆ getTurnRate() [2/2]

double larcfm::KinematicMultiBands::getTurnRate ( const std::string &  u) const
Returns
turn rate in specified units [u].

◆ getVerticalAcceleration() [1/2]

double larcfm::KinematicMultiBands::getVerticalAcceleration ( ) const
Returns
constant vertical acceleration for vertical speed and altitude bands in internal [m/s^2] units

◆ getVerticalAcceleration() [2/2]

double larcfm::KinematicMultiBands::getVerticalAcceleration ( const std::string &  u) const
Returns
constant vertical acceleration for vertical speed and altitude bands in specified units

◆ getVerticalNMAC() [1/2]

double larcfm::KinematicMultiBands::getVerticalNMAC ( ) const
Returns
vertical NMAC distance in internal units [m].

◆ getVerticalNMAC() [2/2]

double larcfm::KinematicMultiBands::getVerticalNMAC ( const std::string &  u) const
Returns
vertical NMAC distance in specified units [u].

◆ getVerticalRate() [1/2]

double larcfm::KinematicMultiBands::getVerticalRate ( ) const
Returns
the vertical climb/descend rate for altitude bands in internal units [m/s]

◆ getVerticalRate() [2/2]

double larcfm::KinematicMultiBands::getVerticalRate ( const std::string &  u) const
Returns
the vertical climb/descend rate for altitude bands in specified units [u].

◆ getVerticalSpeedStep() [1/2]

double larcfm::KinematicMultiBands::getVerticalSpeedStep ( ) const
Returns
step size for vertical speed bands in internal units [m/s].

◆ getVerticalSpeedStep() [2/2]

double larcfm::KinematicMultiBands::getVerticalSpeedStep ( const std::string &  u) const
Returns
step size for vertical speed bands in specified units [u].

◆ groundSpeed() [1/2]

Interval larcfm::KinematicMultiBands::groundSpeed ( int  i)
Returns
the i-th interval, in internal units [m/s], of the computed ground speed bands.
Parameters
iindex

◆ groundSpeed() [2/2]

Interval larcfm::KinematicMultiBands::groundSpeed ( int  i,
const std::string &  u 
)
virtual
Returns
the i-th interval, in specified units [u], of the computed ground speed bands.
Parameters
iindex
uunits

Implements larcfm::GenericBands.

◆ groundSpeedLength()

int larcfm::KinematicMultiBands::groundSpeedLength ( )
virtual
Returns
the number of ground speed band intervals, negative if the ownship has not been set

Implements larcfm::GenericBands.

◆ groundSpeedRangeOf() [1/2]

int larcfm::KinematicMultiBands::groundSpeedRangeOf ( double  gs)
Returns
the range index of a given ground speed specified in internal units [m/s]
Parameters
gs[m/s]

◆ groundSpeedRangeOf() [2/2]

int larcfm::KinematicMultiBands::groundSpeedRangeOf ( double  gs,
const std::string &  u 
)
Returns
the range index of a given ground speed specified in given units [u]
Parameters
gs[u]
uUnits

◆ groundSpeedRegion()

BandsRegion::Region larcfm::KinematicMultiBands::groundSpeedRegion ( int  i)
virtual
Returns
the i-th region of the computed ground speed bands.
Parameters
iindex

Implements larcfm::GenericBands.

◆ groundSpeedResolution() [1/4]

double larcfm::KinematicMultiBands::groundSpeedResolution ( bool  dir)

Compute ground speed resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current ground speed

Returns
ground speed resolution in internal units [m/s] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ groundSpeedResolution() [2/4]

double larcfm::KinematicMultiBands::groundSpeedResolution ( bool  dir,
const std::string &  u 
)

Compute ground speed resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current ground speed @parameter u units

Returns
ground speed resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ groundSpeedResolution() [3/4]

double larcfm::KinematicMultiBands::groundSpeedResolution ( bool  dir,
int  alert_level 
)

Compute ground speed resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current ground speed

Returns
ground speed resolution in internal units [m/s] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ groundSpeedResolution() [4/4]

double larcfm::KinematicMultiBands::groundSpeedResolution ( bool  dir,
int  alert_level,
const std::string &  u 
)

Compute ground speed resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current ground speed @parameter u units

Returns
ground speed resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ hasError()

bool larcfm::KinematicMultiBands::hasError ( ) const
inlinevirtual

Does this object have an error?

Returns
true if there is an error.

Implements larcfm::ErrorReporter.

◆ hasMessage()

bool larcfm::KinematicMultiBands::hasMessage ( ) const
inlinevirtual

Does this object have an error or a warning?

Returns
true if there is an error or warning.

Implements larcfm::ErrorReporter.

◆ isEnabledCollisionAvoidanceBands()

bool larcfm::KinematicMultiBands::isEnabledCollisionAvoidanceBands ( ) const
Returns
true if collision avoidance bands are enabled.

◆ isEnabledConflictCriteria()

bool larcfm::KinematicMultiBands::isEnabledConflictCriteria ( ) const
Returns
true if repulsive criteria is enabled for conflict bands.

◆ isEnabledRecoveryAltitudeBands()

bool larcfm::KinematicMultiBands::isEnabledRecoveryAltitudeBands ( )
Returns
true if recovery altitude bands are enabled.

◆ isEnabledRecoveryCriteria()

bool larcfm::KinematicMultiBands::isEnabledRecoveryCriteria ( ) const
Returns
true if repulsive criteria is enabled for recovery bands.

◆ isEnabledRecoveryGroundSpeedBands()

bool larcfm::KinematicMultiBands::isEnabledRecoveryGroundSpeedBands ( )
Returns
true if recovery ground speed bands are enabled.

◆ isEnabledRecoveryTrackBands()

bool larcfm::KinematicMultiBands::isEnabledRecoveryTrackBands ( ) const
Returns
true if recovery track bands are enabled.

◆ isEnabledRecoveryVerticalSpeedBands()

bool larcfm::KinematicMultiBands::isEnabledRecoveryVerticalSpeedBands ( )
Returns
true if recovery vertical speed bands are enabled.

◆ isLatLon()

bool larcfm::KinematicMultiBands::isLatLon ( ) const
virtual

Returns whether the aircraft positions are specified in latitude/longitude or Euclidean coordinates. If the ownship has not been set, then this value is undefined.

Implements larcfm::GenericBands.

◆ lastTimeToAltitudeManeuver()

double larcfm::KinematicMultiBands::lastTimeToAltitudeManeuver ( const TrafficState ac)

Return last time to altitude maneuver, in seconds, for ownship with respect to traffic aircraft ac. Return NaN if the ownship is not in conflict with aircraft ac within lookahead time. Return negative infinity if there is no time to maneuver.

◆ lastTimeToGroundSpeedManeuver()

double larcfm::KinematicMultiBands::lastTimeToGroundSpeedManeuver ( const TrafficState ac)

Return last time to ground speed maneuver, in seconds, for ownship with respect to traffic aircraft ac. Return NaN if the ownship is not in conflict with aircraft ac within lookahead time. Return negative infinity if there is no time to maneuver.

◆ lastTimeToTrackManeuver()

double larcfm::KinematicMultiBands::lastTimeToTrackManeuver ( const TrafficState ac)

Return last time to track maneuver, in seconds, for ownship with respect to traffic aircraft ac. Return NaN if the ownship is not in conflict with aircraft ac within lookahead time. Return negative infinity if there is no time to maneuver.

◆ lastTimeToVerticalSpeedManeuver()

double larcfm::KinematicMultiBands::lastTimeToVerticalSpeedManeuver ( const TrafficState ac)

Return last time to vertical speed maneuver, in seconds, for ownship with respect to traffic aircraft ac. Return NaN if the ownship is not in conflict with aircraft ac within lookahead time. Return negative infinity if there is no time to maneuver.

◆ peripheralAltitudeAircraft()

std::vector< TrafficState > const & larcfm::KinematicMultiBands::peripheralAltitudeAircraft ( int  alert_level)
Returns
list of aircraft responsible for peripheral altitude bands for a given alert level. Note: alert level are 1-indexed.

◆ peripheralGroundSpeedAircraft()

std::vector< TrafficState > const & larcfm::KinematicMultiBands::peripheralGroundSpeedAircraft ( int  alert_level)
Returns
list of aircraft responsible for peripheral ground speed bands for a given alert level. Note: alert level are 1-indexed.

◆ peripheralTrackAircraft()

std::vector< TrafficState > const & larcfm::KinematicMultiBands::peripheralTrackAircraft ( int  alert_level)
Returns
list of aircraft responsible for peripheral track bands for a given alert level. Note: alert level are 1-indexed.

◆ peripheralVerticalSpeedAircraft()

std::vector< TrafficState > const & larcfm::KinematicMultiBands::peripheralVerticalSpeedAircraft ( int  alert_level)
Returns
list of aircraft responsible for peripheral vertical speed bands for a given alert level. Note: alert level are 1-indexed.

◆ preferredAltitudeDirection() [1/2]

bool larcfm::KinematicMultiBands::preferredAltitudeDirection ( )

Compute preferred altitude direction, for conflict alert level, based on resolution that is closer to current altitude. True: Climb, False: Descend.

◆ preferredAltitudeDirection() [2/2]

bool larcfm::KinematicMultiBands::preferredAltitudeDirection ( int  alert_level)

Compute preferred altitude direction, for given alert level, based on resolution that is closer to current altitude. True: Climb, False: Descend.

◆ preferredGroundSpeedDirection() [1/2]

bool larcfm::KinematicMultiBands::preferredGroundSpeedDirection ( )

Compute preferred ground speed direction, for conflict alert level, based on resolution that is closer to current ground speed. True: Increase speed, False: Decrease speed.

◆ preferredGroundSpeedDirection() [2/2]

bool larcfm::KinematicMultiBands::preferredGroundSpeedDirection ( int  alert_level)

Compute preferred ground speed direction, for given alert level, based on resolution that is closer to current ground speed. True: Increase speed, False: Decrease speed.

◆ preferredTrackDirection() [1/2]

bool larcfm::KinematicMultiBands::preferredTrackDirection ( )

Compute preferred track direction, for conflict alert level, based on resolution that is closer to current track. True: Right. False: Left.

◆ preferredTrackDirection() [2/2]

bool larcfm::KinematicMultiBands::preferredTrackDirection ( int  alert_level)

Compute preferred track direction, for given alert level, based on resolution that is closer to current track. True: Right. False: Left.

◆ preferredVerticalSpeedDirection() [1/2]

bool larcfm::KinematicMultiBands::preferredVerticalSpeedDirection ( )

Compute preferred vertical speed direction, for conflict alert level, based on resolution that is closer to current vertical speed. True: Increase speed, False: Decrease speed.

◆ preferredVerticalSpeedDirection() [2/2]

bool larcfm::KinematicMultiBands::preferredVerticalSpeedDirection ( int  alert_level)

Compute preferred vertical speed direction, for given alert level, based on resolution that is closer to current vertical speed. True: Increase speed, False: Decrease speed.

◆ regionOfAltitude() [1/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfAltitude ( double  alt)
Returns
the region of a given altitude specified in internal units [m]
Parameters
alt[m]

◆ regionOfAltitude() [2/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfAltitude ( double  alt,
const std::string &  u 
)
Returns
the region of a given altitude specified in given units [u]
Parameters
alt[u]
uUnits

◆ regionOfGroundSpeed() [1/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfGroundSpeed ( double  gs)
Returns
the region of a given ground speed specified in internal units [m/s]
Parameters
gs[m/s]

◆ regionOfGroundSpeed() [2/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfGroundSpeed ( double  gs,
const std::string &  u 
)
virtual
Returns
the region of a given ground speed specified in given units [u]
Parameters
gs[u]
uUnits

Implements larcfm::GenericBands.

◆ regionOfTrack() [1/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfTrack ( double  trk)
Returns
the region of a given track specified in internal units [rad].
Parameters
trk[rad]

◆ regionOfTrack() [2/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfTrack ( double  trk,
const std::string &  u 
)
virtual
Returns
the region of a given track specified in given units [u]
Parameters
trk[u]
uUnits

Implements larcfm::GenericBands.

◆ regionOfVerticalSpeed() [1/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfVerticalSpeed ( double  vs)
Returns
the region of a given vertical speed specified in internal units [m/s]
Parameters
vs[m/s]

◆ regionOfVerticalSpeed() [2/2]

BandsRegion::Region larcfm::KinematicMultiBands::regionOfVerticalSpeed ( double  vs,
const std::string &  u 
)
virtual
Returns
the region of a given vertical speed specified in given units [u]
Parameters
vs[u]
uUnits

Implements larcfm::GenericBands.

◆ setAlertor()

void larcfm::KinematicMultiBands::setAlertor ( const AlertLevels alertor)

Set alert thresholds

◆ setAltitudeStep() [1/2]

void larcfm::KinematicMultiBands::setAltitudeStep ( double  val)

Sets step size for altitude bands to value in internal units [m]

◆ setAltitudeStep() [2/2]

void larcfm::KinematicMultiBands::setAltitudeStep ( double  val,
const std::string &  u 
)

Sets step size for altitude bands to value in specified units [u].

◆ setBankAngle() [1/2]

void larcfm::KinematicMultiBands::setBankAngle ( double  val)

Sets bank angle for track bands to value in internal units [rad]. As a side effect, this method resets the turn rate.

◆ setBankAngle() [2/2]

void larcfm::KinematicMultiBands::setBankAngle ( double  val,
const std::string &  u 
)

Sets bank angle for track bands to value in specified units [u]. As a side effect, this method resets the turn rate.

◆ setBelowAboveAltitude() [1/2]

void larcfm::KinematicMultiBands::setBelowAboveAltitude ( double  below,
double  above 
)

Set below/above altitude, relative to ownship's altitude, for bands computations. Altitude are specified in internal units [m]. Below and above are expected to be non-negative values.

◆ setBelowAboveAltitude() [2/2]

void larcfm::KinematicMultiBands::setBelowAboveAltitude ( double  below,
double  above,
const std::string &  u 
)

Set below/above altitude, relative to ownship's altitude, for bands computations. Altitudes are specified in given units [u]. Below and above are expected to be non-negative values.

◆ setBelowAboveGroundSpeed() [1/2]

void larcfm::KinematicMultiBands::setBelowAboveGroundSpeed ( double  below,
double  above 
)

Set below/above ground speed, relative to ownship's ground speed, for bands computations. Ground speeds are specified in internal units [m/s]. Below and above are expected to be non-negative values.

◆ setBelowAboveGroundSpeed() [2/2]

void larcfm::KinematicMultiBands::setBelowAboveGroundSpeed ( double  below,
double  above,
const std::string &  u 
)

Set below/above ground speed, relative to ownship's ground speed, for bands computations. Ground speeds are specified in given units [u]. Below and above are expected to be non-negative values.

◆ setBelowAboveVerticalSpeed() [1/2]

void larcfm::KinematicMultiBands::setBelowAboveVerticalSpeed ( double  below,
double  above 
)

Set below/above vertical speed, relative to ownship's vertical speed, for bands computations. Vertical speeds are specified in internal units [m/s]. Below and above are expected to be non-negative values.

◆ setBelowAboveVerticalSpeed() [2/2]

void larcfm::KinematicMultiBands::setBelowAboveVerticalSpeed ( double  below,
double  above,
const std::string &  u 
)

Set below/above vertical speed, relative to ownship's vertical speed, for bands computations. Vertical speeds are specified in given units [u]. Below and above are expected to be non-negative values.

◆ setCollisionAvoidanceBands()

void larcfm::KinematicMultiBands::setCollisionAvoidanceBands ( bool  flag)

Enable/disable collision avoidance bands.

◆ setCollisionAvoidanceBandsFactor()

void larcfm::KinematicMultiBands::setCollisionAvoidanceBandsFactor ( double  val)
Returns
set factor for computing collision avoidance bands. Factor value is in (0,1]

◆ setConflictCriteria()

void larcfm::KinematicMultiBands::setConflictCriteria ( bool  flag)

Enable/disable repulsive criteria for conflict bands.

◆ setGroundSpeedStep() [1/2]

void larcfm::KinematicMultiBands::setGroundSpeedStep ( double  val)

Sets step size for ground speed bands to value in internal units [m/s].

◆ setGroundSpeedStep() [2/2]

void larcfm::KinematicMultiBands::setGroundSpeedStep ( double  val,
const std::string &  u 
)

Sets step size for ground speed bands to value in specified units [u].

◆ setHorizontalAcceleration() [1/2]

void larcfm::KinematicMultiBands::setHorizontalAcceleration ( double  val)

Sets horizontal acceleration for ground speed bands to value in internal units [m/s^2].

◆ setHorizontalAcceleration() [2/2]

void larcfm::KinematicMultiBands::setHorizontalAcceleration ( double  val,
const std::string &  u 
)

Sets horizontal acceleration for ground speed bands to value in specified units [u].

◆ setHorizontalNMAC() [1/2]

void larcfm::KinematicMultiBands::setHorizontalNMAC ( double  val)

Set horizontal NMAC distance to value in internal units [m].

◆ setHorizontalNMAC() [2/2]

void larcfm::KinematicMultiBands::setHorizontalNMAC ( double  val,
const std::string &  u 
)

Set horizontal NMAC distance to value in specified units [u].

◆ setKinematicBandsParameters()

void larcfm::KinematicMultiBands::setKinematicBandsParameters ( const KinematicBandsParameters parameters)

Set bands parameters

◆ setLeftTrack() [1/2]

void larcfm::KinematicMultiBands::setLeftTrack ( double  val)

Set left track to value in internal units [rad]. Value is expected to be in [0 - pi]

◆ setLeftTrack() [2/2]

void larcfm::KinematicMultiBands::setLeftTrack ( double  val,
const std::string &  u 
)

Set left track to value in specified units [u]. Value is expected to be in [0 - pi]

◆ setLookaheadTime() [1/2]

virtual void larcfm::KinematicMultiBands::setLookaheadTime ( double  t)
virtual

Sets lookahead time in seconds.

Reimplemented in larcfm::KinematicBands.

◆ setLookaheadTime() [2/2]

void larcfm::KinematicMultiBands::setLookaheadTime ( double  t,
const std::string &  u 
)
virtual

Sets lookahead time in specified units [u].

Implements larcfm::GenericBands.

◆ setMaxAltitude() [1/2]

void larcfm::KinematicMultiBands::setMaxAltitude ( double  val)

Sets maximum altitude for altitude bands to value in internal units [m]

◆ setMaxAltitude() [2/2]

void larcfm::KinematicMultiBands::setMaxAltitude ( double  val,
const std::string &  u 
)

Sets maximum altitude for altitude bands to value in specified units [u].

◆ setMaxGroundSpeed() [1/2]

void larcfm::KinematicMultiBands::setMaxGroundSpeed ( double  val)

Sets maximum ground speed for ground speed bands to value in internal units [m/s].

◆ setMaxGroundSpeed() [2/2]

void larcfm::KinematicMultiBands::setMaxGroundSpeed ( double  val,
const std::string &  u 
)
virtual

Sets maximum ground speed for ground speed bands to value in specified units [u].

Implements larcfm::GenericBands.

◆ setMaxVerticalSpeed() [1/2]

void larcfm::KinematicMultiBands::setMaxVerticalSpeed ( double  val)

Sets maximum vertical speed for vertical speed bands to value in internal units [m/s].

◆ setMaxVerticalSpeed() [2/2]

void larcfm::KinematicMultiBands::setMaxVerticalSpeed ( double  val,
const std::string &  u 
)
virtual

Sets maximum vertical speed for vertical speed bands to value in specified units [u].

Implements larcfm::GenericBands.

◆ setMinAltitude() [1/2]

void larcfm::KinematicMultiBands::setMinAltitude ( double  val)

Sets minimum altitude for altitude bands to value in internal units [m]

◆ setMinAltitude() [2/2]

void larcfm::KinematicMultiBands::setMinAltitude ( double  val,
const std::string &  u 
)

Sets minimum altitude for altitude bands to value in specified units [u].

◆ setMinGroundSpeed() [1/2]

void larcfm::KinematicMultiBands::setMinGroundSpeed ( double  val)

Sets minimum ground speed for ground speed bands to value in internal units [m/s].

◆ setMinGroundSpeed() [2/2]

void larcfm::KinematicMultiBands::setMinGroundSpeed ( double  val,
const std::string &  u 
)

Sets minimum ground speed for ground speed bands to value in specified units [u].

◆ setMinHorizontalRecovery() [1/2]

void larcfm::KinematicMultiBands::setMinHorizontalRecovery ( double  val)

Sets minimum horizontal separation for recovery bands in internal units [m].

◆ setMinHorizontalRecovery() [2/2]

void larcfm::KinematicMultiBands::setMinHorizontalRecovery ( double  val,
const std::string &  u 
)

Set minimum horizontal separation for recovery bands in specified units [u].

◆ setMinMaxTrack() [1/2]

void larcfm::KinematicMultiBands::setMinMaxTrack ( double  min,
double  max 
)

Set absolute min/max tracks for bands computations. Tracks are specified in internal units [rad]. Values are expected to be in [0 - 2pi]

◆ setMinMaxTrack() [2/2]

void larcfm::KinematicMultiBands::setMinMaxTrack ( double  min,
double  max,
const std::string &  u 
)

Set absolute min/max tracks for bands computations. Tracks are specified in given units [u]. Values are expected to be in [0 - 2pi] [u]

◆ setMinVerticalRecovery() [1/2]

void larcfm::KinematicMultiBands::setMinVerticalRecovery ( double  val)

Sets minimum vertical separation for recovery bands in internal units [m].

◆ setMinVerticalRecovery() [2/2]

void larcfm::KinematicMultiBands::setMinVerticalRecovery ( double  val,
const std::string &  u 
)

Set minimum vertical separation for recovery bands in units

◆ setMinVerticalSpeed() [1/2]

void larcfm::KinematicMultiBands::setMinVerticalSpeed ( double  val)

Sets minimum vertical speed for vertical speed bands to value in internal units [m/s].

◆ setMinVerticalSpeed() [2/2]

void larcfm::KinematicMultiBands::setMinVerticalSpeed ( double  val,
const std::string &  u 
)

Sets minimum vertical speed for vertical speed bands to value in specified units [u].

◆ setMostUrgentAircraft() [1/2]

void larcfm::KinematicMultiBands::setMostUrgentAircraft ( const std::string &  id)

Set most urgent aircraft by identifier.

◆ setMostUrgentAircraft() [2/2]

void larcfm::KinematicMultiBands::setMostUrgentAircraft ( const TrafficState ac)

Set most urgent aircraft.

◆ setOwnship()

void larcfm::KinematicMultiBands::setOwnship ( const std::string &  id,
const Position s,
const Velocity v 
)
virtual

Specify the ownship's position and velocity. Once the ownship is set, any existing 'band' information is cleared. This also sets the coordinate frame for this object.

Parameters
sownship position
vownship velocity

Implements larcfm::GenericStateBands.

◆ setRecoveryAltitudeBands()

void larcfm::KinematicMultiBands::setRecoveryAltitudeBands ( bool  flag)

Sets recovery bands flag for altitude bands to specified value.

◆ setRecoveryBands()

void larcfm::KinematicMultiBands::setRecoveryBands ( bool  flag)

Sets recovery bands flag for track, ground speed, and vertical speed bands to specified value.

◆ setRecoveryCriteria()

void larcfm::KinematicMultiBands::setRecoveryCriteria ( bool  flag)

Enable/disable repulsive criteria for recovery bands.

◆ setRecoveryGroundSpeedBands()

void larcfm::KinematicMultiBands::setRecoveryGroundSpeedBands ( bool  flag)

Sets recovery bands flag for ground speed bands to specified value.

◆ setRecoveryStabilityTime() [1/2]

void larcfm::KinematicMultiBands::setRecoveryStabilityTime ( double  t)

Sets recovery stability time in seconds. Recovery bands are computed at time of first green plus this time.

◆ setRecoveryStabilityTime() [2/2]

void larcfm::KinematicMultiBands::setRecoveryStabilityTime ( double  t,
const std::string &  u 
)

Sets recovery stability time in specified units. Recovery bands are computed at time of first green plus this time.

◆ setRecoveryTrackBands()

void larcfm::KinematicMultiBands::setRecoveryTrackBands ( bool  flag)

Sets recovery bands flag for track bands to specified value.

◆ setRecoveryVerticalSpeedBands()

void larcfm::KinematicMultiBands::setRecoveryVerticalSpeedBands ( bool  flag)

Sets recovery bands flag for vertical speed bands to specified value.

◆ setRepulsiveCriteria()

void larcfm::KinematicMultiBands::setRepulsiveCriteria ( bool  flag)

Enable/disable repulsive criteria for conflict and recovery bands.

◆ setRightTrack() [1/2]

void larcfm::KinematicMultiBands::setRightTrack ( double  val)

Set right track to value in internal units [rad]. Value is expected to be in [0 - pi]

◆ setRightTrack() [2/2]

void larcfm::KinematicMultiBands::setRightTrack ( double  val,
const std::string &  u 
)

Set right track to value in specified units [u]. Value is expected to be in [0 - pi]

◆ setTrackStep() [1/2]

void larcfm::KinematicMultiBands::setTrackStep ( double  val)

Sets step size for track bands in internal units [rad].

◆ setTrackStep() [2/2]

void larcfm::KinematicMultiBands::setTrackStep ( double  val,
const std::string &  u 
)

Sets step size for track bands in specified units [u].

◆ setTurnRate() [1/2]

void larcfm::KinematicMultiBands::setTurnRate ( double  val)

Sets turn rate for track bands to value in internal units [rad/s]. As a side effect, this method resets the bank angle.

◆ setTurnRate() [2/2]

void larcfm::KinematicMultiBands::setTurnRate ( double  val,
const std::string &  u 
)

Sets turn rate for track bands to value in specified units [u]. As a side effect, this method resets the bank angle.

◆ setVerticalAcceleration() [1/2]

void larcfm::KinematicMultiBands::setVerticalAcceleration ( double  val)

Sets the constant vertical acceleration for vertical speed and altitude bands to value in internal units [m/s^2]

◆ setVerticalAcceleration() [2/2]

void larcfm::KinematicMultiBands::setVerticalAcceleration ( double  val,
const std::string &  u 
)

Sets the constant vertical acceleration for vertical speed and altitude bands to value in specified units [u].

◆ setVerticalNMAC() [1/2]

void larcfm::KinematicMultiBands::setVerticalNMAC ( double  val)

Set vertical NMAC distance to value in internal units [m].

◆ setVerticalNMAC() [2/2]

void larcfm::KinematicMultiBands::setVerticalNMAC ( double  val,
const std::string &  u 
)

Set vertical NMAC distance to value in specified units [u].

◆ setVerticalRate() [1/2]

void larcfm::KinematicMultiBands::setVerticalRate ( double  val)

Sets vertical rate for altitude bands to value in internal units [m/s]

◆ setVerticalRate() [2/2]

void larcfm::KinematicMultiBands::setVerticalRate ( double  val,
const std::string &  u 
)

Sets vertical rate for altitude bands to value in specified units [u].

◆ setVerticalSpeedStep() [1/2]

void larcfm::KinematicMultiBands::setVerticalSpeedStep ( double  val)

Sets step size for vertical speed bands to value in internal units [m/s].

◆ setVerticalSpeedStep() [2/2]

void larcfm::KinematicMultiBands::setVerticalSpeedStep ( double  val,
const std::string &  u 
)

Sets step size for vertical speed bands to value in specified units [u].

◆ timeIntervalOfViolation()

Interval const & larcfm::KinematicMultiBands::timeIntervalOfViolation ( int  alert_level)

Return time interval of violation for given alert level Requires: 1 <= alert_level <= alertor.mostSevereAlertLevel()

◆ timeToAltitudeRecovery()

double larcfm::KinematicMultiBands::timeToAltitudeRecovery ( )
Returns
time to recovery using altitude bands. Return NaN when bands are not saturated or when recovery bands are not enabled. Return negative infinity when no recovery within max_recovery_time.

◆ timeToGroundSpeedRecovery()

double larcfm::KinematicMultiBands::timeToGroundSpeedRecovery ( )
Returns
time to recovery using ground speed bands. Return NaN when bands are not saturated or when recovery bands are not enabled. Return negative infinity when no recovery within max_recovery_time.

◆ timeToTrackRecovery()

double larcfm::KinematicMultiBands::timeToTrackRecovery ( )
Returns
time to recovery using track bands. Return NaN when bands are not saturated or when recovery bands are not enabled. Return negative infinity when no recovery within max_recovery_time.

◆ timeToVerticalSpeedRecovery()

double larcfm::KinematicMultiBands::timeToVerticalSpeedRecovery ( )
Returns
time to recovery using vertical speed bands. Return NaN when bands are not saturated or when recovery bands are not enabled. Return negative infinity when no recovery within max_recovery_time.

◆ toString()

std::string larcfm::KinematicMultiBands::toString ( ) const
virtual

Return a string representing this object.

Implements larcfm::GenericBands.

◆ track() [1/2]

Interval larcfm::KinematicMultiBands::track ( int  i)
Returns
the i-th interval, in internal units [rad], of the computed track bands.
Parameters
iindex

◆ track() [2/2]

Interval larcfm::KinematicMultiBands::track ( int  i,
const std::string &  u 
)
virtual
Returns
the i-th interval, in specified units [u], of the computed track bands.
Parameters
iindex
uunits

Implements larcfm::GenericBands.

◆ trackLength()

int larcfm::KinematicMultiBands::trackLength ( )
virtual
Returns
the number of track band intervals, negative if the ownship has not been set

Implements larcfm::GenericBands.

◆ trackRangeOf() [1/2]

int larcfm::KinematicMultiBands::trackRangeOf ( double  trk)
Returns
the range index of a given track specified in internal units [rad]
Parameters
trk[rad]

◆ trackRangeOf() [2/2]

int larcfm::KinematicMultiBands::trackRangeOf ( double  trk,
const std::string &  u 
)
Returns
the range index of a given track specified in given units [u]
Parameters
trk[u]
uUnits

◆ trackRegion()

BandsRegion::Region larcfm::KinematicMultiBands::trackRegion ( int  i)
virtual
Returns
the i-th region of the computed track bands.
Parameters
iindex

Implements larcfm::GenericBands.

◆ trackResolution() [1/4]

double larcfm::KinematicMultiBands::trackResolution ( bool  dir)

Compute track resolution maneuver for conflict alert level. @parameter dir is right (true)/left (false) of ownship current track

Returns
track resolution in internal units [rad] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no resolution to the right, and negative infinity if there is no resolution to the left.

◆ trackResolution() [2/4]

double larcfm::KinematicMultiBands::trackResolution ( bool  dir,
const std::string &  u 
)

Compute track resolution maneuver for conflict alert level. @parameter dir is right (true)/left (false) of ownship current track @parameter u units

Returns
track resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no resolution to the right, and negative infinity if there is no resolution to the left.

◆ trackResolution() [3/4]

double larcfm::KinematicMultiBands::trackResolution ( bool  dir,
int  alert_level 
)

Compute track resolution maneuver for given alert level. @parameter dir is right (true)/left (false) of ownship current track

Returns
track resolution in internal units [rad] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no resolution to the right, and negative infinity if there is no resolution to the left.

◆ trackResolution() [4/4]

double larcfm::KinematicMultiBands::trackResolution ( bool  dir,
int  alert_level,
const std::string &  u 
)

Compute track resolution maneuver for conflict alert level. @parameter dir is right (true)/left (false) of ownship current track @parameter u units

Returns
track resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no resolution to the right, and negative infinity if there is no resolution to the left.

◆ verticalSpeed() [1/2]

Interval larcfm::KinematicMultiBands::verticalSpeed ( int  i)
Returns
the i-th interval, in internal units [m/s], of the computed vertical speed bands.
Parameters
iindex

◆ verticalSpeed() [2/2]

Interval larcfm::KinematicMultiBands::verticalSpeed ( int  i,
const std::string &  u 
)
virtual
Returns
the i-th interval, in specified units [u], of the computed vertical speed bands.
Parameters
iindex
uunits

Implements larcfm::GenericBands.

◆ verticalSpeedLength()

int larcfm::KinematicMultiBands::verticalSpeedLength ( )
virtual
Returns
the number of vertical speed band intervals, negative if the ownship has not been set

Implements larcfm::GenericBands.

◆ verticalSpeedRangeOf() [1/2]

int larcfm::KinematicMultiBands::verticalSpeedRangeOf ( double  vs)
Returns
the region of a given vertical speed specified in internal units [m/s]
Parameters
vs[m/s]

◆ verticalSpeedRangeOf() [2/2]

int larcfm::KinematicMultiBands::verticalSpeedRangeOf ( double  vs,
const std::string &  u 
)
Returns
the region of a given vertical speed specified in given units [u]
Parameters
vs[u]
uUnits

◆ verticalSpeedRegion()

BandsRegion::Region larcfm::KinematicMultiBands::verticalSpeedRegion ( int  i)
virtual
Returns
the i-th region of the computed vertical speed bands.
Parameters
iindex

Implements larcfm::GenericBands.

◆ verticalSpeedResolution() [1/4]

double larcfm::KinematicMultiBands::verticalSpeedResolution ( bool  dir)

Compute vertical speed resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current vertical speed

Returns
vertical speed resolution in internal units [m/s] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ verticalSpeedResolution() [2/4]

double larcfm::KinematicMultiBands::verticalSpeedResolution ( bool  dir,
const std::string &  u 
)

Compute vertical speed resolution maneuver for conflict alert level. @parameter dir is up (true)/down (false) of ownship current vertical speed @parameter u units

Returns
vertical speed resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ verticalSpeedResolution() [3/4]

double larcfm::KinematicMultiBands::verticalSpeedResolution ( bool  dir,
int  alert_level 
)

Compute vertical speed resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current vertical speed

Returns
vertical speed resolution in internal units [m/s] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

◆ verticalSpeedResolution() [4/4]

double larcfm::KinematicMultiBands::verticalSpeedResolution ( bool  dir,
int  alert_level,
const std::string &  u 
)

Compute vertical speed resolution maneuver for given alert level. @parameter dir is up (true)/down (false) of ownship current vertical speed @parameter u units

Returns
vertical speed resolution in specified units [u] in specified direction. Resolution maneuver is valid for lookahead time. Return NaN if there is no conflict, positive infinity if there is no up resolution, and negative infinity if there is no down resolution.

The documentation for this class was generated from the following file: