Here’s a little more info on what I have in mind:
I’m in the end of a PhD on UAV fault diagnosis and at some point I’d like to ask the community to voluntarily contribute logs for processing and analysis on common crash causes.
In support of this, I imagine a Python module for log management which one could import in order to pull in the log database functionality to your analysis front-end software.
To recap, what I think would be useful would be a (Python) library which would cover all of the features of the first post.
Possible applications would be:
Plain log storage: I have a lot of logs and I need to go search and review them, similar to Dronee and other log book apps.
Log analysis: More involved log examination algorithms, akin to Maverick and Log Analyzer.
One-off research: You put a bunch of logs in one place (regardless of where you found them) and write your tailor-made analysis on the issues you are interested in, such as my case. For example, inferences on mean flight time across UAV classes, which APM version had the most crashes or (in my case) generate diagnostic signals and test their accuracy on real logs.
I imagine this as a vault, where one would put in logs, along with a bit of information, and the module would parse for rudimentary information. In addition to that, it would provide a useful API.
So, in summarily, I imagine this API kind of like:
- Total number of logs
- Total flight time
- Number of different vehicles
Getters (for any individual log):
- Any quantity timeseries, properly timestamped
- Metadata, useful for filtering and cross-correlation, as said before (UAV ID, battery ID, pilot, date, etc). This information could be stored in a document-based DB, such as TinyDB.
- The whole log, for database migration but with some filters applied (possibly based on the aforementioned metadata, e.g. get me all the logs of this FW version).
I imagine specifying a directory under which you would create one folder for each log and one JSON file alongside it, containing the metadata.
Does all of this make sense?