ICAROUS
|
#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) |
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
larcfm::CR3D::CR3D | ( | ) |
Instantiates a new CR3D object.
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
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 |
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.
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
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 |
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
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 |
|
static |
Iteratively compute an ABSOLUTE ground speed-only loss of separation recovery maneuver for the ownship
s | relative position of the ownship |
vo | velocity of the ownship aircraft |
vi | velocity of the traffic aircraft |
minrelgs | minimum relative ground speed |
mings | minimum ground speed |
maxgs | maximum ground speed |
step | ground speed step (postive) |
epsh | horizontal epsilon |
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.
s | the relative position of the aircraft |
vo | the ownship's velocity |
vi | the intruder's velocity |
H | the minimum vertical distance |
|
static |
Iteratively compute an ABSOLUTE track-only loss of separation recovery maneuver for the ownship
s | relative position of the ownship |
vo | velocity of the ownship aircraft |
vi | velocity of the traffic aircraft |
minrelgs | minimum relative ground speed |
maxtrk | maximum track [rad] |
step | track step [rad] (positive) |
epsh | horizontal epsilon |
Iteratively compute an ABSOLUTE track-only loss of separation recover maneuver for the ownship
s | relative position of the ownship |
vo | velocity of the ownship aircraft |
vi | velocity of the traffic aircraft |
minrelgs | minimum relative ground speed |
maxtrk | maximum track [rad] |
step | step [rad] |
|
static |
Compute an ABSOLUTE vertical-only loss of separation recovery maneuver for the ownship
s | relative position of the ownship |
vo | velocity of the ownship aircraft |
vi | velocity of the traffic aircraft |
H | height of protected zone, e.g., 1000ft |
minrelvs | minimum relative vertical speed |
maxvs | maximum absolute vertical speed |
caD | diameter of collision avoidance area, e.g., 1000 ft |
caH | height of collision avoidance area, e.g., 200ft |
epsv | The epsilon for vertical maneuvers (+1 or -1) |
Compute an ABSOLUTE vertical-only loss of separation recovery maneuver for the ownship
s | relative position of the ownship |
vo | velocity of the ownship aircraft |
vi | velocity of the traffic aircraft |
H | height of protected zone, e.g., 1000ft |
minrelv | minimum relative vertical speed |
caD | diameter of collision avoidance area, e.g., 1000 ft |
caH | height of collision avoidance area, e.g., 200ft |
minrelvs | minimum relative vertical speed |
Horizontal larcfm::CR3D::gs |
Ground speed only resolution
Horizontal larcfm::CR3D::opt |
Optimal track/ground speed resolution
Horizontal larcfm::CR3D::trk |
Track only resolution