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

#include <CriteriaCore.h>

Static Public Member Functions

static int horizontalCoordination (const Vect2 &s, const Vect2 &v)
 
static int horizontalCoordination (const Vect3 &s, const Vect3 &v)
 
static int verticalCoordination (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double D, double H, std::string ownship, std::string traffic)
 
static bool horizontal_criterion (const Vect2 &sp, const Vect2 &v, double D, int epsh)
 
static bool vertical_criterion (int eps, const Vect3 &s, const Vect3 &v, const Vect3 &nv, double D, double H)
 
static bool horizontal_los_criterion (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const Vect2 &nvo, int eps)
 
static void printRepulsiveCriteria2DTerms (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const Vect2 &nvo, int eps)
 
static void printRepulsiveCriteriaTerms (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const Vect3 &nvo, int eps)
 
static bool horizontalRepulsiveCriteria (const Vect3 &s3, const Velocity &vo3, const Velocity &vi3, const Velocity &nvo3, int eps)
 
static bool verticalRepulsiveCriterion (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const Vect3 &nvo, double H, double minrelvs, int epsv)
 
static bool criteria (const Vect3 &s, const Velocity &vo, const Velocity &vi, const Velocity &nvo, double minRelVs, double D, double H, int epsh, int epsv)
 
static Vect2 incr_trk_vect (const Vect2 &vo, double step, int dir)
 
static int losr_trk_iter_dir (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, double step, int eps)
 
static int trkSearchDirection (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, int eps)
 
static Vect2 incr_gs_vect (const Vect2 &vo, double step, int dir)
 
static int losr_gs_iter_dir (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, double mings, double maxgs, double step, int eps)
 
static int gsSearchDirection (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, int eps)
 
static int vsSearchDirection (int epsv)
 
static int dataVsRateEpsilon (int epsv, double vsRate)
 
static int dataTurnEpsilon (const Vect3 &s, const Velocity &vo, const Velocity &vi, int epsh, double trackRate)
 
static bool horizontal_new_repulsive_criterion (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const Vect2 &nvo, int eps)
 
static bool horizontal_new_repulsive_criterion (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const Vect3 &nvo, int eps)
 
static bool vertical_new_repulsive_criterion (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const Vect3 &nvo, int eps)
 
static int verticalCoordinationLoS (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, std::string ownship, std::string traffic)
 

Static Private Member Functions

static bool horizontal_criterion_0 (const Vect2 &sp, int eps, const Vect2 &v, double D)
 
static int verticalCoordinationConflict (const Vect3 &s, const Vect3 &v, double D, std::string ownship, std::string traffic)
 
static bool criterion_3D (const Vect3 &sp, const Velocity &v, int epsH, int epsV, const Velocity &nv, double D, double H)
 
static Vect3 vertical_decision_vect (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double caD, double caH)
 
static int losr_vs_dir (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double caD, double caH, std::string ownship, std::string traffic)
 
static bool vs_bound_crit (const Vect3 &v, const Vect3 &nv, int eps)
 
static double min_rel_vert_speed (double vz, int eps, double minrelvs)
 
static bool vertical_los_criterion (const Vect3 &s, const Vect3 &v, const Vect3 &nv, int eps, double H, double minrelvs)
 
static int breakSymmetry (const Vect3 &s, std::string ownship, std::string traffic)
 

Detailed Description

This class provides criteria for

 horizontal conflict               (See ACCoRD PVS theory: horizontal_criterion.pvs)
 vertical conflict                 (See ACCoRD PVS theory: vertical_criterion.pvs)
 horizontal loss of separation     (See ACCoRD PVS theory: repulsive.pvs)
 vertical loss of separation       (See ACCoRD PVS Theory: vertical_los_generic.pvs)

Member Function Documentation

◆ breakSymmetry()

int larcfm::CriteriaCore::breakSymmetry ( const Vect3 s,
std::string  ownship,
std::string  traffic 
)
staticprivate

