This Model-Based Fault Identification (MBFID) framework was designed by ARIA Systems Research as part of the AFRL STTR Research Contract. It utilizes Bayesian Hypothesis Testing by quantifying the uncertainty present in measurements observed by the system. The framework can identify known faults as well as detect anomalous behavior (AKA unknown faults).
Although it was initially designed to identify modeled satellite faults triggered during Basilisk simulations the implementation is general enough to be used for any dynamical system one wishes to test. All that is required by the user is a well formatted simulation database as well as truth telemetry data. See [1-2] for more details on the inner workings of the framework.
The MBFID framework is built using Python 3.9 with the following requirements:
You are welcome to install these libraries however you want. However, we provided some useful tools that will make this process very easy.
Note: This framework may work with different versions. However, we have yet to test them and, thus, cannot claim to support them.
You can install the Requirements any way you'd like (e.g. pip
). However, we have provided a simple way to manage this project using Conda Environments. Conda is a language-agnostic virtual environment and package manager that replaces native venv
.
If you have not done so already, install miniconda here. Verify your installation succeeded by running
conda --version
Once you have conda
running on your machine, create a conda environment for this project by running the following.
cd Model-Based-Fault-Identification/
conda env create -f environment.yml
This will create a virtual environment with all the required dependencies installed. To activate the virtual environment, run
conda activate MBFID-Env
. Once you are done using it, enter conda deactivate
to close the virtual environment.
Note: You do not need to create
the conda environment every time. Only when the environment.yml
is updated.
The MBFID tool requires two command line arguments to run properly.
- A path to a directory representing the simulation database for a particular example .
- A path to telemetry.csv representing the truth telemetry data for a particular example.
Instructions for providing these requirements can be found in the help module.
python3 main.py --help
We included two example cases in the examples/
directory. The examples can either be ran individually by calling main.py
or ran all at once by running
bash run_tests.sh
[1] Andersson, S. B., Hristu-Varsakelis, D., & Lahijanian, M. (2008). Observers in language-based control.
[2] Levy, B.C. (2008). Binary and Mary Hypothesis Testing. In: Principles of Signal Detection and Parameter Estimation. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-76544-0_2