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