Perform a symmetry calculation

◆ criteria()

bool larcfm::CriteriaCore::criteria ( const Vect3 s,
const Velocity vo,
const Velocity vi,
const Velocity nvo,
double  minRelVs,
double  D,
double  H,
int  epsh,
int  epsv 
)
static

true iff the velocity vector nvo satisfies the implicit coordination criteria

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvovelocity vector to be checked
minRelVsdesired minimum relative exit ground speed (used in LoS only)
Ddiameter of the protection zone
Hheight of the protection zone

◆ dataTurnEpsilon()

int larcfm::CriteriaCore::dataTurnEpsilon ( const Vect3 s,
const Velocity vo,
const Velocity vi,
int  epsh,
double  trackRate 
)
static

Return the horizontal epsilon that corresponds to the direction the traffic aircraft is currently turning indicated by sign of trackRate

Parameters
srelative position
vovelocity of ownship
vivelocity of intruder
epshhorizontal epsilon
trackRatetrackRate of traffic
Returns
horizontal epsilon

◆ dataVsRateEpsilon()

int larcfm::CriteriaCore::dataVsRateEpsilon ( int  epsv,
double  vsRate 
)
static

Return the horizontal epsilon that corresponds to the direction the traffic aircraft is currently turning indicated by sign of trackRate

Parameters
srelative position
vovelocity of ownship
vivelocity of intruder
epshhorizontal epsilon
trackRatetrackRate of traffic
Returns
horizontal epsilon

◆ gsSearchDirection()

int larcfm::CriteriaCore::gsSearchDirection ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
int  eps 
)
static

Return an absolute repulsive ground speed search direction (or none) Assumes Velocity vo is non-zero.

Returns
+1 search is increasing, -1 search is decreasing

◆ horizontal_criterion()

bool larcfm::CriteriaCore::horizontal_criterion ( const Vect2 sp,
const Vect2 v,
double  D,
int  epsh 
)
static

The fundamental horizontal criterion (Conflict Case)

Parameters
sprelative position assumed to be horizontally separated (Sp_vect2 : TYPE = (horizontal_sep?))
vrelative velocity
Dprotection zone diameter
epsh+1 or -1

◆ horizontal_los_criterion()

bool larcfm::CriteriaCore::horizontal_los_criterion ( const Vect2 s,
const Vect2 vo,
const Vect2 vi,
const Vect2 nvo,
int  eps 
)
static

Checks whether a horizontal solution is repulsive or divergent in the turn direction indicated by nvo (2D geometry)

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvoresolution velocity of the traffic aircraft
epshorizontalCoordination

◆ horizontal_new_repulsive_criterion() [1/2]

bool larcfm::CriteriaCore::horizontal_new_repulsive_criterion ( const Vect2 s,
const Vect2 vo,
const Vect2 vi,
const Vect2 nvo,
int  eps 
)
static

[CAM] This method replaces horizontal_old_repulsive_criterion. This definition is independent and coordinated for both state-based and iterative algorithms. This method is intended to be used with kinematic solvers, that is it is called iteratively with nvo progressing with each iteration.

Checks whether a horizontal solution is repulsive or divergent in the turn direction indicated by nvo (2D geometry). Derived from PVS predicate: repulsive.repulsive_criteria(s,v,eps)(nv): bool

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvoresolution velocity of the traffic aircraft
epshorizontalCoordination

◆ horizontal_new_repulsive_criterion() [2/2]

bool larcfm::CriteriaCore::horizontal_new_repulsive_criterion ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
const Vect3 nvo,
int  eps 
)
static

[CAM] This method replaces horizontal_old_repulsive_criterion. This definition is independent and coordinated for both state-based and iterative algorithms. This method is intended to be used with kinematic solvers, that is it is called iteratively with nvo progressing with each iteration.

