Urban Drone Demo

Copyright © 2024, United States Government, as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.

The “"Fault Model Design tools - fmdtools version 2"” software is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. 

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
import fmdtools.sim.propagate as propagate
from fmdtools.analyze import tabulate

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import numpy as np

Model Overview

The drone model is defined in drone_mdl_urban.py, along with some visualization functions.

from drone_mdl_urban import Drone
mdl = Drone()

This is the model structure:

mg = mdl.as_modelgraph()
fig, ax = mg.draw()
../../_images/9826bd30150f6327104d80207a3ce335f31e72731f4f9892f6f10e2f254cd45f.png

We can also view the grid environment using its show methods:

collections={"all_occupied": {"color": "red"}, "all_allowed": {"color": "blue"}, "start": {"color": "blue"}, "end": {"color": "blue"}}
fig, ax = mdl.flows['environment'].c.show({"height": {}}, collections=collections)
../../_images/8a7f32450735771a9b0bfa3b6a46abd59acfedb82806ab2fe8614efc192f8ee6.png

Which shows the Start, End, and allowed/unsafe locations in the 1000x1000-m grid. In this display, line thickness corresponds to building height, and hatching corresponds to whether or not the space is occupied. We can also display this using show.coord3d:

fig, ax = mdl.flows['environment'].c.show_z("height", collections=collections)
../../_images/e352e6306e04c773fc470964559a63935d6707fc45e9e7f5765fbe94bf614504.png

Nominal Simulation

Below we show how this drone performs in the nominal scenario.

results_nom, hist_nom =propagate.nominal(mdl)
fig, axs = hist_nom.plot_line("fxns.store_ee.s.soc",
                            'flows.ee_1.s.rate',
                            'flows.dofs.s.z',
                            'fxns.plan_path.m.mode',
                            'fxns.plan_path.s.pt',
                            'flows.des_traj.s.power')
../../_images/c34d90bd2d5449d6fabc446955a68f9c4b4b72cf18e9191cf2ea2c99e41dbbe1.png

As shown, the flight ends fairly quickly (in 10 minutes), with the drone successively proceeding through points in the flight plan.

We can also view this flightpath in 3-d space using History.plot_trajectories:

fig, ax = hist_nom.plot_trajectories('dofs.s.x', 'dofs.s.y', 'dofs.s.z', time_groups=['nominal'], time_ticks=0.1)
../../_images/425fa9c1396cf0a93c9d315c7683fa5a736b3a13f57b9c54822958ef91de6fcf.png

Trajectory plots can be overlaid on top of environment plots. In this case, we defined the method plot_env_with_traj and plot_env_with_traj_z for this case.

from drone_mdl_urban import plot_env_with_traj, plot_env_with_traj_z
plot_env_with_traj_z(hist_nom, mdl)
(<Figure size 400x400 with 1 Axes>,
 <Axes3D: title={'center': 'trajectory'}, xlabel='x', ylabel='y', zlabel='z'>)
../../_images/5e6464547111f7d7637df7115b326335157e1816e6ed708bed1f7bc8f1108811.png
plot_env_with_traj(hist_nom, mdl)
(<Figure size 500x500 with 2 Axes>,
 <Axes: title={'center': 'trajectory'}, xlabel='x', ylabel='y'>)
../../_images/36800c823764c82c3485a9662ac941dff5964997e5e4e701ea43ce4766993727.png

As shown, this is a rather simple straight-line path. If we wanted a more complex scenario, we could make the path more complex by adding multiple destinations or planning the path based on allowed flight/landing locations.

As it is, we may also want to adjust the timestep/speed to get more resolution, since the drone only has a few discrete timesteps in the air.

The results for the simulation are:

results_nom
endclass: 
--rate:                              1.0
--cost:                              0.0
--expected_cost:                     0.0
--repcost:                             0
--unsafe_flight_time:                  0
--body_strikes:                      0.0
--head_strikes:                      0.0
--property_restrictions:               0
--safecost:                          0.0
--landcost:                            0
--p_safety:                          0.0
--severities: {'hazardous': 0.0, 'minor': 1.0}

Resilience model

A number of different faults have been implemented in the system.

For example, here we inject a mechanical fault in the left-rear rotor during flight:

