ICAROUS
|
#include <CDSI.h>
Public Member Functions | |
double | getFilterTime () const |
void | setFilterTime (double cdfilter) |
int | size () const |
bool | conflict () const |
double | getTimeIn (int i) const |
double | getTimeOut (int i) const |
int | getSegmentIn (int i) const |
int | getSegmentOut (int i) const |
double | getCriticalTime (int i) const |
double | getDistanceAtCriticalTime (int i) const |
bool | detectionXYZ (double sx, double sy, double sz, double vx, double vy, double vz, double t0, double horizon, const Plan &intent, double startT, double endT) |
bool | detectionLL (double lat, double lon, double alt, double trk, double gs, double vs, double t0, double horizon, const Plan &intent, double startT, double endT) |
void | setCoreDetectionPtr (const Detection3D *c) |
void | setCoreDetectionRef (const Detection3D &c) |
Detection3D * | getCoreDetectionPtr () const |
Detection3D & | getCoreDetectionRef () const |
bool | hasError () const |
bool | hasMessage () const |
std::string | getMessage () |
std::string | getMessageNoClear () const |
Static Public Member Functions | |
static CDSI | make (double distance, const std::string &dStr, double height, const std::string &hStr) |
static CDSI | make (Detection3D *cd) |
static CDSI | mk (double distance, double height) |
Private Member Functions | |
CDSI (double distance, double height) | |
CDSI (Detection3D *cd) | |
double | getDistance () const |
double | getHeight () const |
void | setDistance (double distance) |
void | setHeight (double height) |
Private Attributes | |
CDSICore | core |
ErrorLog | error |
This class implements the algorithm for conflict detection between an ownship (modeled with a state vector) and a traffic aircraft trajectory (modeled with intent information).
This class can be used two ways: through an object or through a static method. The static method approach has the advantage that an object does not need to be created. The object approach has the advantage that more information is available. Specifically, the start and end times for every conflict are available in the object approach.
In addition, for each of these types of use, the aircraft can be specified in two different coordinate systems: a Euclidean space and a latitude and longitude reference frame.
|
private |
Create a new conflict detection (state information for the ownship and intent information for the traffic) object.
distance | the minimum horizontal separation distance [nmi] |
height | the minimum vertical separation height [ft]. |
|
explicitprivate |
Create a new conflict detection (state information for the ownship and intent information for the traffic) object.
distance | the minimum horizontal separation distance [nmi] |
height | the minimum vertical separation height [ft]. |
bool larcfm::CDSI::conflict | ( | ) | const |
Returns if there were any conflicts
bool larcfm::CDSI::detectionLL | ( | double | lat, |
double | lon, | ||
double | alt, | ||
double | trk, | ||
double | gs, | ||
double | vs, | ||
double | t0, | ||
double | horizon, | ||
const Plan & | intent, | ||
double | startT, | ||
double | endT | ||
) |
Returns if there is a conflict between two aircraft: the state aircraft and the intent aircraft. The state aircraft is assumed to move linearly from it position. The intent aircraft is assumed to move according to the given flight plan. Both aircraft are assumed to be represented in a latitude/longitude reference frame.
lat | the latitude of the state aircraft in [deg] |
lon | the longitude of the state aircraft in [deg] |
alt | the altitude of the state aircraft in [feet] |
trk | the track angle of the velocity of the state aircraft in [deg from true north] |
gs | the ground speed of velocity of the state aircraft in [knot] |
vs | the vertical speed of velocity of the state aircraft in [ft/min] |
t0 | the time, in [s], of the state aircraft when located at (lat, lon, alt). This can be 0.0 to represent "now" |
horizon | the maximum amount of time after t0 that the position of the state aircraft's position can be predicted |
intent | the flight plan of the intent aircraft |
startT | the time, in [s], to start looking for conflicts relative to t0. This can be 0.0. |
endT | the time, in [s], to end looking for conflicts relative to t0 |
bool larcfm::CDSI::detectionXYZ | ( | double | sx, |
double | sy, | ||
double | sz, | ||
double | vx, | ||
double | vy, | ||
double | vz, | ||
double | t0, | ||
double | horizon, | ||
const Plan & | intent, | ||
double | startT, | ||
double | endT | ||
) |
Returns if there is a conflict between two aircraft: the state aircraft and the intent aircraft. The state aircraft is assumed to move linearly from it position. The intent aircraft is assumed to move according to the given flight plan. Both aircraft are assumed to be represented in a cartesian reference frame.
sx | the x position of the state aircraft in [nmi] |
sy | the y position of the state aircraft in [nmi] |
sz | the z position of the state aircraft in [feet] |
vx | the x component of velocity of the state aircraft in [knot] |
vy | the y component of velocity of the state aircraft in [knot] |
vz | the z component of velocity of the state aircraft in [ft/min] |
t0 | the time, in [s], of the state aircraft when located at (sx,sy,sz). This can be 0.0 to represent "now" |
horizon | the maximum amount of time after t0 that the position of the state aircraft's position can be predicted |
intent | the flight plan of the intent aircraft |
startT | the time, in [s], to start looking for conflicts relative to t0. This can be 0.0. |
endT | the time, in [s], to end looking for conflicts relative to t0 |
|
virtual |
Return a pointer to this object's Detection3D instance.
Implements larcfm::Detection3DAcceptor.
|
virtual |
Return a reference to this object's Detection3D instance.
Implements larcfm::Detection3DAcceptor.
|
private |
Returns the minimum horizontal separation distance in [m]
double larcfm::CDSI::getFilterTime | ( | ) | const |
Returns the conflict detection filter time.
|
private |
Returns the minimum vertical separation distance in [m]
|
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.
Implements larcfm::ErrorReporter.
|
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.)
Implements larcfm::ErrorReporter.
int larcfm::CDSI::getSegmentIn | ( | int | i | ) | const |
Returns the segment number of the entry into a conflict from the traffic aircraft's flight plan. If there was not a conflict, then this value is meaningless.
i | the i-th conflict, must be between 0..size()-1 |
int larcfm::CDSI::getSegmentOut | ( | int | i | ) | const |
Returns the segment number of the exit from a conflict from the traffic aircraft's flight plan. If there was not a conflict, then this value is meaningless.
i | the i-th conflict, must be between 0..size()-1 |
double larcfm::CDSI::getTimeIn | ( | int | i | ) | const |
Returns the start time of the conflict in [s]. This value is in absolute time. If there was not a conflict, then this value is meaningless.
i | the i-th conflict, must be between 0..size()-1 |
double larcfm::CDSI::getTimeOut | ( | int | i | ) | const |
Returns the end time of the conflict in [s]. This value is in absolute time. If there was not a conflict, then this value is meaningless.
i | the i-th conflict, must be between 0..size()-1 |
|
inlinevirtual |
|
inlinevirtual |
Does this object have an error or a warning?
Implements larcfm::ErrorReporter.
|
static |
Create a new CDSI 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 CDSI conflict detection object using internal units.
distance | the minimum horizontal separation distance [m] |
height | the minimum vertical separation height [m]. |
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]. |
|
virtual |
Experimental. You are responsible for deleting c after this call.
Implements larcfm::Detection3DAcceptor.
|
virtual |
Apply a deep copy of the referenced Detection3D object to this object at the lowest level. The user is responsible for cleaning up the original instance.
Implements larcfm::Detection3DAcceptor.
|
private |
Sets the minimum horizontal separation distance in [m]
void larcfm::CDSI::setFilterTime | ( | double | cdfilter | ) |
Sets the conflict detection filter time.
cdfilter | the conflict detection filter time in seconds. |
|
private |
Sets the minimum vertical separation distance in [m]
int larcfm::CDSI::size | ( | ) | const |
Returns the number of conflicts