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

#include <PriorityCore.h>

Static Public Member Functions

static bool lateral_only (const Vect3 &so, const Vect3 &vo, const Vect3 &si, const Vect3 &vi)
 
static bool check (const Vect3 &so, const Vect3 &vo, bool mo, const Vect3 &si, const Vect3 &vi, bool mi)
 

Static Public Attributes

static double TC
 
static double CRUISE_DEF
 
static double VERTICAL_DEADBAND
 
static double LATERAL_DEADBAND
 
static double LATERAL_RELATIVE_DEADBAND
 

Static Private Member Functions

static bool isDescending (const Vect3 &v)
 
static bool isNotDescending (const Vect3 &v)
 
static bool isCruising (const Vect3 &v)
 
static bool isAscending (const Vect3 &v)
 
static bool isNotAscending (const Vect3 &v)
 
static bool isNotCruising (const Vect3 &v)
 
static bool PossiblyDescendingORCruising (const Vect3 &v)
 
static bool PossiblyCruisingORAscending (const Vect3 &v)
 
static bool HorizontalRulesApply (const Vect3 &ao_V, const Vect3 &ai_V)
 
static bool VerticalRulesApply (const Vect3 &ao_V, const Vect3 &ai_V)
 
static double VelComponent (const Vect3 &so, const Vect3 &si, const Vect3 &vo, const Vect3 &vi)
 
static double VelComponentAt (const double t, const Vect3 &so, const Vect3 &si, const Vect3 &vo, const Vect3 &vi)
 
static double EntryComponent (const Vect3 &so, const Vect3 &si, const Vect3 &vo, const Vect3 &vi)
 
static bool HorizontalDeadband (const Vect3 &ao_S, const Vect3 &ao_V, const Vect3 &ai_S, const Vect3 &ai_V)
 
static bool VerticalDeadband (const Vect3 &ao_V, const Vect3 &ai_V)
 

Detailed Description

This is a collection of functions to determine if one aircraft has priority over another aircraft. It is an encapsulation of the "right of way" rules.

All values are in internal units.

Disclaimer: The current rules have been verified to have certain safety and liveness properties, but they have not been validated, that is, they may not behave "naturally." As we learn more about what is expected, these rules may evolve in the future.

Member Function Documentation

◆ check()

static bool larcfm::PriorityCore::check ( const Vect3 so,
const Vect3 vo,
bool  mo,
const Vect3 si,
const Vect3 vi,
bool  mi 
)
static

Determines if the ownship has priority over the given traffic aircraft.

Parameters
soa 3D vector representing the position vector of ownship
voa 3D vector representing the velocity vector of the ownship
motrue if the ownship is managed
sia 3D vector representing the position vector of the traffic aircraft
via 3D vector representing the velocity vector of the traffic aircraft
mitrue if the traffic aircraft is managed
Returns
true, if the ownship has priority over the traffic aircraft

◆ EntryComponent()

static double larcfm::PriorityCore::EntryComponent ( const Vect3 so,
const Vect3 si,
const Vect3 vo,
const Vect3 vi 
)
staticprivate
Parameters
soa 3D vector representing the position vector of the ownship
sia 3D vector representing the position vector of the traffic
voa 3D vector representing the velocity vector of the ownship
via 3D vector representing the velocity vector of the traffic
Returns

◆ HorizontalDeadband()

static bool larcfm::PriorityCore::HorizontalDeadband ( const Vect3 ao_S,
const Vect3 ao_V,
const Vect3 ai_S,
const Vect3 ai_V 
)
staticprivate
Parameters
ao_Sa 3D vector representing the position vector of ownship
ao_Va 3D vector representing the velocity vector of the ownship
ai_Sa 3D vector representing the position vector of traffic
ai_Va 3D vector representing the velocity vector of traffic
Returns

◆ HorizontalRulesApply()

static bool larcfm::PriorityCore::HorizontalRulesApply ( const Vect3 ao_V,
const Vect3 ai_V 
)
staticprivate
Parameters
ao_Va 3D vector representing ownship aircraft velocity vector
ai_Va 3D vector representing traffic aircraft velocity vector
Returns

