This chapter will give you an understanding of how and where logs are generated at runtime, and what you can do with them. Data logging is a very important aspect of robotic system development, and Rock does have your back on the subject.
In particular, we will go through the following subjects:
- Log generation at runtime "where and what are the logs"
- Storing logs how you store and manage system logs
- Interactive log analysis using Jupyter how you can process logs using Ruby within a Jupyter notebook.
This last point is, in the end, the gateway for further processing in more common languages for data oriented tasks (e.g. Python, R, …). The basic tools presented in this last section make it easy to extract relevant data from the generated datasets and export it for further processing. Said processing can be automated (does not have to be part of a Jupyter notebook).
Within a Rock system based on Syskit, the log management functionality is implemented
syskit-log package. It is defined by the rock.core package set, but is not
included by default within the
To add it to your workspace, add
tools/syskit-log to your manifest, or in one of your
system's metapackages, e.g.
manifest: - ... - tools/syskit-log
Additionally, if you intend to use Jupyter for interactive log plotting and analysis,
rock.jupyter package set in your manifest, under the
This will configure the jupyter location and add
rock.jupyter.osdeps to your manifest:
package_sets: - ... - github: rock-core/rock.jupyter-package_set - ... manifest: - ... - tools/syskit-log - rock.jupyter.osdeps