Checks whether a horizontal solution is repulsive or divergent in the turn direction indicated by nvo (2D geometry). Derived from PVS predicate: repulsive.repulsive_criteria(s,v,eps)(nv): bool

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvoresolution velocity of the traffic aircraft
epshorizontalCoordination

◆ horizontalCoordination() [1/2]

int larcfm::CriteriaCore::horizontalCoordination ( const Vect2 s,
const Vect2 v 
)
static

Horizontal coordination.

Parameters
sthe relative position
vthe relative velocity
Returns
the horizontal coordination sign -1 corresponds to turning right in the relative system +1 corresponds to turing left in the relative system

◆ horizontalCoordination() [2/2]

int larcfm::CriteriaCore::horizontalCoordination ( const Vect3 s,
const Vect3 v 
)
static

Horizontal coordination.

Parameters
sthe relative position
vthe relative velocity
Returns
the horizontal coordination sign -1 corresponds to turning right in the relative system +1 corresponds to turning left in the relative system

◆ horizontalRepulsiveCriteria()

bool larcfm::CriteriaCore::horizontalRepulsiveCriteria ( const Vect3 s3,
const Velocity vo3,
const Velocity vi3,
const Velocity nvo3,
int  eps 
)
static

Checks whether a horizontal solution is repulsive or divergent in the turn direction indicated by nvo3

Parameters
s3relative position of the ownship
vo3velocity of the ownship aircraft
vi3velocity of the traffic aircraft
nvo3resolution velocity of the traffic aircraft
epshorizontalCoordination

◆ trkSearchDirection()

int larcfm::CriteriaCore::trkSearchDirection ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
int  eps 
)
static

Return an absolute repulsive track search direction (or none) Assumes velocity vo is non-zero.

Returns
+1 search is increasing, -1 search is decreasing

◆ vertical_criterion()

bool larcfm::CriteriaCore::vertical_criterion ( int  eps,
const Vect3 s,
const Vect3 v,
const Vect3 nv,
double  D,
double  H 
)
static

vertical criterion (Conflict Case) (currently only used in VisualCriteriaCore)

Parameters
epsvvertical coordination parameter
srelative position
vrelative velocity
nvnew relative velocity
Dprotection zone diameter
Hprotection zone height

◆ vertical_new_repulsive_criterion()

bool larcfm::CriteriaCore::vertical_new_repulsive_criterion ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
const Vect3 nvo,
int  eps 
)
static

[CAM] This method replaces vertical_old_repulsive_criterion. It's intended to be used for kinematic, iterative maneuvers. This criterion is like vs_bound_crit? but removes the else branch that restricts some vertical maneuvers.

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvoresolution velocity of the traffic aircraft
epsVertical coordination

◆ verticalCoordination()

int larcfm::CriteriaCore::verticalCoordination ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
double  D,
double  H,
std::string  ownship,
std::string  traffic 
)
static

Vertical coordination.

Parameters
sthe relative position
vothe ownship velocity
vithe traffic aircraft velocity
Dthe horizontal distance
Hthe vertical distance
ownshipthe name of the ownship
trafficthe name of the traffic aircraft
Returns
the vertical coordination sign. -1 corresponds to reducing current vertical speed, +1 corresponds to increasing current vertical speed

◆ verticalRepulsiveCriterion()

bool larcfm::CriteriaCore::verticalRepulsiveCriterion ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
const Vect3 nvo,
double  H,
double  minrelvs,
int  epsv 
)
static

Checks whether a velocity vector satisfies the repulsive LoS criteria

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
nvoresolution velocity of the traffic aircraft
Hprotection zone height
minrelvsminimum relative exit speed
epsvvertical coordination parameter

◆ vsSearchDirection()

int larcfm::CriteriaCore::vsSearchDirection ( int  epsv)
static

Return an absolute repulsive vertical speed search direction (or none) Assumes Velocity vo is non-zero.

Returns
+1 search is increasing, -1 search is decreasing

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