ICAROUS
All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Modules Pages
Public Member Functions | Static Public Member Functions | Public Attributes | Static Private Member Functions | List of all members
larcfm::CR3D Class Reference

#include <CR3D.h>

Public Member Functions

 CR3D ()
 
bool cr (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const double D, const double H, int epsh, int epsv)
 
bool losr_repulsive (const Vect3 &s, const Velocity &vo, const Velocity &vi, double NMAC_D, double NMAC_H, double minHorizExitSpeedLoS, double minVertExitSpeedLoS, double minGs, double maxGs, double maxVs, int epsh, int epsv)
 
int cr3d (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const double D, const double H, std::string ownship, std::string traffic)
 
int cr3d_repulsive (const Vect3 &s, const Velocity &vo, const Velocity &vi, const double D, const double H, const double minHorizExitSpeedLoS, double minVertExitSpeedLoS, const double minGs, const double maxGs, double maxVs, int epsh, int epsv)
 
int cr3d_repulsive_los (Vect3 s, Velocity vo, Velocity vi, double NMAC_D, double NMAC_H, double minHorizExitSpeedLoS, double minVertExitSpeedLoS, double minGs, double maxGs, double maxVs, int epsh, int epsv)
 

Static Public Member Functions

static Horizontal losr_trk_iter (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double minrelgs, double maxtrk, double step, int epsh)
 
static Horizontal losr_gs_iter (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double minrelgs, double mings, double maxgs, double step, int epsh)
 
static Vertical losr_vs_new (const Vect3 &s, const Velocity &vo, const Velocity &vi, double minrelvs, double maxvs, double caD, double caH, int epsv)
 

Public Attributes

Horizontal trk
 
Horizontal gs
 
Horizontal opt
 
Vertical vs
 

Static Private Member Functions

static Vect2 incr_vect (const Vect2 &nvo, double step, int dir)
 

Detailed Description

CR3D is an algorithm for 3-D conflict resolution that provides avoidance maneuvers for the ownship

Unit Convention

All units in this file are internal:

REMARK: X points to East, Y points to North. Angles are in True North/clockwise convention.

Naming Convention
The intruder is supposed to be fixed at the origin of the coordinate system.

Output class variables

Constructor & Destructor Documentation

◆ CR3D()

larcfm::CR3D::CR3D ( )

Instantiates a new CR3D object.

Member Function Documentation

◆ cr()

bool larcfm::CR3D::cr ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
const double  D,
const double  H,
int  epsh,
int  epsv 
)

Conflict resolution algorithm

Parameters
sthe relative position of the aircraft
vothe ownship's velocity
vithe intruder's velocity
Dthe minimum horizontal distance
Hthe minimum vertical distance

If trk is not zero, trk satisfies || trk || = || vo ||, and trk is a coordinated track only resolution for the ownship.

If gs is not zero, gs satisfies exists l > 0 such that l*gs = vo, and gs is a coordinated ground speed only resolution for the ownship.

If opt is not zero, opt is a coordinated optimal horizontal resolution for the ownship.

vs is defined ==> vs is a coordinated vertical only resolution for the ownship.

Returns
true, if at least one resolution was found.

◆ cr3d()

int larcfm::CR3D::cr3d ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
const double  D,
const double  H,
std::string  ownship,
std::string  traffic 
)

Conflict resolution algorithm including loss of separation recovery maneuvers

Parameters
sthe relative position of the aircraft
vothe ownship's velocity
vithe intruder's velocity
Dthe minimum horizontal distance
Hthe minimum vertical distance
Returns
the type of resolution maneuver: -1 : None available 0 : Conflict resolution 1 : Loss of separation resolution

◆ cr3d_repulsive()

int larcfm::CR3D::cr3d_repulsive ( const Vect3 s,
const Velocity vo,
const Velocity vi,
const double  D,
const double  H,
const double  minHorizExitSpeedLoS,
double  minVertExitSpeedLoS,
const double  minGs,
const double  maxGs,
double  maxVs,
int  epsh,
int  epsv 
)

Conflict resolution algorithm including loss of separation recovery maneuvers

