Integrating Runtime Verification into an
Automated UAS Traffic Management System

Matthew Cauwels, Abigail Hammer, Benjamin Hertz, Phillip H. Jones, Kristin Y. Rozier

This webpage contains supplementary specifications for "Integrating Runtime Verification into an
Automated UAS Traffic Management System"
by M. Cauwels, A. Hammer, B. Hertz, P. H. Jones, and K. Y. Rozier

OR_UTM_8

Specification Description

The latitude reference waypoint (wpLat) that any UAS is flying towards will be bounded between LatLB and LatUB.

Signals Required

wpLat

Boolean Conversion of Signals to Atomic Inputs

wpLat_leq_LatUB = 1;
for(i = 0; i < NumUAS; i++)
{
    // if UAS i's wpLat is greater than the upper bounded
    // and the value is not "nan"
    if((wpLat[i] > LatUB) && (wpLat[i] == wpLat[i])
    { 
        wpLat_leq_LatUB = 0;
    }
}                        
wpLat_geq_LatLB = 1;
for(i = 0; i < NumUAS; i++)
{
    // if UAS i's wpLat is less than the lower bounded
    // and the value is not "nan"
    if((wpLat[i] < LatLB) && (wpLat[i] == wpLat[i])
    { 
        wpLat_geq_LatLB = 0;
    }
}                        

MLTL Specification

Original: wpLat_leq_LatLB ∧ wpLat_geq_LatLB

Updated: ☐[0,3] (wpLat_leq_LatLB ∧ wpLat_geq_LatLB)

Fault Explanation

Any telemetry point should be within the UTM's airspace

Additional Notes

Figures

Figure 1: All of the reference latitude waypoint (wpLat) inputs from each GCS the UTM reads from the telemetry datatable.
Figure 2: The output of R2U2's monitoring of specification OR_UTM_8, confirming that no UAS exceeds its operating range.
Figure 3: Since Fig. 1 had no wpLat inputs that exceeded LatUB or LatLB, we manually injected a fault into a single UAS (purple).
Figure 4: The output of R2U2's monitoring of specification OR_UTM_8, showing that R2U2 catches when the injected fault occurs. However, notice that there is bouncing in the initial Boolean Specification, which can lead to undesireable false-positive alerts.
Figure 5: The output of R2U2's monitoring of the updated specification OR_UTM_8, showing that R2U2 catches when the injected fault occurs and the "☐[0,3]" temporal operator acts as a sliding filter, debouncing R2U2's output.