mdl.fxns['affect_dof'].get_faults(only_present=False)
{'drone.fxns.affect_dof': {},
 'drone.fxns.affect_dof.ca': {},
 'drone.fxns.affect_dof.ca.comps.lf': {'ctlbreak': Fault(prob=2.0000000000000003e-06, cost=1000, phases=(), disturbances=(), units='sim'),
  'ctldn': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'ctlup': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechbreak': Fault(prob=1.0000000000000002e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechfriction': Fault(prob=5.000000000000001e-07, cost=500, phases=(), disturbances=(), units='sim'),
  'openc': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim'),
  'propbreak': Fault(prob=3.0000000000000004e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propstuck': Fault(prob=2.0000000000000002e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propwarp': Fault(prob=1.0000000000000001e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'short': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim')},
 'drone.fxns.affect_dof.ca.comps.lr': {'ctlbreak': Fault(prob=2.0000000000000003e-06, cost=1000, phases=(), disturbances=(), units='sim'),
  'ctldn': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'ctlup': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechbreak': Fault(prob=1.0000000000000002e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechfriction': Fault(prob=5.000000000000001e-07, cost=500, phases=(), disturbances=(), units='sim'),
  'openc': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim'),
  'propbreak': Fault(prob=3.0000000000000004e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propstuck': Fault(prob=2.0000000000000002e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propwarp': Fault(prob=1.0000000000000001e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'short': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim')},
 'drone.fxns.affect_dof.ca.comps.rf': {'ctlbreak': Fault(prob=2.0000000000000003e-06, cost=1000, phases=(), disturbances=(), units='sim'),
  'ctldn': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'ctlup': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechbreak': Fault(prob=1.0000000000000002e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechfriction': Fault(prob=5.000000000000001e-07, cost=500, phases=(), disturbances=(), units='sim'),
  'openc': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim'),
  'propbreak': Fault(prob=3.0000000000000004e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propstuck': Fault(prob=2.0000000000000002e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propwarp': Fault(prob=1.0000000000000001e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'short': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim')},
 'drone.fxns.affect_dof.ca.comps.rr': {'ctlbreak': Fault(prob=2.0000000000000003e-06, cost=1000, phases=(), disturbances=(), units='sim'),
  'ctldn': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'ctlup': Fault(prob=2.0000000000000003e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechbreak': Fault(prob=1.0000000000000002e-06, cost=500, phases=(), disturbances=(), units='sim'),
  'mechfriction': Fault(prob=5.000000000000001e-07, cost=500, phases=(), disturbances=(), units='sim'),
  'openc': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim'),
  'propbreak': Fault(prob=3.0000000000000004e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propstuck': Fault(prob=2.0000000000000002e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'propwarp': Fault(prob=1.0000000000000001e-07, cost=200, phases=(), disturbances=(), units='sim'),
  'short': Fault(prob=1.0000000000000002e-06, cost=200, phases=(), disturbances=(), units='sim')}}
results_fault, hist_fault =propagate.one_fault(mdl, "affect_dof.ca.comps.lr", "mechbreak", time=5)
fig, axs = hist_fault.plot_line("fxns.store_ee.s.soc",
                                'flows.ee_1.s.rate',
                                'flows.dofs.s.z',
                                'fxns.plan_path.m.mode',
                                'fxns.plan_path.s.pt',
                                'flows.des_traj.s.power')
../../_images/c2c65a90eb5f572fe3f13b45901a2f5f6d40aab726d161d1d016c14a89f5cd07.png
plot_env_with_traj_z(hist_fault, mdl)
(<Figure size 400x400 with 1 Axes>,
 <Axes3D: title={'center': 'trajectory'}, xlabel='x', ylabel='y', zlabel='z'>)
../../_images/99e8cf0c5464afa81a5bc5f49ea39e24c8cc5288f2bbc756ac8d91a2fd0b7796.png
plot_env_with_traj(hist_fault, mdl)
(<Figure size 500x500 with 2 Axes>,
 <Axes: title={'center': 'trajectory'}, xlabel='x', ylabel='y'>)
../../_images/2a81d4e7b4102e10a7787c9da32f75f5610ef401543d8fe746c484edb691a5be.png
results_fault
endclass.rate:    1.0000000000000002e-06
endclass.cost:                   41400.0
endclass.expected_cost: 4140.000000000001
endclass.repcost:                   1500
endclass.unsafe_flight_time:         251
endclass.body_strikes:            0.0003
endclass.head_strikes:            0.0002
endclass.property_restrictions:        1
endclass.safecost:               29900.0
endclass.landcost:                 10000
endclass.p_safety: 0.00011951429376733103
endclass.severities: {'hazardous': 1.1951429376733104e-10, 'minor': 9.998804857062328e-07}

Here we inject a large list of faults in the system and evaluate their relative consequences in terms of metrics calculated in find_classification:

from fmdtools.analyze.phases import PhaseMap, from_hist
phasemaps = from_hist(hist_nom, fxn_modephases=[], dt=mdl.sp.dt)
phasemaps
{'ctl_dof': PhaseMap({'nominal': [0.0, 30.0]}, {}),
 'plan_path': PhaseMap({'taxi': [0.0, 1.0], 'move': [1.1, 8.2], 'land': [8.3, 18.6], 'taxi1': [18.7, 30.0]}, {})}
from drone_mdl_urban import make_move_quad
move_quad=make_move_quad(hist_nom, phasemaps['plan_path'].phases['move'])
move_quad
{'samp': 'quadrature',
 'quad': {'nodes': [0.8309859154929577,
   -0.2676056338028169,
   0.267605633802817],
  'weights': [0.006, 1.0, 0.92]}}
from fmdtools.sim.sample import FaultDomain, FaultSample


fd = FaultDomain(mdl)
fd.add_all()

fs = FaultSample(fd, phasemap = phasemaps['plan_path'])
fs.add_fault_phases("move", method = "quad",
                    args=(move_quad['quad']['nodes'], move_quad['quad']['weights']))

fs
FaultSample of scenarios: 
 - drone_fxns_manage_health_lostfunction_t7p6
 - drone_fxns_manage_health_lostfunction_t3p7
 - drone_fxns_manage_health_lostfunction_t5p6
 - drone_fxns_store_ee_lowcharge_t7p6
 - drone_fxns_store_ee_lowcharge_t3p7
 - drone_fxns_store_ee_lowcharge_t5p6
 - drone_fxns_store_ee_nocharge_t7p6
 - drone_fxns_store_ee_nocharge_t3p7
 - drone_fxns_store_ee_nocharge_t5p6
 - drone_fxns_store_ee_ca_comps_s1p1_break_t7p6
 - ... (177 total)
fs.scenarios()
[SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.manage_health': ['lostfunction']}, disturbances={})}, times=(7.6,), function='drone.fxns.manage_health', fault='lostfunction', rate=4.672897196261682e-11, name='drone_fxns_manage_health_lostfunction_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.manage_health': ['lostfunction']}, disturbances={})}, times=(3.7,), function='drone.fxns.manage_health', fault='lostfunction', rate=7.78816199376947e-09, name='drone_fxns_manage_health_lostfunction_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.manage_health': ['lostfunction']}, disturbances={})}, times=(5.6,), function='drone.fxns.manage_health', fault='lostfunction', rate=7.1651090342679115e-09, name='drone_fxns_manage_health_lostfunction_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee': ['lowcharge']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee', fault='lowcharge', rate=4.3613707165109034e-08, name='drone_fxns_store_ee_lowcharge_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee': ['lowcharge']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee', fault='lowcharge', rate=7.268951194184839e-06, name='drone_fxns_store_ee_lowcharge_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee': ['lowcharge']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee', fault='lowcharge', rate=6.687435098650051e-06, name='drone_fxns_store_ee_lowcharge_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee': ['nocharge']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee', fault='nocharge', rate=1.2461059190031154e-08, name='drone_fxns_store_ee_nocharge_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee': ['nocharge']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee', fault='nocharge', rate=2.0768431983385256e-06, name='drone_fxns_store_ee_nocharge_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee': ['nocharge']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee', fault='nocharge', rate=1.9106957424714435e-06, name='drone_fxns_store_ee_nocharge_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['break']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='break', rate=2.2429906542056072e-09, name='drone_fxns_store_ee_ca_comps_s1p1_break_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['break']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='break', rate=3.7383177570093457e-07, name='drone_fxns_store_ee_ca_comps_s1p1_break_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['break']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='break', rate=3.439252336448598e-07, name='drone_fxns_store_ee_ca_comps_s1p1_break_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['degr']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='degr', rate=2.2429906542056072e-09, name='drone_fxns_store_ee_ca_comps_s1p1_degr_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['degr']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='degr', rate=3.7383177570093457e-07, name='drone_fxns_store_ee_ca_comps_s1p1_degr_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['degr']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='degr', rate=3.439252336448598e-07, name='drone_fxns_store_ee_ca_comps_s1p1_degr_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['lowcharge']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='lowcharge', rate=2.9906542056074763e-09, name='drone_fxns_store_ee_ca_comps_s1p1_lowcharge_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['lowcharge']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='lowcharge', rate=4.98442367601246e-07, name='drone_fxns_store_ee_ca_comps_s1p1_lowcharge_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['lowcharge']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='lowcharge', rate=4.5856697819314633e-07, name='drone_fxns_store_ee_ca_comps_s1p1_lowcharge_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['nocharge']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='nocharge', rate=4.4859813084112144e-09, name='drone_fxns_store_ee_ca_comps_s1p1_nocharge_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['nocharge']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='nocharge', rate=7.476635514018691e-07, name='drone_fxns_store_ee_ca_comps_s1p1_nocharge_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['nocharge']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='nocharge', rate=6.878504672897196e-07, name='drone_fxns_store_ee_ca_comps_s1p1_nocharge_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='short', rate=2.2429906542056072e-09, name='drone_fxns_store_ee_ca_comps_s1p1_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='short', rate=3.7383177570093457e-07, name='drone_fxns_store_ee_ca_comps_s1p1_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.store_ee.ca.comps.s1p1': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.store_ee.ca.comps.s1p1', fault='short', rate=3.439252336448598e-07, name='drone_fxns_store_ee_ca_comps_s1p1_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.dist_ee': ['break']}, disturbances={})}, times=(7.6,), function='drone.fxns.dist_ee', fault='break', rate=6.230529595015577e-09, name='drone_fxns_dist_ee_break_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.dist_ee': ['break']}, disturbances={})}, times=(3.7,), function='drone.fxns.dist_ee', fault='break', rate=1.0384215991692628e-06, name='drone_fxns_dist_ee_break_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.dist_ee': ['break']}, disturbances={})}, times=(5.6,), function='drone.fxns.dist_ee', fault='break', rate=9.553478712357217e-07, name='drone_fxns_dist_ee_break_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.dist_ee': ['degr']}, disturbances={})}, times=(7.6,), function='drone.fxns.dist_ee', fault='degr', rate=1.5576323987538942e-08, name='drone_fxns_dist_ee_degr_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.dist_ee': ['degr']}, disturbances={})}, times=(3.7,), function='drone.fxns.dist_ee', fault='degr', rate=2.596053997923157e-06, name='drone_fxns_dist_ee_degr_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.dist_ee': ['degr']}, disturbances={})}, times=(5.6,), function='drone.fxns.dist_ee', fault='degr', rate=2.388369678089304e-06, name='drone_fxns_dist_ee_degr_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.dist_ee': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.dist_ee', fault='short', rate=9.345794392523365e-09, name='drone_fxns_dist_ee_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.dist_ee': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.dist_ee', fault='short', rate=1.557632398753894e-06, name='drone_fxns_dist_ee_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.dist_ee': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.dist_ee', fault='short', rate=1.4330218068535824e-06, name='drone_fxns_dist_ee_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlbreak', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lf_ctlbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlbreak', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lf_ctlbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlbreak', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lf_ctlbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctldn']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctldn', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lf_ctldn_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctldn']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctldn', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lf_ctldn_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctldn']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctldn', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lf_ctldn_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlup']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlup', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lf_ctlup_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlup']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlup', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lf_ctlup_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['ctlup']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='ctlup', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lf_ctlup_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechbreak', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lf_mechbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechbreak', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lf_mechbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechbreak', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lf_mechbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechfriction']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechfriction', rate=1.5576323987538942e-09, name='drone_fxns_affect_dof_ca_comps_lf_mechfriction_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechfriction']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechfriction', rate=2.596053997923157e-07, name='drone_fxns_affect_dof_ca_comps_lf_mechfriction_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['mechfriction']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='mechfriction', rate=2.3883696780893044e-07, name='drone_fxns_affect_dof_ca_comps_lf_mechfriction_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['openc']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='openc', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lf_openc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['openc']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='openc', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lf_openc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['openc']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='openc', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lf_openc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propbreak', rate=9.345794392523365e-10, name='drone_fxns_affect_dof_ca_comps_lf_propbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propbreak', rate=1.5576323987538942e-07, name='drone_fxns_affect_dof_ca_comps_lf_propbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propbreak', rate=1.4330218068535827e-07, name='drone_fxns_affect_dof_ca_comps_lf_propbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propstuck']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propstuck', rate=6.230529595015577e-10, name='drone_fxns_affect_dof_ca_comps_lf_propstuck_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propstuck']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propstuck', rate=1.0384215991692627e-07, name='drone_fxns_affect_dof_ca_comps_lf_propstuck_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propstuck']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propstuck', rate=9.553478712357218e-08, name='drone_fxns_affect_dof_ca_comps_lf_propstuck_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propwarp']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propwarp', rate=3.1152647975077885e-10, name='drone_fxns_affect_dof_ca_comps_lf_propwarp_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propwarp']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propwarp', rate=5.1921079958463137e-08, name='drone_fxns_affect_dof_ca_comps_lf_propwarp_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['propwarp']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='propwarp', rate=4.776739356178609e-08, name='drone_fxns_affect_dof_ca_comps_lf_propwarp_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='short', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lf_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lf', fault='short', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lf_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lf': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lf', fault='short', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lf_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlbreak', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lr_ctlbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlbreak', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lr_ctlbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlbreak', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lr_ctlbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctldn']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctldn', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lr_ctldn_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctldn']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctldn', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lr_ctldn_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctldn']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctldn', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lr_ctldn_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlup']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlup', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_lr_ctlup_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlup']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlup', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_lr_ctlup_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['ctlup']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='ctlup', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_lr_ctlup_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechbreak', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lr_mechbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechbreak', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lr_mechbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechbreak', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lr_mechbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechfriction']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechfriction', rate=1.5576323987538942e-09, name='drone_fxns_affect_dof_ca_comps_lr_mechfriction_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechfriction']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechfriction', rate=2.596053997923157e-07, name='drone_fxns_affect_dof_ca_comps_lr_mechfriction_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['mechfriction']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='mechfriction', rate=2.3883696780893044e-07, name='drone_fxns_affect_dof_ca_comps_lr_mechfriction_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['openc']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='openc', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lr_openc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['openc']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='openc', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lr_openc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['openc']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='openc', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lr_openc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propbreak', rate=9.345794392523365e-10, name='drone_fxns_affect_dof_ca_comps_lr_propbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propbreak', rate=1.5576323987538942e-07, name='drone_fxns_affect_dof_ca_comps_lr_propbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propbreak', rate=1.4330218068535827e-07, name='drone_fxns_affect_dof_ca_comps_lr_propbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propstuck']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propstuck', rate=6.230529595015577e-10, name='drone_fxns_affect_dof_ca_comps_lr_propstuck_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propstuck']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propstuck', rate=1.0384215991692627e-07, name='drone_fxns_affect_dof_ca_comps_lr_propstuck_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propstuck']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propstuck', rate=9.553478712357218e-08, name='drone_fxns_affect_dof_ca_comps_lr_propstuck_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propwarp']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propwarp', rate=3.1152647975077885e-10, name='drone_fxns_affect_dof_ca_comps_lr_propwarp_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propwarp']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propwarp', rate=5.1921079958463137e-08, name='drone_fxns_affect_dof_ca_comps_lr_propwarp_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['propwarp']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='propwarp', rate=4.776739356178609e-08, name='drone_fxns_affect_dof_ca_comps_lr_propwarp_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='short', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_lr_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.lr', fault='short', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_lr_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.lr': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.lr', fault='short', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_lr_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlbreak', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rf_ctlbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlbreak', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rf_ctlbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlbreak', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rf_ctlbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctldn']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctldn', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rf_ctldn_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctldn']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctldn', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rf_ctldn_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctldn']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctldn', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rf_ctldn_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlup']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlup', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rf_ctlup_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlup']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlup', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rf_ctlup_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['ctlup']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='ctlup', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rf_ctlup_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechbreak', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rf_mechbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechbreak', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rf_mechbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechbreak', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rf_mechbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechfriction']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechfriction', rate=1.5576323987538942e-09, name='drone_fxns_affect_dof_ca_comps_rf_mechfriction_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechfriction']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechfriction', rate=2.596053997923157e-07, name='drone_fxns_affect_dof_ca_comps_rf_mechfriction_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['mechfriction']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='mechfriction', rate=2.3883696780893044e-07, name='drone_fxns_affect_dof_ca_comps_rf_mechfriction_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['openc']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='openc', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rf_openc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['openc']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='openc', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rf_openc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['openc']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='openc', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rf_openc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propbreak', rate=9.345794392523365e-10, name='drone_fxns_affect_dof_ca_comps_rf_propbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propbreak', rate=1.5576323987538942e-07, name='drone_fxns_affect_dof_ca_comps_rf_propbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propbreak', rate=1.4330218068535827e-07, name='drone_fxns_affect_dof_ca_comps_rf_propbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propstuck']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propstuck', rate=6.230529595015577e-10, name='drone_fxns_affect_dof_ca_comps_rf_propstuck_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propstuck']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propstuck', rate=1.0384215991692627e-07, name='drone_fxns_affect_dof_ca_comps_rf_propstuck_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propstuck']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propstuck', rate=9.553478712357218e-08, name='drone_fxns_affect_dof_ca_comps_rf_propstuck_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propwarp']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propwarp', rate=3.1152647975077885e-10, name='drone_fxns_affect_dof_ca_comps_rf_propwarp_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propwarp']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propwarp', rate=5.1921079958463137e-08, name='drone_fxns_affect_dof_ca_comps_rf_propwarp_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['propwarp']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='propwarp', rate=4.776739356178609e-08, name='drone_fxns_affect_dof_ca_comps_rf_propwarp_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='short', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rf_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rf', fault='short', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rf_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rf': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rf', fault='short', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rf_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlbreak', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rr_ctlbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlbreak', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rr_ctlbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlbreak', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rr_ctlbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctldn']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctldn', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rr_ctldn_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctldn']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctldn', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rr_ctldn_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctldn']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctldn', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rr_ctldn_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlup']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlup', rate=6.230529595015577e-09, name='drone_fxns_affect_dof_ca_comps_rr_ctlup_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlup']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlup', rate=1.0384215991692628e-06, name='drone_fxns_affect_dof_ca_comps_rr_ctlup_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['ctlup']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='ctlup', rate=9.553478712357217e-07, name='drone_fxns_affect_dof_ca_comps_rr_ctlup_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechbreak', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rr_mechbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechbreak', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rr_mechbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechbreak', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rr_mechbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechfriction']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechfriction', rate=1.5576323987538942e-09, name='drone_fxns_affect_dof_ca_comps_rr_mechfriction_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechfriction']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechfriction', rate=2.596053997923157e-07, name='drone_fxns_affect_dof_ca_comps_rr_mechfriction_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['mechfriction']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='mechfriction', rate=2.3883696780893044e-07, name='drone_fxns_affect_dof_ca_comps_rr_mechfriction_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['openc']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='openc', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rr_openc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['openc']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='openc', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rr_openc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['openc']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='openc', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rr_openc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propbreak']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propbreak', rate=9.345794392523365e-10, name='drone_fxns_affect_dof_ca_comps_rr_propbreak_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propbreak']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propbreak', rate=1.5576323987538942e-07, name='drone_fxns_affect_dof_ca_comps_rr_propbreak_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propbreak']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propbreak', rate=1.4330218068535827e-07, name='drone_fxns_affect_dof_ca_comps_rr_propbreak_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propstuck']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propstuck', rate=6.230529595015577e-10, name='drone_fxns_affect_dof_ca_comps_rr_propstuck_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propstuck']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propstuck', rate=1.0384215991692627e-07, name='drone_fxns_affect_dof_ca_comps_rr_propstuck_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propstuck']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propstuck', rate=9.553478712357218e-08, name='drone_fxns_affect_dof_ca_comps_rr_propstuck_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propwarp']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propwarp', rate=3.1152647975077885e-10, name='drone_fxns_affect_dof_ca_comps_rr_propwarp_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propwarp']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propwarp', rate=5.1921079958463137e-08, name='drone_fxns_affect_dof_ca_comps_rr_propwarp_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['propwarp']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='propwarp', rate=4.776739356178609e-08, name='drone_fxns_affect_dof_ca_comps_rr_propwarp_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['short']}, disturbances={})}, times=(7.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='short', rate=3.1152647975077885e-09, name='drone_fxns_affect_dof_ca_comps_rr_short_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['short']}, disturbances={})}, times=(3.7,), function='drone.fxns.affect_dof.ca.comps.rr', fault='short', rate=5.192107995846314e-07, name='drone_fxns_affect_dof_ca_comps_rr_short_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.affect_dof.ca.comps.rr': ['short']}, disturbances={})}, times=(5.6,), function='drone.fxns.affect_dof.ca.comps.rr', fault='short', rate=4.776739356178609e-07, name='drone_fxns_affect_dof_ca_comps_rr_short_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.ctl_dof': ['degctl']}, disturbances={})}, times=(7.6,), function='drone.fxns.ctl_dof', fault='degctl', rate=7.476635514018692e-09, name='drone_fxns_ctl_dof_degctl_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.ctl_dof': ['degctl']}, disturbances={})}, times=(3.7,), function='drone.fxns.ctl_dof', fault='degctl', rate=1.2461059190031154e-06, name='drone_fxns_ctl_dof_degctl_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.ctl_dof': ['degctl']}, disturbances={})}, times=(5.6,), function='drone.fxns.ctl_dof', fault='degctl', rate=1.1464174454828662e-06, name='drone_fxns_ctl_dof_degctl_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.ctl_dof': ['noctl']}, disturbances={})}, times=(7.6,), function='drone.fxns.ctl_dof', fault='noctl', rate=1.869158878504673e-09, name='drone_fxns_ctl_dof_noctl_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.ctl_dof': ['noctl']}, disturbances={})}, times=(3.7,), function='drone.fxns.ctl_dof', fault='noctl', rate=3.1152647975077885e-07, name='drone_fxns_ctl_dof_noctl_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.ctl_dof': ['noctl']}, disturbances={})}, times=(5.6,), function='drone.fxns.ctl_dof', fault='noctl', rate=2.8660436137071655e-07, name='drone_fxns_ctl_dof_noctl_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.plan_path': ['degloc']}, disturbances={})}, times=(7.6,), function='drone.fxns.plan_path', fault='degloc', rate=7.476635514018692e-09, name='drone_fxns_plan_path_degloc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.plan_path': ['degloc']}, disturbances={})}, times=(3.7,), function='drone.fxns.plan_path', fault='degloc', rate=1.2461059190031154e-06, name='drone_fxns_plan_path_degloc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.plan_path': ['degloc']}, disturbances={})}, times=(5.6,), function='drone.fxns.plan_path', fault='degloc', rate=1.1464174454828662e-06, name='drone_fxns_plan_path_degloc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.plan_path': ['noloc']}, disturbances={})}, times=(7.6,), function='drone.fxns.plan_path', fault='noloc', rate=1.869158878504673e-09, name='drone_fxns_plan_path_noloc_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.plan_path': ['noloc']}, disturbances={})}, times=(3.7,), function='drone.fxns.plan_path', fault='noloc', rate=3.1152647975077885e-07, name='drone_fxns_plan_path_noloc_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.plan_path': ['noloc']}, disturbances={})}, times=(5.6,), function='drone.fxns.plan_path', fault='noloc', rate=2.8660436137071655e-07, name='drone_fxns_plan_path_noloc_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['lack_of_detection']}, disturbances={})}, times=(7.6,), function='drone.fxns.plan_path.ca.comps.vision', fault='lack_of_detection', rate=0.00018691588785046725, name='drone_fxns_plan_path_ca_comps_vision_lack_of_detection_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['lack_of_detection']}, disturbances={})}, times=(3.7,), function='drone.fxns.plan_path.ca.comps.vision', fault='lack_of_detection', rate=0.031152647975077875, name='drone_fxns_plan_path_ca_comps_vision_lack_of_detection_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['lack_of_detection']}, disturbances={})}, times=(5.6,), function='drone.fxns.plan_path.ca.comps.vision', fault='lack_of_detection', rate=0.028660436137071643, name='drone_fxns_plan_path_ca_comps_vision_lack_of_detection_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['undesired_detection']}, disturbances={})}, times=(7.6,), function='drone.fxns.plan_path.ca.comps.vision', fault='undesired_detection', rate=0.00018691588785046725, name='drone_fxns_plan_path_ca_comps_vision_undesired_detection_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['undesired_detection']}, disturbances={})}, times=(3.7,), function='drone.fxns.plan_path.ca.comps.vision', fault='undesired_detection', rate=0.031152647975077875, name='drone_fxns_plan_path_ca_comps_vision_undesired_detection_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.plan_path.ca.comps.vision': ['undesired_detection']}, disturbances={})}, times=(5.6,), function='drone.fxns.plan_path.ca.comps.vision', fault='undesired_detection', rate=0.028660436137071643, name='drone_fxns_plan_path_ca_comps_vision_undesired_detection_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.hold_payload': ['break']}, disturbances={})}, times=(7.6,), function='drone.fxns.hold_payload', fault='break', rate=2.2429906542056067e-11, name='drone_fxns_hold_payload_break_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.hold_payload': ['break']}, disturbances={})}, times=(3.7,), function='drone.fxns.hold_payload', fault='break', rate=3.7383177570093445e-09, name='drone_fxns_hold_payload_break_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.hold_payload': ['break']}, disturbances={})}, times=(5.6,), function='drone.fxns.hold_payload', fault='break', rate=3.439252336448597e-09, name='drone_fxns_hold_payload_break_t5p6', time=5.6, phase='move'),
 SingleFaultScenario(sequence={7.6: Injection(faults={'drone.fxns.hold_payload': ['deform']}, disturbances={})}, times=(7.6,), function='drone.fxns.hold_payload', fault='deform', rate=8.971962616822427e-11, name='drone_fxns_hold_payload_deform_t7p6', time=7.6, phase='move'),
 SingleFaultScenario(sequence={3.7: Injection(faults={'drone.fxns.hold_payload': ['deform']}, disturbances={})}, times=(3.7,), function='drone.fxns.hold_payload', fault='deform', rate=1.4953271028037378e-08, name='drone_fxns_hold_payload_deform_t3p7', time=3.7, phase='move'),
 SingleFaultScenario(sequence={5.6: Injection(faults={'drone.fxns.hold_payload': ['deform']}, disturbances={})}, times=(5.6,), function='drone.fxns.hold_payload', fault='deform', rate=1.3757009345794388e-08, name='drone_fxns_hold_payload_deform_t5p6', time=5.6, phase='move')]