Parameters
sthe relative position of the aircraft
vothe ownship's velocity
vithe intruder's velocity
Dthe minimum horizontal distance
Hthe minimum vertical distance
Returns
the type of resolution maneuver: LoSDivg (3)– Loss of separation resolution LoSConv (2) – Loss of separation resolution None (-1)– No resolution available Conflict (1) – Conflict resolution Unnecessary (0) – Conflict resolution is not needed

◆ losr_gs_iter()

Horizontal larcfm::CR3D::losr_gs_iter ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
double  minrelgs,
double  min_gs,
double  max_gs,
double  step,
int  epsh 
)
static

Iteratively compute an ABSOLUTE ground speed-only loss of separation recovery maneuver for the ownship

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
minrelgsminimum relative ground speed
mingsminimum ground speed
maxgsmaximum ground speed
stepground speed step (postive)
epshhorizontal epsilon

◆ losr_repulsive()

bool larcfm::CR3D::losr_repulsive ( const Vect3 s,
const Velocity vo,
const Velocity vi,
double  NMAC_D,
double  NMAC_H,
double  minHorizExitSpeedLoS,
double  minVertExitSpeedLoS,
double  minGs,
double  maxGs,
double  maxVs,
int  epsh,
int  epsv 
)

Loss of separation recovery algorithm

If trk is not zero, trk satisfies || trk || = || vo ||, and trk is a coordinated track only LoS recovery maneuver for the ownship.

If gs is not zero, gs satisfies exists l > 0 such that l*gs = vo, and gs is a coordinated ground speed only LoS recovery maneuver for the ownship.

No optimal solution

vs is defined ==> vs is a coordinated vertical only LoS recovery maneuver for the ownship.

Parameters
sthe relative position of the aircraft
vothe ownship's velocity
vithe intruder's velocity
Hthe minimum vertical distance
Returns
true, if at least one recovery maneuver was found.

◆ losr_trk_iter()

Horizontal larcfm::CR3D::losr_trk_iter ( const Vect3 s,
const Vect3 vo,
const Vect3 vi,
double  minrelgs,
double  maxtrk,
double  step,
int  epsh 
)
static

Iteratively compute an ABSOLUTE track-only loss of separation recovery maneuver for the ownship

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
minrelgsminimum relative ground speed
maxtrkmaximum track [rad]
steptrack step [rad] (positive)
epshhorizontal epsilon

Iteratively compute an ABSOLUTE track-only loss of separation recover maneuver for the ownship

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
minrelgsminimum relative ground speed
maxtrkmaximum track [rad]
stepstep [rad]

◆ losr_vs_new()

Vertical larcfm::CR3D::losr_vs_new ( const Vect3 s,
const Velocity vo,
const Velocity vi,
double  minrelvs,
double  maxvs,
double  caD,
double  caH,
int  epsv 
)
static

Compute an ABSOLUTE vertical-only loss of separation recovery maneuver for the ownship

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
Hheight of protected zone, e.g., 1000ft
minrelvsminimum relative vertical speed
maxvsmaximum absolute vertical speed
caDdiameter of collision avoidance area, e.g., 1000 ft
caHheight of collision avoidance area, e.g., 200ft
epsvThe epsilon for vertical maneuvers (+1 or -1)

Compute an ABSOLUTE vertical-only loss of separation recovery maneuver for the ownship

Parameters
srelative position of the ownship
vovelocity of the ownship aircraft
vivelocity of the traffic aircraft
Hheight of protected zone, e.g., 1000ft
minrelvminimum relative vertical speed
caDdiameter of collision avoidance area, e.g., 1000 ft
caHheight of collision avoidance area, e.g., 200ft
minrelvsminimum relative vertical speed

Member Data Documentation

◆ gs

Horizontal larcfm::CR3D::gs

Ground speed only resolution

◆ opt

Horizontal larcfm::CR3D::opt

Optimal track/ground speed resolution

◆ trk

Horizontal larcfm::CR3D::trk

Track only resolution

◆ vs

Vertical larcfm::CR3D::vs

Vertical speed resolution


The documentation for this class was generated from the following files: