View on GitHub

im_sample_algorithm

MITRE's Interval Management Sample Algorithm. An implementation of RTCA DO-361A Appendix C.

Mapping DO-361A Content to Sample Algorithm Code

Back to Landing Page

RTCA’s DO-361A contains two appendices which document algorithms and models associated with the research for Interval Management.

These appendices have been written by MITRE and are the copyright of RTCA. In this git repo, and our related FIM MOPS Aircraft & Control Model, are provided our software implementations of the algorithms and models. Below is a general mapping between each section of DO-361A Appendix C/H and our open source code.

(If any mistakes are noticed in this mapping, please open an issue to notify us of the mistake.)

Appendix Section Appendix Title Public Implementation
C SAMPLE ALGORITHM im_sample_algorithm
C.1 Overview No Applicable URL
C.2 Generation of the Reference Trajectories Not Available
C.2.1 Calculation of the Horizontal Path HorizontalPath.cpp
C.2.1.1 Determining the Waypoint Sequence AircraftIntent.cpp
C.2.1.2 Conversion of Waypoint Latitudes and Longitudes to x;y Coordinates TangentPlaneSequence.cpp
C.2.1.3 Determine Course Change Between Waypoints Not Available
C.2.1.4 Calculate Turn Radius Not Available
C.2.1.5 Calculate the Start; End; and Center of the Turn Not Available
C.2.1.6 Determine Horizontal Path Transitions and Distance-To-Go (DTG) Not Available
C.2.1.7 Data Format for the Horizontal Path HorizontalPath.cpp
C.2.2 Ground Speed Assembly KinematicTrajectoryPredictor.cpp
C.2.2.1 Trajectory Segments KinematicDescent4DPredictor.cpp
C.2.2.1.1 Constant Calibrated Airspeed descent KinematicDescent4DPredictor.cpp
C.2.2.1.2 Constant Mach Descent KinematicDescent4DPredictor.cpp
C.2.2.1.3 Deceleration and Descent KinematicDescent4DPredictor.cpp
C.2.2.1.4 Constant Geometric Flight-Path Angle Descent; Maintain Constant Airspeed KinematicDescent4DPredictor.cpp
C.2.2.1.5 Constant Geometric Flight-Path Angle Descent; Decelerate Airspeed KinematicDescent4DPredictor.cpp
C.2.2.1.6 Level Flight; Maintain Constant Airspeed KinematicDescent4DPredictor.cpp
C.2.2.1.7 Level Flight; Decelerate Airspeed KinematicDescent4DPredictor.cpp
C.2.2.2 Calculation of the Mach/CAS Crossover Altitude Atmosphere.cpp
C.2.2.3 Wind Information No Applicable URL
C.2.2.3.1 Format for Forecast and Sensed Wind Information Wind.cpp
C.2.2.3.2 Spline-Fit Algorithms to Calculate Predicted Winds Wind.cpp
C.2.2.4 Temperature Information StandardAtmosphere.cpp
C.2.2.5 Updating Wind and Temperature Information and Recalculating Predicted Trajectories MOPSPredictedWindEvaluatorVersion2.cpp; Public/Wind.cpp
C.2.2.6 Use of Procedural and Default Limits KinematicDescent4DPredictor.cpp
C.2.2.7 Logic for Combining Trajectory Segments KinematicDescent4DPredictor.cpp
C.2.2.8 Calculating Along-path Positions from Current Position AircraftCalculations.cpp; AircraftCalculations.cpp
C.2.2.8.1 Cross-Track Error Calculation AircraftCalculations.cpp
C.2.2.8.2 Along-path Position Calculation AircraftCalculations.cpp; AlongPathDistanceCalculator.cpp
C.2.2.9 Calculating TTG from Along-path Distance No Applicable URL
C.3 Nomenclature No Applicable URL
C.4 Achieve Stage IMAchieve.cpp
C.4.1 Predicted Spacing Interval Calculation No Applicable URL
C.4.1.1 Time-based Predicted Spacing Interval IMTimeBasedAchieve.cpp
C.4.1.2 Distance-based Predicted Spacing Interval IMDistBasedAchieve.cpp
C.4.2 Default Traffic Reference Point Not Available
C.4.3 Time-to-Go Control Law for Time-based Assigned Spacing Goals IMTimeBasedAchieve.cpp
C.4.4 Time-to-Go Control Law for Distance-based Assigned Spacing Goals IMDistBasedAchieve.cpp
C.4.5 Error Thresholds IMAchieve.cpp
C.4.6 Hysteresis on New Speed Implementation IMAlgorithm.cpp
C.4.7 Discretization of the Control Law Speed IMTimeBasedAchieve.cpp
C.5 IM Turn Algorithm No Applicable URL
C.5.1 Calculation of the IM Turn Point https://github.com/mitre/im_sample_algorithm/blob/master/IMTurn/calcPathShorteningTurnPointTTG.m
C.5.2 IM Turn Leg Lengths Not Available
C.5.3 Reference TTG for Ownship Not Available
C.5.4 Assumed Vertical and Airspeed Profiles Not Available
C.5.5 Description of the IM Turn Point Not Available
C.5.6 Transition to the Achieve Stage Not Available
C.6 Final Approach Spacing Algorithm No Applicable URL
C.6.1 Determine Whether an Aircraft is on a Vector to Intercept IMKinematicAchieve.cpp
C.6.2 Calculate Merge Point IMUtils.cpp
C.7 Maintain Stage Algorithm IMMaintain.cpp
C.7.1 Measured Spacing Interval Calculation No Applicable URL
C.7.1.1 Traffic Alignment Not Available
C.7.1.2 Time-based Measured Spacing Interval IMKinematicTimeBasedMaintain.cpp
C.7.1.3 Distance-based Measured Spacing Interval IMKinematicDistBasedMaintain.cpp
C.7.2 Time-History Control Law for Time-based Assigned Spacing Goals IMKinematicTimeBasedMaintain.cpp
C.7.3 Station-Keeping Algorithm for Distance-based Assigned Spacing Goals IMKinematicDistBasedMaintain.cpp
C.7.4 Discretization of the Control Law Speed IMKinematicTimeBasedMaintain.cpp
H MOPS Aircraft and Control Model FMACM
H.1 Aircraft Equations No Applicable URL
H.1.1 Reference Frames ThreeDOFDynamics.cpp
H.1.2 Equations of Motion ThreeDOFDynamics.cpp
H.2 Guidance Control Laws AircraftControl.cpp
H.2.1 Lateral Control AircraftControl.cpp
H.2.2 Speed Control Using Thrust SpeedOnThrustControl.cpp
H.2.3 Speed Control Using Pitch SpeedOnPitchControl.cpp
H.2.4 Control Gains and Parameter Values AircraftControl.cpp
H.3 Aircraft-Specific Modeling https://github.com/mitre/FMACM/blob/master/include/aaesim/BadaWithCalc.h

In addition to the above model mappings, Appendix H documents the control law gain values we used in our simulations. The mapping between the gains and our code is below.

Parameter/Control Gain Value Public Implementation
thrust 0.352 s-1 AircraftControl.cpp#L56
phi 0.400 s-1 SpeedOnPitchControl.cpp#L23
speed brake 0.100 s-1 SpeedOnThrustControl.cpp#L24
psi 3 AircraftControl.cpp#L120
gamma 0.400 s-1 SpeedOnPitchControl.cpp#L22
cross-track 5 × 10-4 m-1 AircraftControl.cpp#L119
IAS 0.1136 s-1 SpeedOnPitchControl.cpp#L36
altitude 0.20 s-1 SpeedOnPitchControl.cpp#L21
altitude threshold 500 feet TestFrameworkAircraft.cpp
IAS threshold 20 knot TestFrameworkAircraft.cpp