SARA (Storage and Analysis of Robot Acquired plant data) is a web service that facilitates the processing of incoming plant data from autonomous robots. Various workflows will be triggered to analyse the plant data, based on metadata provided. The workflows themselves are not in the scope of this solution. This solution only needs to have an overview of which workflows are available and how to call them with their API.
SARA is responsible for indexing the incoming data, including information on where the raw data is stored, which analysis are to be run, the status on these, where to temporarily store artifacts and where to store the finalized results and visualizations. SARA can then be queried later from other solutions and use the indexing to look data and generate a response.
Examples of plant data are pictures, videos, thermal pictures, thermal videos and audio.
The resulting service is available in three environments (development, staging and production).
When running locally the endpoint can be reached at https://localhost:8100.
SARA uses several services to upload data to other sources for storage or analysis. A list of these services can be found below.
There will be several analysis available for SARA. These are triggered through an Argo Workflow which can have a conditional flow based on the type of inspection.
anonymizer-->constant-level-oiler
\-->stid-uploader
Which analysis pipeline is run is chosen by the analysis mapping. A tag + an insepction descripts maps to an analysis type. To add a new analysis type, add a value to the AnalysisType enum. Then add which tag + inspection description should map to the new AnalysisType. This can be done through the AddOrCreateAnalysisMapping endpoint. Then include code in the MqttEventHandler to run the desiered pipeline for you AnalysisType. At the moment the supported analysis types are:
- Anonymizer
- ConstantLevelOiler
At the moment Anonymizer is configured to always run on IsarInspectionResultMessage
python mocks/argo_workflow_mock.py
See the /docs
folder for more documentation, for example