Project: Plotting of "signals" style data #9005
Labels
🪵 Log & send APIs
Affects the user-facing API for all languages
📈 plot
Plots, charts, graphs, timeseries, …
project
Tracking issues for so-called "Projects"
Summary description
Allow sending/logging of multi-dimensional data and plot them without additional data transformation by the user.
Background and problem
Many datasets use state vectors to capture robot state. For example lerobot uses a 7-dimensional vector of motor positions as their state.
Today, users have to break these up into separate columns/entities is somewhat awkward compared to just being able to log and plot using a ListArray (or more direct API) instead.
Grounding use-cases & evaluation
Outline & Vision
Previous proposals were focused around introducing new purpose-built archetypes, see #7278. A number of issues were identified with this line of thinking:
Taking a step back, our actual goal is for users to be able to supply arbitrary data and then (explicit via blueprint or by automated heuristic) set up a a visualizer for their data.
In accordance with the vision of a strong archetype-visualizer correlation (see #8368), we therefore should strive for a more flexible model where archetypes describes the visualization, but do not (overly) constrain how you present your data.
Concrete this means that both
SeriesLines
andSeriesPoints
visualizers should be able to deal with more arbitrary kinds of "scalars" - different dimensions & different types.They source the data from an appropriately tagged component
Note that we long planned to make component tags overwriteable in the viewer (see general tagged component issue #6889). Fully implemented this should allow us to...
Scalar
archetype but (!) still pick its contents up in aSeriesLines
visualizer by means of heuristically overwriting the tag such that the visualizer consumes the component arrayAreas & first steps
Thanks to now landed eager serialization, we can easily present the viewer with much more complex data than the API specification presents as "valid". This means in turn that we can make visualizers deal with data that is arbitrarily more complex and deal with API changes completely separately.
Therefore we can split this project into three mostly separate tracks:
TODO: many of these bullet points should be sub-issues
SeriesLine
/SeriesPoint
toSeriesLines
/SeriesPoints
Other open questions
* 💡 we could do descriptor overrides BEFORE introducing full tag awareness - if you're able to change the
ComponentName
from e.g.Translation3D
toScalar
(working title) you'd automatically get plots for your translationsNon-goals and won't do
SeriesLine
, we implicitly support several columns by creating an entity per columnMaybe out of scope:
Other notes
The text was updated successfully, but these errors were encountered: