ICAROUS
|
Public Member Functions | |
const UrgencyStrategy * | get_urgency_strategy () const |
bool | set_urgency_strategy (const UrgencyStrategy *strat) |
DaidalusCore & | operator= (const DaidalusCore &core) |
DaidalusCore (const DaidalusCore &core) | |
DaidalusCore (const Alerter &alerter) | |
DaidalusCore (const Detection3D *det, double T) | |
void | clear () |
void | clear_wind () |
bool | set_alerter_ownship (int alerter_idx) |
bool | set_alerter_traffic (int idx, int alerter_idx) |
void | clear_hysteresis () |
void | stale () |
bool | isFresh () const |
void | refresh () |
int | DTAStatus () |
const TrafficState & | mostUrgentAircraft () |
int | epsilonH () |
int | epsilonV () |
int | epsilonH (bool recovery_case, const TrafficState &traffic) |
int | epsilonV (bool recovery_case, const TrafficState &traffic) |
bool | bands_for (int region) |
double | minHorizontalRecovery () const |
double | minVerticalRecovery () const |
void | set_ownship_state (const std::string &id, const Position &pos, const Velocity &vel, double time) |
int | find_traffic_state (const std::string &id) const |
int | set_traffic_state (const std::string &id, const Position &pos, const Velocity &vel, double time) |
void | reset_ownship (int idx) |
bool | remove_traffic (int idx) |
void | set_wind_velocity (const Velocity &wind) |
bool | linear_projection (double offset) |
bool | has_ownship () const |
bool | has_traffic () const |
int | horizontal_contours (std::vector< std::vector< Position > > &blobs, int idx, int alert_level) |
int | horizontal_hazard_zone (std::vector< Position > &haz, int idx, int alert_level, bool loss, bool from_ownship) |
int | alert_level (int idx, int turning, int accelerating, int climbing) |
const std::vector< IndexLevelT > & | acs_conflict_bands (int conflict_region) |
const Interval & | tiov (int conflict_region) |
int | alerter_index_of (const TrafficState &intruder) |
TrafficState | criteria_ac () |
TrafficState | recovery_ac () |
std::string | outputStringAircraftStates (bool internal) const |
std::string | rawString () const |
std::string | toString () const |
Static Public Member Functions | |
static int | epsilonH (const TrafficState &ownship, const TrafficState &ac) |
static int | epsilonV (const TrafficState &ownship, const TrafficState &ac) |
Public Attributes | |
TrafficState | ownship |
std::vector< TrafficState > | traffic |
double | current_time |
Velocity | wind_vector |
DaidalusParameters | parameters |
Private Member Functions | |
void | copyFrom (const DaidalusCore &core) |
void | refresh_mua_eps () |
int | dta_hysteresis_current_value (const TrafficState &ac) |
int | alerting_hysteresis_current_value (const TrafficState &intruder, int turning, int accelerating, int climbing) |
bool | greater_than_corrective () const |
int | raw_alert_level (const Alerter &alerter, const TrafficState &intruder, int turning, int accelerating, int climbing) |
bool | check_alerting_thresholds (const Alerter &alerter, int alert_level, const TrafficState &intruder, int turning, int accelerating, int climbing) |
void | conflict_aircraft (int conflict_region) |
Private Attributes | |
const UrgencyStrategy * | urgency_strategy_ |
int | cache_ |
TrafficState | most_urgent_ac_ |
int | epsh_ |
int | epsv_ |
int | dta_status_ |
std::vector< std::vector< IndexLevelT > > | acs_conflict_bands_ |
Interval | tiov_ [BandsRegion::NUMBER_OF_CONFLICT_BANDS] |
bool | bands4region_ [BandsRegion::NUMBER_OF_CONFLICT_BANDS] |
std::map< std::string, HysteresisData > | alerting_hysteresis_acs_ |
std::map< std::string, HysteresisData > | dta_hysteresis_acs_ |
const std::vector< IndexLevelT > & larcfm::DaidalusCore::acs_conflict_bands | ( | int | conflict_region | ) |
Requires 0 <= conflict_region < CONFICT_BANDS
int larcfm::DaidalusCore::alert_level | ( | int | idx, |
int | turning, | ||
int | accelerating, | ||
int | climbing | ||
) |
Computes alerting type of ownship and an the idx-th aircraft in the traffic list The number 0 means no alert. A negative number means that aircraft index is not valid. When the alerter object has been configured to consider ownship maneuvers, i.e., using spread values, the alerting logic could also use information about the ownship turning, accelerating, and climbing status as follows:
int larcfm::DaidalusCore::alerter_index_of | ( | const TrafficState & | intruder | ) |
Return alert index used for intruder aircraft. The alert index depends on alerting logic and DTA logic. If ownship centric, it returns the alert index of ownship. Otherwise, returns the alert index of the intruder. If the DTA logic is enabled, the alerter of an aircraft is determined by its dta status.
bool larcfm::DaidalusCore::bands_for | ( | int | region | ) |
Return true if bands are computed for this particular region (0:NEAR, 1:MID, 2: FAR)
|
private |
Return true if and only if threshold values, defining an alerting level, are violated.
void larcfm::DaidalusCore::clear | ( | ) |
Clear ownship and traffic data from this object.
void larcfm::DaidalusCore::clear_hysteresis | ( | ) |
Clear hysteresis information from this object.
Clear alerting hysteresis information from this object.
void larcfm::DaidalusCore::clear_wind | ( | ) |
Clear wind vector from this object.
|
private |
Requires 0 <= conflict_region < CONFICT_BANDS Put in acs_conflict_bands_ the list of aircraft predicted to be in conflict for the given region. Put compute_bands_ a flag indicating if bands for given region are computed for some aircraft Put in tiov_ the time interval of violation for given region
int larcfm::DaidalusCore::DTAStatus | ( | ) |
Returns DTA status: 0 : DTA is not active -1 : DTA is active, but special bands are not enabled yet 1 : DTA is active and special bands are enabled
int larcfm::DaidalusCore::epsilonH | ( | ) |
Returns horizontal epsilon for implicit coordination with respect to criteria ac.
int larcfm::DaidalusCore::epsilonH | ( | bool | recovery_case, |
const TrafficState & | traffic | ||
) |
Returns horizontal epsilon for implicit coordination with respect to criteria ac.
int larcfm::DaidalusCore::epsilonV | ( | ) |
Returns vertical epsilon for implicit coordination with respect to criteria ac.
int larcfm::DaidalusCore::epsilonV | ( | bool | recovery_case, |
const TrafficState & | traffic | ||
) |
Returns vertical epsilon for implicit coordination with respect to criteria ac.
bool larcfm::DaidalusCore::isFresh | ( | ) | const |
Returns true is object is fresh
double larcfm::DaidalusCore::minHorizontalRecovery | ( | ) | const |
Returns actual minimum horizontal separation for recovery bands in internal units.
double larcfm::DaidalusCore::minVerticalRecovery | ( | ) | const |
Returns actual minimum vertical separation for recovery bands in internal units.
const TrafficState & larcfm::DaidalusCore::mostUrgentAircraft | ( | ) |
void larcfm::DaidalusCore::refresh | ( | ) |
Refresh cached values
void larcfm::DaidalusCore::stale | ( | ) |
Set cached values to stale conditions as they are no longer fresh.
Set cached values to stale conditions as they are no longer fresh. If hysteresis is true, it also clears hysteresis variables
const Interval & larcfm::DaidalusCore::tiov | ( | int | conflict_region | ) |
Requires 0 <= conflict_region < CONFICT_BANDS