|
ICAROUS
|
#include <CDSSCyl.h>
Public Member Functions | |
| CDSSCyl (const double distance, const double height, const double cdfilter) | |
| CDSSCyl (const double distance, const std::string &ud, const double height, const std::string &uh, const double cdfilter) | |
| CDSSCyl (const CDSSCyl &cdss) | |
| CDSSCyl & | operator= (const CDSSCyl &cdss) |
| double | getDistance () const |
| double | getDistance (const std::string &ud) const |
| double | getHeight () const |
| double | getHeight (const std::string &uh) const |
| double | getTimeHorizon () const |
| double | getTimeHorizon (const std::string &ut) const |
| double | getFilterTime () const |
| void | setDistance (const double distance) |
| void | setDistance (const double distance, const std::string &ud) |
| void | setHeight (const double height) |
| void | setHeight (const double height, const std::string &uh) |
| void | setTimeHorizon (const double time) |
| void | setTimeHorizon (const double time, const std::string &ut) |
| void | setFilterTime (const double cdfilter) |
| double | getFilter () const |
| bool | lossOfSeparation (const Vect3 &s) const |
| bool | lossOfSeparation (const Vect3 &so, const Vect3 &si) const |
| bool | conflictEver (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi) const |
| bool | conflictBetween (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double B, const double T) const |
| bool | conflictBetween (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double B, const double T, const std::string &ut) const |
| bool | conflict (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double T) const |
| bool | conflict (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double T, const std::string &ut) const |
| bool | detectionEver (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi) |
| bool | detectionBetween (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double B, const double T) |
| bool | detectionBetween (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double B, const double T, const std::string &ut) |
| bool | detection (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double T) |
| bool | detection (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, const double T, const std::string &ut) |
| double | conflictDuration () const |
| double | conflictDuration (const std::string &ut) const |
| bool | conflict () const |
| double | getTimeIn () const |
| double | getTimeIn (const std::string &ut) const |
| double | getTimeOut () const |
| double | getTimeOut (const std::string &ut) const |
| double | getCriticalTime () const |
| double | getCriticalTime (const std::string &ut) const |
| double | cylindricalDistanceAtCriticalTime () const |
| Vect3 | relativePositionAtCriticalTime () const |
| double | verticalDistanceAtCriticalTime () const |
| double | verticalDistanceAtCriticalTime (const std::string &ud) const |
| double | horizontalDistanceAtCriticalTime () const |
| double | horizontalDistanceAtCriticalTime (const std::string &ud) const |
| std::string | toString () |
Static Public Member Functions | |
| static CDSSCyl | make (double distance, const std::string &dStr, double height, const std::string &hStr) |
| static CDSSCyl | mk (double distance, double height) |
| static bool | lossOfSeparation (const Vect3 &so, const Vect3 &si, double d, double h) |
| static bool | conflict (const Vect3 &s, const Velocity &vo, const Velocity &vi, double D, double H, double T) |
| static bool | conflict (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, double D, double H, double T) |
| static double | timeIntoLoS (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double D, double H) |
Private Member Functions | |
| void | init (const double d, const double h, const double f) |
Private Attributes | |
| double | D |
| double | H |
| double | TimeHorizon |
| double | filter |
| double | tca |
| double | t_in |
| double | t_out |
| Vect3 | stca |
| CDCylinder | cd |
The Class CDSS. This is a dedicated class that only uses the CD3D (CDCylinder) detection algorithm. The more general form is CDSSCore, which may utilize arbitrary Detection3D detection algorithms.
Usage: CDSS cdss = new CDSS(); cdss.setDistance(5,"NM") cdss.setHeight(950,"ft") boolean det = cdss.detection(so,vo,si,vi,T);
| larcfm::CDSSCyl::CDSSCyl | ( | const double | distance, |
| const double | height, | ||
| const double | cdfilter | ||
| ) |
Create a new state-based conflict detection object using internal units.
| distance | the minimum horizontal separation distance [m] |
| height | the minimum vertical separation height [m]. |
| cdfilter | the cdfilter |
| larcfm::CDSSCyl::CDSSCyl | ( | const double | distance, |
| const std::string & | ud, | ||
| const double | height, | ||
| const std::string & | uh, | ||
| const double | cdfilter | ||
| ) |
Create a new state-based conflict detection object using specified units.
| distance | the minimum horizontal separation distance [ud] |
| ud | the specified units of distance |
| height | the minimum vertical separation height [uh] |
| uh | the specified units of height |
| cdfilter | the cdfilter |
Create a new state-based conflict detection object using explicit units.
| distance | the minimum horizontal separation distance [ud] |
| ud | the explicit units of distance |
| height | the minimum vertical separation height [uh] |
| uh | the explicit units of height |
| cdfilter | the cdfilter |
| larcfm::CDSSCyl::CDSSCyl | ( | const CDSSCyl & | cdss | ) |
Copy constructor
| bool larcfm::CDSSCyl::conflict | ( | ) | const |
Was there a detected conflict?
|
static |
Determines if two aircraft are in conflict in a given lookahead time interval (internal units). This function DOES NOT compute time interval of conflict. This function uses the CD3D definition of "conflict" – for a more general solution, use the one of the other conflict() or detection() methods.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| D | The horizontal size of the protection zone |
| H | The vertical size of the protection zone |
| T | upper bound of lookahead time interval in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::conflict | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | T | ||
| ) | const |
Determines if two aircraft are in conflict within a given lookahed time (internal units). This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| T | lookahead time in internal units [s] (T > 0) |
Determines if two aircraft are in conflict within a given lookahed time (internal units). This function DOES NOT compute time interval of conflict.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| T | lookahead time in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::conflict | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | T, | ||
| const std::string & | ut | ||
| ) | const |
Determines if two aircraft are in conflict within a given lookahead time (specified units). This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| T | upper bound of lookahead time interval in specified units [ut] (T > 0) |
| ut | specified units of time |
Determines if two aircraft are in conflict within a given lookahead time (explicit units). This function DOES NOT compute time interval of conflict.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| T | upper bound of lookahead time interval in explicit units [ut] (T > 0) |
| ut | explicit units of time |
|
static |
Determines if two aircraft are in conflict in a given lookahead time interval (internal units). This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| D | The horizontal size of the protection zone |
| H | The vertical size of the protection zone |
| T | upper bound of lookahead time interval in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::conflictBetween | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | B, | ||
| const double | T | ||
| ) | const |
Determines if two aircraft are in conflict in a given lookahed time interval (internal units). This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in internal units [s] (B >= 0) |
| T | upper bound of lookahead time interval in internal units [s] (T > B) |
Determines if two aircraft are in conflict in a given lookahed time interval (internal units). This function DOES NOT compute time interval of conflict.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in internal units [s] (B >= 0) |
| T | upper bound of lookahead time interval in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::conflictBetween | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | B, | ||
| const double | T, | ||
| const std::string & | ut | ||
| ) | const |
Determines if two aircraft are in conflict in a given lookahead time internal (specified units). This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in specified units [ut] (B >= 0) |
| T | upper bound of lookahead time interval in specified units [ut] (T > 0) |
| ut | specified units of time |
Determines if two aircraft are in conflict in a given lookahead time internal (explicit units). This function DOES NOT compute time interval of conflict.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in explicit units [ut] (B >= 0) |
| T | upper bound of lookahead time interval in explicit units [ut] (T > 0) |
| ut | explicit units of time |
| double larcfm::CDSSCyl::conflictDuration | ( | ) | const |
Duration of conflict in internal units.
Duration of conflict in internal units.
| double larcfm::CDSSCyl::conflictDuration | ( | const std::string & | ut | ) | const |
Duration of conflict in specified units.
| ut | the explicit units of time |
Duration of conflict in explicit units.
| ut | the explicit units of time |
| bool larcfm::CDSSCyl::conflictEver | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi | ||
| ) | const |
Determines if two aircraft are in conflict ever within time horizon. This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
Determines if two aircraft are in conflict ever within time horizon. This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| double larcfm::CDSSCyl::cylindricalDistanceAtCriticalTime | ( | ) | const |
Cylindrical distance at time of closest approach.
| bool larcfm::CDSSCyl::detection | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | T | ||
| ) |
Detects a conflict that lasts more than filter time within a given lookahed time and computes the time interval of conflict (internal units).
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| T | the lookahead time in internal units [s] (T > 0) |
Detects a conflict that lasts more than filter time within a given lookahed time and computes the time interval of conflict (internal units).
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| T | the lookahed time in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::detection | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | T, | ||
| const std::string & | ut | ||
| ) |
Detects a conflict that lasts more than filter time within a given lookahead time and computes the time interval of conflict (specified units).
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| T | the lookahead time in specified units [ut] (T > 0) |
| ut | specified units of time |
Detects a conflict that lasts more than filter time within a given lookahead time and computes the time interval of conflict (explicit units).
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| T | the lookahead time in explicit units [ut] (T > 0) |
| ut | explicit units of time |
| bool larcfm::CDSSCyl::detectionBetween | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | B, | ||
| const double | T | ||
| ) |
Detects a conflict that lasts more than filter time in a given lookahead time interval and computes the time interval of conflict (internal units).
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in internal units [s] (B >= 0) |
| T | upper bound of lookahead time interval in internal units [s] (T > 0) |
Detects a conflict that lasts more than filter time in a given lookahed time interval and computes the time interval of conflict (internal units).
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in internal units [s] (B >= 0) |
| T | upper bound of lokkahed time interval in internal units [s] (T > 0) |
| bool larcfm::CDSSCyl::detectionBetween | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi, | ||
| const double | B, | ||
| const double | T, | ||
| const std::string & | ut | ||
| ) |
Detects a conflict that lasts more than filter time in a given lookahead time interval and computes the time interval of conflict (specified units).
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in specified units [ut] (B >= 0) |
| T | upper bound of lookahead time interval in specified units [ut] (T > 0) |
| ut | specified units of time |
Detects a conflict that lasts more than filter time in a given lookahead time interval and computes the time interval of conflict (explicit units).
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| B | lower bound of lookahead time interval in explicit units [ut] (B >= 0) |
| T | upper bound of lookahead time interval in explicit units [ut] (T > 0) |
| ut | explicit units of time |
| bool larcfm::CDSSCyl::detectionEver | ( | const Vect3 & | so, |
| const Velocity & | vo, | ||
| const Vect3 & | si, | ||
| const Velocity & | vi | ||
| ) |
Detects a conflict that lasts more than filter time within time horizon and computes the time interval of conflict.
| so | the position of the ownship |
| vo | the velocity of the ownship |
| si | the position of the intruder |
| vi | the velocity of the intruder |
Detects a conflict that lasts more than filter time within time horizon and computes the time interval of conflict.
| s | the relative position of the aircraft |
| vo | the velocity of the ownship |
| vi | the velocity of the intruder |
| double larcfm::CDSSCyl::getCriticalTime | ( | ) | const |
Time of closest approach in internal units.
| double larcfm::CDSSCyl::getCriticalTime | ( | const std::string & | ut | ) | const |
Time of cylindrical closest approach in explicit units.
| ut | the explicit units of time |
| double larcfm::CDSSCyl::getDistance | ( | ) | const |
Returns the minimum horizontal separation distance in internal units [m].
| double larcfm::CDSSCyl::getDistance | ( | const std::string & | ud | ) | const |
Returns the minimum horizontal separation distance in specified units.
| ud | the specified units of distance |
Returns the minimum horizontal separation distance in explicit units.
| ud | the explicit units of distance |
| double larcfm::CDSSCyl::getFilterTime | ( | ) | const |
Returns the conflict detection filter time.
| double larcfm::CDSSCyl::getHeight | ( | ) | const |
Returns the minimum vertical separation distance in internal units.
| double larcfm::CDSSCyl::getHeight | ( | const std::string & | uh | ) | const |
Returns the minimum vertical separation distance in specified units.
| uh | the specified units of height |
Returns the minimum vertical separation distance in explicit units.
| uh | the explicit units of height |
| double larcfm::CDSSCyl::getTimeHorizon | ( | ) | const |
Returns the time horizon in internal units.
Returns the time horizon in internal units. time < 0 means infinite time horizon
| double larcfm::CDSSCyl::getTimeHorizon | ( | const std::string & | ut | ) | const |
Returns the time horizon in specified units.
| ut | the specified units of time |
Returns the time horizon in explicit units. time < 0 means infinite time horizon
| ut | the explicit units of time |
| double larcfm::CDSSCyl::getTimeIn | ( | ) | const |
Time to loss of separation in internal units.
Time to loss of separation in internal units.
| double larcfm::CDSSCyl::getTimeIn | ( | const std::string & | ut | ) | const |
Time to loss of separation in explicit units.
| ut | the explicit units of time |
| double larcfm::CDSSCyl::getTimeOut | ( | ) | const |
Time to recovery of loss of separation in internal units.
Time to recovery of loss of separation in internal units.
| double larcfm::CDSSCyl::getTimeOut | ( | const std::string & | ut | ) | const |
Time to recovery of loss of separation in explicit units.
| ut | the explicit units of time |
Time to recovery of loss of separation in explicit units.
| ut | the explicit units of time |
| double larcfm::CDSSCyl::horizontalDistanceAtCriticalTime | ( | ) | const |
Horizontal distance at time of closest approach (internal units).
| double larcfm::CDSSCyl::horizontalDistanceAtCriticalTime | ( | const std::string & | ud | ) | const |
Horizontal distance at time of closest approach (explicit units).
| ud | the explicit units of distance |
| bool larcfm::CDSSCyl::lossOfSeparation | ( | const Vect3 & | s | ) | const |
Determines if two aircraft are in loss of separation. This function DOES NOT compute time interval of conflict. This function uses the CD3D definition of loss of separation – for a more general solution, use lossOfSeparation(Vect3,Velocity,Velocity)
| s | the relative position of the aircraft |
Determines if two aircraft are in loss of separation. This function DOES NOT compute time interval of conflict.
| s | the relative position of the aircraft |
Determines if two aircraft are in loss of separation. This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| si | the position of the intruder |
|
static |
Determines if two aircraft are in loss of separation. This function DOES NOT compute time interval of conflict.
| so | the position of the ownship |
| si | the position of the intruder |
|
static |
Create a new state-based conflict detection object using specified units.
| distance | the minimum horizontal separation distance [dStr] |
| height | the minimum vertical separation height [hStr]. |
Create a new state-based conflict detection object using specified units.
| distance | the minimum horizontal separation distance [hStr] |
| height | the minimum vertical separation height [dStr]. |
|
static |
Create a new state-based conflict detection object using internal units.
| distance | the minimum horizontal separation distance [m] |
| height | the minimum vertical separation height [m]. |
| Vect3 larcfm::CDSSCyl::relativePositionAtCriticalTime | ( | ) | const |
Relative position at time of closest approach (internal units).
| void larcfm::CDSSCyl::setDistance | ( | const double | distance | ) |
Sets the minimum horizontal separation distance in internal units.
| distance | the distance in internal units [m] |
| void larcfm::CDSSCyl::setDistance | ( | const double | distance, |
| const std::string & | ud | ||
| ) |
Sets the minimum horizontal separation distance in specified units.
| distance | the distance in specified units [ud] |
| ud | the specified units of distance |
Sets the minimum horizontal separation distance in explicit units.
| distance | the distance in explicit units [ud] |
| ud | the explicit units of distance |
| void larcfm::CDSSCyl::setFilterTime | ( | const double | cdfilter | ) |
Sets the conflict detection filter time.
| cdfilter | the conflict detection filter time in seconds. |
| void larcfm::CDSSCyl::setHeight | ( | const double | height | ) |
Sets the minimum vertical separation distance in internal units.
| height | the height in internal units [m] |
| void larcfm::CDSSCyl::setHeight | ( | const double | height, |
| const std::string & | uh | ||
| ) |
Sets the minimum vertical separation distance in specified units.
| height | the height in specified units [uh] |
| uh | the specified units of time of height |
Sets the minimum vertical separation distance in explicit units.
| height | the height in explicit units [uh] |
| uh | the explicit units of time of height |
| void larcfm::CDSSCyl::setTimeHorizon | ( | const double | time | ) |
Sets the time horizon in internal units.
| time | the time horizon in internal units [s]. |
Sets the time horizon in internal units.
| time | the time horizon in internal units [s]. time < 0 means infinite time horizon |
| void larcfm::CDSSCyl::setTimeHorizon | ( | const double | time, |
| const std::string & | ut | ||
| ) |
Sets the time horizon in specified units.
| time | the time horizon in specified units [ut]. |
| ut | the specified units of time |
Sets the time horizon in explicit units.
| time | the time horizon in explicit units [ut]. time < 0 means infinite time horizon |
| ut | the explicit units of time |
|
static |
EXPERIMENTAL STATIC TIME INTO LOS (assumes infinite lookahead time), undefined if not conflict
| s | the relative position of the aircraft |
| vo | the ownship's velocity |
| vi | the intruder's velocity |
| D | the minimum horizontal distance |
| H | the minimum vertical distance |
EXPERIMENTAL STATIC TIME INTO LOS (assumes infinite lookahead time), undefined if not conflict
| s | the relative position of the aircraft |
| vo | the ownship's velocity |
| vi | the intruder's velocity |
| D | the minimum horizontal distance |
| H | the minimum vertical distance |
| double larcfm::CDSSCyl::verticalDistanceAtCriticalTime | ( | ) | const |
Vertical distance at time of closest approach (internal units).
| double larcfm::CDSSCyl::verticalDistanceAtCriticalTime | ( | const std::string & | ud | ) | const |
Vertical distance at time of closest approach (explicit units).
| ud | the explicit units of distance |
|
private |
CD3D object
|
private |
The minimum horizontal distance
|
private |
The conflict filter time
|
private |
The minimum vertical distance
|
private |
Aircraft relative position at time of closest approach.
|
private |
Time of (cylindrical) closest approach *.
|
private |
Time horizon. TimeHorizon < 0 means an infinite time horizon