◆ isAscending()

static bool larcfm::PriorityCore::isAscending ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
trune if the aircraft is ascending

◆ isCruising()

static bool larcfm::PriorityCore::isCruising ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns

◆ isDescending()

static bool larcfm::PriorityCore::isDescending ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
true if the aircraft is descending

◆ isNotAscending()

static bool larcfm::PriorityCore::isNotAscending ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
true if the aircraft is not descending

◆ isNotCruising()

static bool larcfm::PriorityCore::isNotCruising ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns

◆ isNotDescending()

static bool larcfm::PriorityCore::isNotDescending ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
return true if the aircraft is not descending

◆ lateral_only()

static bool larcfm::PriorityCore::lateral_only ( const Vect3 so,
const Vect3 vo,
const Vect3 si,
const Vect3 vi 
)
static

Determines if the ownship has priority (in the lateral dimension only) over the traffic aircraft.

Parameters
soa 3D vector representing the position vector of ownship
voa 3D veector representing the velocity vector of the ownship
sia 3D vector representing the position vector of the traffic aircraft
via 3D vector representing the velocity vector of the traffic aircraft
Returns
true, if the ownship has priority over the traffic aircraft

◆ PossiblyCruisingORAscending()

static bool larcfm::PriorityCore::PossiblyCruisingORAscending ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
returns true if the aircraft is cruising or ascending

◆ PossiblyDescendingORCruising()

static bool larcfm::PriorityCore::PossiblyDescendingORCruising ( const Vect3 v)
staticprivate
Parameters
va 3D vector representing an aircraft velocity vector
Returns
true if the aircraft is descending or cruising

◆ VelComponent()

static double larcfm::PriorityCore::VelComponent ( const Vect3 so,
const Vect3 si,
const Vect3 vo,
const Vect3 vi 
)
staticprivate
Parameters
soa 3D vector representing the position vector of the ownship
sia 3D vector representing the position vector of the traffic
voa 3D vector representing the velocity vector of the ownship
via 3D vector representing the velocity vector of the traffic
Returns
the velocity component

◆ VelComponentAt()

static double larcfm::PriorityCore::VelComponentAt ( const double  t,
const Vect3 so,
const Vect3 si,
const Vect3 vo,
const Vect3 vi 
)
staticprivate
Parameters
timet (should be tca)
soa 3D vector representing the position vector of the ownship
sia 3D vector representing the position vector of the traffic
voa 3D vector representing the velocity vector of the ownship
via 3D vector representing the velocity vector of the traffic
Returns
velocity component at time t

◆ VerticalDeadband()

static bool larcfm::PriorityCore::VerticalDeadband ( const Vect3 ao_V,
const Vect3 ai_V 
)
staticprivate
Parameters
ao_V
ai_V
Returns

◆ VerticalRulesApply()

static bool larcfm::PriorityCore::VerticalRulesApply ( const Vect3 ao_V,
const Vect3 ai_V 
)
staticprivate
Parameters
ao_Va 3D vector representing ownship aircraft velocity vector
ai_Va 3D vector representing traffic aircraft velocity vector
Returns

Member Data Documentation

◆ CRUISE_DEF

double larcfm::PriorityCore::CRUISE_DEF
static

The definition of cruise. If the absolute value a vehicle's vertical speed is within this value then, by definition, the aircraft is in cruise.

This values should be "final"; however, since its precise values is still to be experimentally determined, it is left modifiable.

◆ LATERAL_DEADBAND

double larcfm::PriorityCore::LATERAL_DEADBAND
static

This is a representation of the known uncertainty in the horizontal speed.

This values should be "final"; however, since its precise values is still to be experimentally determined, it is left modifiable.

◆ TC

double larcfm::PriorityCore::TC
static

The time "back" from the time of closest approach

◆ VERTICAL_DEADBAND

double larcfm::PriorityCore::VERTICAL_DEADBAND
static

This is a representation of the known uncertainty in the vertical speed.

This values should be "final"; however, since its precise values is still to be experimentally determined, it is left modifiable.


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