bluerobotics / bluerobotics/BlueOS
core: backend: "Black Box" / Odometry for Vehicle hardware/software tracking
- Dominant language
- Vue
- Stars
- 453
- Forks
- 151
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 174
Description
### Current behaviour
Autopilot log files track how long a mission may be, but extracting this information is difficult and involves mission planner or custom code.
BlueOS system logs are very granular for overall services, but don't capture summary information, or much about hardware usage or age.
### Expected or desired behaviour
This issue proposes a new BlueOS core service, maybe named something like "BlackBox"?
This process would run in its own container, and log data (detailed below.) The log files it creates should be very small, and saved on a partition such that they can be extracted if the SD card from the vehicle Pi / computer is inserted into another computer (ideally without support for linux partition types.)
The flight recorder / black box / odometer logs should include:
1. Total time powered on, in minutes (this is a running total, like the odometer in your car. All times in minutes or even 10 minute resolution acceptable?)
2. Total time armed (ideally broken down per flight mode)
3. Total time at depth >1, >10>30>50>100m, with corresponding water temperature (for ROV vehicle type)
4. Total time at speed >0>0.5 >0.8 >1 >1.2 >1.5 m/s, with corresponding max/min voltage at each speed (for Boat vehicle type)
5.
6. Timestamped entries for events like CPU throttle /undervoltage - resolves #[2434](https://github.com/bluerobotics/BlueOS/issues/2434)
7. Most recent CPU load status (from htop or similar statistics - not a running log, just most recent values replaced to keep log small.)
8. Max / min voltage observed (just one value for each)
9. List of installed extensions
10. BlueOS version and time/date of update
11. "Hello world" first date/time service started
12. Any other information that could be useful!
This data could become a critical resource for both Blue Robotics and general hardware developers, as a much better idea of what the hardware has been through, how old it is, and the conditions it was used on are saved in a file that is still accessible, quickly and without technical expertise, if a vehicle floods or is otherwise damaged. A simple view only, vue based dashboard could summarize the current form of the log and allow it to be downloaded.
An additional benefit of this service would be date/ time management. Currently, the ROV syncs time if it has an internet connection - however, as units are typically powered up and used without internet, this means logs can have confusing dates and times, including logs from years before the unit was ever built / purchased!
If this service kept track of time it was on, it could potentially guess at the date, or at least not use a date that is before the last time sync!
### Prerequisites
- [X] I have checked to make sure that a similar request has not already been filed or fixed.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.