endresults, hists = propagate.fault_sample(mdl, fs, staged=False)
SCENARIOS COMPLETE: 100%|██████████| 177/177 [02:49<00:00,  1.04it/s]
plot_env_with_traj_z(hists , mdl)
(<Figure size 400x400 with 1 Axes>,
 <Axes3D: title={'center': 'trajectory'}, xlabel='x', ylabel='y', zlabel='z'>)
../../_images/cf488a970f94234f5b90c2796bfcaa57a7f6335ac7892044252cdb426b06162f.png
statsfmea = tabulate.FMEA(endresults, fs,
                          average_metric=['rate', 'unsafe_flight_time', 'cost', 'repcost',
                                            'landcost', 'body_strikes',
                                            'head_strikes', 'property_restrictions'],
                          rates='rate')
fmeatab = statsfmea.as_table(sort_by="cost")
fmeatab
average_rate average_unsafe_flight_time average_cost average_repcost average_landcost average_body_strikes average_head_strikes average_property_restrictions
drone.fxns.plan_path.ca.comps.vision lack_of_detection 2.000000e-02 244.666667 24466.666667 0.000000 0.000000 0.0000 0.000000 0.000000
undesired_detection 2.000000e-02 0.000000 0.000000 0.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.store_ee lowcharge 4.666667e-06 244.666667 25966.666667 1500.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.dist_ee degr 1.666667e-06 244.666667 30733.333333 1333.333333 3333.333333 0.0001 0.000067 0.333333
drone.fxns.store_ee nocharge 1.333333e-06 244.666667 29966.666667 566.666667 3333.333333 0.0001 0.000067 0.333333
drone.fxns.dist_ee short 1.000000e-06 244.666667 30900.000000 1500.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.plan_path degloc 8.000000e-07 244.666667 25466.666667 1000.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.ctl_dof degctl 8.000000e-07 244.666667 25633.333333 1166.666667 0.000000 0.0000 0.000000 0.000000
drone.fxns.affect_dof.ca.comps.lf ctldn 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
ctlbreak 6.666667e-07 244.666667 30633.333333 1233.333333 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr ctlup 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.dist_ee break 6.666667e-07 244.666667 30900.000000 1500.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf ctldn 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr ctlbreak 6.666667e-07 244.666667 30633.333333 1233.333333 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf ctlbreak 6.666667e-07 244.666667 30633.333333 1233.333333 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf ctlup 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf ctlup 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr ctlbreak 6.666667e-07 244.666667 30633.333333 1233.333333 3333.333333 0.0001 0.000067 0.333333
ctldn 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr ctldn 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr ctlup 6.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.store_ee.ca.comps.s1p1 nocharge 4.800000e-07 244.666667 24566.666667 100.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.affect_dof.ca.comps.lr mechbreak 3.333333e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
openc 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf openc 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
mechbreak 3.333333e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr mechbreak 3.333333e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
openc 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
short 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf mechbreak 3.333333e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr short 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf openc 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
short 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf short 3.333333e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.store_ee.ca.comps.s1p1 lowcharge 3.200000e-07 244.666667 24566.666667 100.000000 0.000000 0.0000 0.000000 0.000000
degr 2.400000e-07 244.666667 30433.333333 1033.333333 3333.333333 0.0001 0.000067 0.333333
break 2.400000e-07 244.666667 29966.666667 566.666667 3333.333333 0.0001 0.000067 0.333333
short 2.400000e-07 244.666667 29966.666667 566.666667 3333.333333 0.0001 0.000067 0.333333
drone.fxns.plan_path noloc 2.000000e-07 244.666667 25466.666667 1000.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.ctl_dof noctl 2.000000e-07 244.666667 30566.666667 1166.666667 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf mechfriction 1.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf mechfriction 1.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr mechfriction 1.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr mechfriction 1.666667e-07 244.666667 30300.000000 900.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr propbreak 1.000000e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr propbreak 1.000000e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf propbreak 1.000000e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf propbreak 1.000000e-07 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf propstuck 6.666667e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr propstuck 6.666667e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr propstuck 6.666667e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf propstuck 6.666667e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rf propwarp 3.333333e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.rr propwarp 3.333333e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lf propwarp 3.333333e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.affect_dof.ca.comps.lr propwarp 3.333333e-08 244.666667 30100.000000 700.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.hold_payload deform 9.600000e-09 244.666667 30900.000000 1500.000000 3333.333333 0.0001 0.000067 0.333333
drone.fxns.manage_health lostfunction 5.000000e-09 244.666667 25466.666667 1000.000000 0.000000 0.0000 0.000000 0.000000
drone.fxns.hold_payload break 2.400000e-09 244.666667 30900.000000 1500.000000 3333.333333 0.0001 0.000067 0.333333
mdl.flows['environment'].c.in_area(200, 200, "all_safe")
False