ICAROUS
|
Public Member Functions | |
bool | violation (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi) const |
bool | conflict (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, double B, double T) const |
virtual ConflictData | conflictDetection (const Vect3 &so, const Velocity &vo, const Vect3 &si, const Velocity &vi, double B, double T) const =0 |
bool | violationAtWithTrafficState (const TrafficState &ownship, const TrafficState &intruder, double t) const |
bool | conflictWithTrafficState (const TrafficState &ownship, const TrafficState &intruder, double B, double T) const |
virtual ConflictData | conflictDetectionWithTrafficState (const TrafficState &ownship, const TrafficState &intruder, double B, double T) const |
virtual Detection3D * | copy () const =0 |
virtual Detection3D * | make () const =0 |
std::string | getCanonicalClassName () const |
std::string | getCanonicalSuperClassName () const |
virtual std::string | getSimpleClassName () const =0 |
virtual std::string | getSimpleSuperClassName () const |
virtual std::string | toString () const =0 |
virtual std::string | toPVS () const =0 |
virtual std::string | getIdentifier () const =0 |
virtual void | setIdentifier (const std::string &s)=0 |
virtual bool | equals (Detection3D *o) const =0 |
virtual bool | contains (const Detection3D *cd) const =0 |
bool | instanceOf (const std::string &classname) const |
void | horizontalContours (std::vector< std::vector< Position > > &blobs, const TrafficState &ownship, const TrafficState &intruder, double thr, double T) const |
virtual void | horizontalHazardZone (std::vector< Position > &haz, const TrafficState &ownship, const TrafficState &intruder, double T) const |
![]() | |
virtual void | setParameters (const ParameterData &p)=0 |
![]() | |
virtual ParameterData | getParameters () const =0 |
virtual void | updateParameterData (ParameterData &p) const =0 |
Static Private Member Functions | |
static void | add_blob (std::vector< std::vector< Position > > &blobs, std::vector< Position > &vin, std::vector< Position > &vout) |
bool larcfm::Detection3D::conflict | ( | const Vect3 & | so, |
const Velocity & | vo, | ||
const Vect3 & | si, | ||
const Velocity & | vi, | ||
double | B, | ||
double | T | ||
) | const |
This functional call returns true if there will be a violation between times B and T from now (relative).
so | ownship position |
vo | ownship velocity |
si | intruder position |
vi | intruder velocity |
B | beginning of detection time (>=0) |
T | end of detection time (if T < 0 then use an "infinite" lookahead time) |
|
pure virtual |
This functional call returns a ConflictData object detailing the conflict between times B and T from now (relative), if any.
so | ownship position |
vo | ownship velocity |
si | intruder position |
vi | intruder velocity |
D | horizontal separation |
H | vertical separation |
B | beginning of detection time (>=0) |
T | end of detection time (if T < 0 then use an "infinite" lookahead time) |
Implemented in larcfm::CDCylinder, larcfm::TCAS3D, and larcfm::WCV_tvar.
|
virtual |
This functional call returns a ConflictData object detailing the conflict between times B and T from now (relative), if any.
ownship | ownship state |
intruder | intruder state |
D | horizontal separation |
H | vertical separation |
B | beginning of detection time (>=0) |
T | end of detection time (if T < 0 then use an "infinite" lookahead time) |
Reimplemented in larcfm::WCV_TAUMOD_SUM.
bool larcfm::Detection3D::conflictWithTrafficState | ( | const TrafficState & | ownship, |
const TrafficState & | intruder, | ||
double | B, | ||
double | T | ||
) | const |
This functional call returns true if there will be a violation between times B and T from now (relative).
ownship | ownship state |
intruder | intruder state |
B | beginning of detection time (>=0) |
T | end of detection time (if T < 0 then use an "infinite" lookahead time) |
|
pure virtual |
This returns a pointer to a new instance of this type of Detector3D. You are responsible for destroying this instance when it is no longer needed.
Implemented in larcfm::CDCylinder, larcfm::TCAS3D, larcfm::WCV_HZ, larcfm::WCV_TAUMOD, larcfm::WCV_TAUMOD_SUM, larcfm::WCV_TCPA, larcfm::WCV_TEP, and larcfm::WCV_tvar.
|
pure virtual |
Return true if two instances have identical parameters (including identifiers). Use address equality (&x == &y) to distinguish instances. A generic implementation, assuming the identifier is included in the ParameterData object, would be virtual bool equals(Detection3D* o) const { if (!larcfmequals(getClassName(), o->getClassName())) return false; if (!getParameterData().equals(o->getParameterData())) return false; return true; }
Implemented in larcfm::CDCylinder, larcfm::TCAS3D, and larcfm::WCV_tvar.
void larcfm::Detection3D::horizontalContours | ( | std::vector< std::vector< Position > > & | blobs, |
const TrafficState & | ownship, | ||
const TrafficState & | intruder, | ||
double | thr, | ||
double | T | ||
) | const |
Computes horizontal list of contours contributed by intruder aircraft. A contour is a list of points in counter-clockwise direction representing a polygon. Last point should be connected to first one.
thr | This is a contour threshold in radians [0,pi]. This threshold indicates how far from current direction to look for contours. A value of 0 means only conflict contour. A value of pi means all contours. |
T | Lookahead time in seconds |
NOTE: The computed polygon should only be used for display purposes since it's merely an approximation of the actual contours defined by the violation and detection methods.
|
virtual |
Return a list of points (polygon) that approximates the horizontal hazard zone around the ownship, with respect to a traffic aircraft. A polygon is a list of points in counter-clockwise direction, where the last point is connected to the first one.
T | This time represents a time horizon in seconds. When T is 0, the polygon represents the hazard zone. Otherwise, the are represents the hazard zone with time horizon T. |
NOTE 1: This polygon should only be used for display purposes since it's merely an approximation of the actual hazard zone defined by the violation and detection methods.
NOTE 2: This method has to be redefined as appropriate for every specific hazard zone.
Reimplemented in larcfm::CDCylinder, larcfm::TCAS3D, and larcfm::WCV_tvar.
bool larcfm::Detection3D::violation | ( | const Vect3 & | so, |
const Velocity & | vo, | ||
const Vect3 & | si, | ||
const Velocity & | vi | ||
) | const |
This functional call returns true if there is a violation given the current states.
so | ownship position |
vo | ownship velocity |
si | intruder position |
vi | intruder velocity |
bool larcfm::Detection3D::violationAtWithTrafficState | ( | const TrafficState & | ownship, |
const TrafficState & | intruder, | ||
double | t | ||
) | const |
This functional call returns true if there is a violation at time t.
ownship | ownship state |
intruder | intruder state |
t | time in seconds |