NASA Ames Research Center: ProgPy is an open-source Python package supporting research and development of prognostics, health management, and predictive maintenance tools.
Prognostics is the science of prediction, and the field of Prognostics and Health Management (PHM) aims at estimating the current physical health of a system (e.g., motor, battery, etc.) and predicting how the system will degrade with use. The results of prognostics are used across industries to prevent failure, preserve safety, and reduce maintenance costs.
Prognostics, and prediction in general, is a very difficult and complex undertaking. Accurate prediction requires a model of the performance and degradation of complex systems as a function of time and use, estimation and management of uncertainty, representation of system use profiles, and ability to represent impact of neighboring systems and the environment. Any small discrepancy between the model and the actual system is compounded repeatedly, resulting in a large variation in the resulting prediction. For this reason, prognostics requires complex and capable algorithms, models, and software systems.
The ProgPy architecture can be thought of as three innovations: the Prognostic Models, the Prognostic Engine, Prognostic Support Tools.
The first part of the ProgPy innovation is the Prognostic Models. The model describes the prognostic behavior of the specific system of interest. ProgPy’s architecture includes a spectrum of modeling methodologies, ranging from physics-based models to entirely data-driven or hybrid techniques. Most users develop their own physics-based model, train one of the ProgPy data-driven models (e.g., Neural-Network models), or some hybrid of the two. A set of mature models for systems like batteries, electric motors, pumps, and valves are distributed in ProgPy. For these parameterized models, users tune the model to their specific system using the model tuning tools. The Prognostics Engine and Support Tools are built on top of these models, meaning a user that creates a new model will immediately be able to take advantage of the other features of ProgPy.
The Prognostic Engine is the most important part of ProgPy and forms the backbone of the software. The Prognostics Engine uses a Prognostics Model to perform the key functions of prognostics and health state estimation. The value in this design is that the Prognostics Engine can use any ProgPy model, whether it be a model distributed with ProgPy or a custom model created by users, to perform health state estimation and prognostics in a configurable way. The components of the Prognostics Engine are extendable, allowing users to implement their own state estimation or prediction algorithm for use with ProgPy models or use one distributed with ProgPy. Given the Prognostics Engine and a model, users can start performing prognostics for their application. This flexible and extendable framework for performing prognostics is truly novel and enables the widespread impact of ProgPy in the prognostic community.
The Prognostic Support Tools are a set of features that aid with the development, tuning, benchmarking, evaluation, and visualization of prognostic models and Prognostics Engine results (i.e., predictions). Like the Prognostic Engine, the support tools work equally with models distributed with ProgPy or custom models created by users. A user creating a model immediately has access to a wide array of tools to help them with their task.
Detailed documentation, examples, and tutorials of all these features are available to help users learn and use the software tools.
These three innovations of ProgPy implement architectures and widely used prognostics and health management functionality, supporting both researchers and practitioners. ProgPy combines technologies from across NASA projects and mission directorates, and external partners into a single package to support NASA missions and U.S. industries. Its innovative framework makes it applicable to a wide range of applications, providing enhanced capabilities not available in other, more limited, state-of-the-art software packages.
ProgPy offers unique features and a breadth and depth of unmatched capabilities when compared to other software in the field. It is novel in that it equips users with the tools necessary to do prognostics in their applications as-is, eliminating the need to adapt their use case to comply with the software available. This feature of ProgPy is an improvement upon the current state-of-the-art, as other prognostics software are often developed for specific use cases or based on a singular modeling method (Dadfarina and Drozdov, 2013; Davidson-Pilon, 2022; Schreiber, 2017). ProgPy’s unique approach opens a world of possibilities for researchers, practitioners, and developers in the field of prognostics and health management, as well as NASA missions and U.S. industries.
ProgPy Team:
- Adam J Sweet,
- Aditya Tummala,
- Chetan Shrikant Kulkarni
- Christopher Allen Teubert
- Jason Watkins
- Kateyn Jarvis Griffith
- Matteo Corbetta
- Matthew John Daigle
- Miryam Strautkalns
- Portia Banerjee